import net.osdn.gokigen.pkremote.camera.CameraInterfaceProvider;
import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
+import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraConnection;
import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
import net.osdn.gokigen.pkremote.scene.CameraSceneUpdater;
}
/**
+ *
+ */
+ @Override
+ protected void onPause()
+ {
+ super.onPause();
+ try
+ {
+ ICameraConnection connection = interfaceProvider.getCameraConnection();
+ if (connection != null)
+ {
+ connection.stopWatchWifiStatus(this);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ /**
* クラスの初期化 (instantiate)
*/
private void initializeClass()
for (int fileIndex = 0; fileIndex < nofFiles; fileIndex++)
{
String fileName = filesArray.getString(fileIndex);
- Log.v(TAG, "FILE : " + fileName);
+ //Log.v(TAG, "FILE : " + fileName);
ICameraContent cameraContent = new CameraContentInfo(cameraId, "sd1", dirName, fileName, new Date());
cameraContent.setCapturedDate(getCameraContentDate(cameraContent));
fileList.add(cameraContent);
--- /dev/null
+package net.osdn.gokigen.pkremote.playback;
+
+import android.net.Uri;
+
+public interface IContentDownloadNotify
+{
+ void downloadedImage(String contentInfo, Uri content);
+}
import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
import net.osdn.gokigen.pkremote.playback.detail.CameraContentEx;
import net.osdn.gokigen.pkremote.playback.detail.ImagePagerViewFragment;
-import net.osdn.gokigen.pkremote.playback.detail.MyContentDownloader;
import net.osdn.gokigen.pkremote.playback.grid.ImageGridViewAdapter;
import java.util.ArrayList;
Activity activity = getActivity();
if (activity != null)
{
- this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl);
+ this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl, null);
}
else
{
// activityが取れない時には終わる。
return;
}
- this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl);
+ this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl, null);
}
Thread thread = new Thread(new Runnable()
{
-package net.osdn.gokigen.pkremote.playback.detail;
+package net.osdn.gokigen.pkremote.playback;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import java.util.Locale;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.preference.PreferenceManager;
/**
private final String TAG = toString();
private final Activity activity;
private final IPlaybackControl playbackControl;
+ private final IContentDownloadNotify receiver;
private static final String RAW_SUFFIX_1 = ".DNG";
private static final String RAW_SUFFIX_2 = ".ORF";
private static final String RAW_SUFFIX_3 = ".PEF";
* コンストラクタ
*
*/
- public MyContentDownloader(@NonNull Activity activity, @NonNull final IPlaybackControl playbackControl)
+ public MyContentDownloader(@NonNull Activity activity, @NonNull final IPlaybackControl playbackControl, @Nullable IContentDownloadNotify receiver)
{
this.activity = activity;
this.playbackControl = playbackControl;
+ this.receiver = receiver;
}
/**
final Uri content = resolver.insert(mediaValue, values);
try
{
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- if (preferences.getBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false))
- {
activity.runOnUiThread(new Runnable()
{
@Override
public void run()
{
- shareContent(content, mimeType);
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ if (preferences.getBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false))
+ {
+ shareContent(content, mimeType);
+ }
+ try
+ {
+ if (receiver != null)
+ {
+ receiver.downloadedImage(targetFileName, content);
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
}
});
- }
}
catch (Exception e)
{
import net.osdn.gokigen.pkremote.camera.interfaces.playback.IContentInfoCallback;
import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadThumbnailImageCallback;
import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
+import net.osdn.gokigen.pkremote.playback.MyContentDownloader;
import java.text.SimpleDateFormat;
import java.util.Date;
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
- MyContentDownloader contentDownloader = new MyContentDownloader(activity, playbackControl);
+ MyContentDownloader contentDownloader = new MyContentDownloader(activity, playbackControl, null);
CameraContentEx infoEx = contentList.get(contentIndex);
if (infoEx != null)
{
import android.content.Context;
import android.graphics.Bitmap;
+import android.net.Uri;
import android.os.Bundle;
import android.os.Vibrator;
import android.util.Log;
import net.osdn.gokigen.pkremote.R;
import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
+import net.osdn.gokigen.pkremote.playback.IContentDownloadNotify;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
* 自動転送クラス
*
*/
-public class AutoTransferFragment extends Fragment implements View.OnClickListener, ITransferMessage
+public class AutoTransferFragment extends Fragment implements View.OnClickListener, ITransferMessage, IContentDownloadNotify
{
private final String TAG = this.toString();
private FileAutoTransferMain transferMain = null;
private View myView = null;
private boolean transferThreadIsRunning = false;
+ private boolean startTransferReceived = false;
public static AutoTransferFragment newInstance(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider)
{
{
Log.v(TAG, "prepare()");
this.activity = activity;
- transferMain = new FileAutoTransferMain(activity, interfaceProvider, this);
+ transferMain = new FileAutoTransferMain(activity, interfaceProvider, this, this);
}
/**
}
try
{
+ // とにかく転送スレッドを止める指示を出す
+ transferThreadIsRunning = false;
+ while (startTransferReceived)
+ {
+ // すでにコマンドは発行状態...終わるまで待つ
+ Thread.sleep(SLEEP_MS);
+ }
+
// STARTボタンを無効化してぶるぶるする...
controlButton(false);
Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
{
vibrator.vibrate(50);
}
+ startTransferReceived = true;
+
+ // 画像を初期データにする
+ ImageView imageView = activity.findViewById(R.id.image_view_area);
+ imageView.setImageResource(R.drawable.ic_satellite_grey_24dp);
// 画面上にある自動転送の設定を取得
CheckBox raw = activity.findViewById(R.id.check_auto_download_raw);
{
if (transferMain != null)
{
- // 現在時刻を取得する
- long checkStartTime = System.currentTimeMillis();
+ //// 現在時刻を取得する
+ //long checkStartTime = System.currentTimeMillis();
// チェックして追加ファイルがあったらダウンロード
transferMain.checkFiles();
{
Thread.sleep(SLEEP_MS);
}
- long checkTime = Math.abs(System.currentTimeMillis() - checkStartTime);
- if (checkTime < SLEEP_WAIT_MS)
- {
- // 画像数確認の時間が規定時間よりも短い場合は、しばらく待つ
- Thread.sleep(SLEEP_WAIT_MS - checkTime);
- }
+ //long checkTime = Math.abs(System.currentTimeMillis() - checkStartTime);
+ //if (checkTime < SLEEP_WAIT_MS)
+ //{
+ // // 画像数確認の時間が規定時間よりも短い場合は、しばらく待つ
+ // Thread.sleep(SLEEP_WAIT_MS - checkTime);
+ //}
+
+ // 一定時間しばらく待つ (急ぎすぎると、GR2の電源が落ちる...
+ Thread.sleep(SLEEP_WAIT_MS);
}
//count++;
//Log.v(TAG, "TRANSFER LOOP : " + count);
// 後処理...
transferMain.finish();
}
+ startTransferReceived = false;
}
});
});
}
}
+
+ // IContentDownloadNotify
+ @Override
+ public void downloadedImage(final String contentInfo, final Uri content)
+ {
+ if (activity != null)
+ {
+ activity.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ ImageView imageView = activity.findViewById(R.id.image_view_area);
+ TextView textView = activity.findViewById(R.id.image_view_information);
+ try
+ {
+ if ((imageView != null)&&(content != null))
+ {
+ imageView.setImageURI(content);
+ }
+ if ((textView != null)&&(contentInfo != null))
+ {
+ textView.setText(contentInfo);
+ }
+ }
+ catch (Throwable t)
+ {
+ t.printStackTrace();
+ }
+ }
+ });
+ }
+ }
}
import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContent;
import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentListCallback;
-import net.osdn.gokigen.pkremote.playback.detail.MyContentDownloader;
+import net.osdn.gokigen.pkremote.playback.IContentDownloadNotify;
+import net.osdn.gokigen.pkremote.playback.MyContentDownloader;
import java.util.ArrayList;
import java.util.HashMap;
private boolean isChecking = false;
- FileAutoTransferMain(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider, @NonNull ITransferMessage messageInterface)
+ FileAutoTransferMain(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider, @NonNull ITransferMessage messageInterface, @NonNull IContentDownloadNotify receiver)
{
this.activity = context;
this.interfaceProvider = provider;
this.messageInterface = messageInterface;
- this.downloader = new MyContentDownloader(context, provider.getPlaybackControl());
+ this.downloader = new MyContentDownloader(context, provider.getPlaybackControl(), receiver);
this.contentHashMap = new HashMap<>();
}
try
{
Log.v(TAG, "CHECK FILE");
+ messageInterface.showInformation(activity.getString(R.string.get_image_list));
isChecking = true;
interfaceProvider.getPlaybackControl().getCameraContentList(this);
}
Log.v(TAG, "RECEIVE CONTENT LIST");
try
{
+ messageInterface.showInformation(activity.getString(R.string.get_image_list_done));
if (firstContent)
{
baseContentList = contentList;
e.printStackTrace();
}
isChecking = false;
+ Log.v(TAG, "CHECK FILE DONE.");
}
// ICameraContentListCallback
@Override
public void onErrorOccurred(Exception e)
{
- Log.v(TAG, "RECEIVE FAILURE...");
e.printStackTrace();
isChecking = false;
+ Log.v(TAG, "CHECK FILE DONE(WITH ERROR).");
}
}
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
-
- <ImageView
- android:id="@+id/image_view_area"
- android:layout_width="match_parent"
- android:layout_height="160dp"
- android:src="@null"
- android:scaleType="fitCenter"
- tools:ignore="ContentDescription" />
+ <View
+ android:layout_width="fill_parent"
+ android:layout_height="1dp"
+ android:background="@android:color/darker_gray"/>
<TextView
android:id="@+id/image_view_information"
android:focusable="true"
android:text="@string/blank"
android:textColor="@color/background_dark"
- android:textSize="9pt" />
+ android:textSize="8pt" />
+
+ <ImageView
+ android:id="@+id/image_view_area"
+ android:layout_width="match_parent"
+ android:layout_height="160dp"
+ android:layout_marginTop="2dp"
+ android:src="@null"
+ android:scaleType="fitCenter"
+ tools:ignore="ContentDescription" />
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
+ android:layout_marginTop="2dp"
android:background="@android:color/darker_gray"/>
<LinearLayout
<string name="image_checking">撮影画像確認中…</string>
<string name="add_image_pics">追加画像 : </string>
<string name="image_download_done">転送終了</string>
+ <string name="get_image_list">画像一覧取得中…</string>
+ <string name="get_image_list_done">画像一覧取得中…完了</string>
</resources>
<string name="image_checking">Image checking…</string>
<string name="add_image_pics">Detect Image : </string>
<string name="image_download_done">Transfer Finished.</string>
-
+ <string name="get_image_list">Get Image List…</string>
+ <string name="get_image_list_done">Get Image List…DONE.</string>
</resources>