• R/O
  • HTTP
  • SSH
  • HTTPS

PKRemote: Commit

Pentax DSLR Remote Control app.


Commit MetaInfo

Révision50220ef100ebfe37a572ed14daf2683eb9e61ac3 (tree)
l'heure2019-03-31 18:47:37
AuteurMRSa <mrsa@myad...>
CommiterMRSa

Message de Log

自動転送時、受信した画像とそのファイル名を表示するようにした。GR2で停止する問題への対策(検討...)

Change Summary

Modification

--- a/app/src/main/java/net/osdn/gokigen/pkremote/MainActivity.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/MainActivity.java
@@ -27,6 +27,7 @@ import android.widget.TextView;
2727
2828 import net.osdn.gokigen.pkremote.camera.CameraInterfaceProvider;
2929 import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
30+import net.osdn.gokigen.pkremote.camera.interfaces.control.ICameraConnection;
3031 import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
3132 import net.osdn.gokigen.pkremote.scene.CameraSceneUpdater;
3233
@@ -153,6 +154,27 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
153154 }
154155
155156 /**
157+ *
158+ */
159+ @Override
160+ protected void onPause()
161+ {
162+ super.onPause();
163+ try
164+ {
165+ ICameraConnection connection = interfaceProvider.getCameraConnection();
166+ if (connection != null)
167+ {
168+ connection.stopWatchWifiStatus(this);
169+ }
170+ }
171+ catch (Exception e)
172+ {
173+ e.printStackTrace();
174+ }
175+ }
176+
177+ /**
156178 * クラスの初期化 (instantiate)
157179 */
158180 private void initializeClass()
--- a/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ricoh/wrapper/RicohGr2PlaybackControl.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ricoh/wrapper/RicohGr2PlaybackControl.java
@@ -433,7 +433,7 @@ public class RicohGr2PlaybackControl implements IPlaybackControl
433433 for (int fileIndex = 0; fileIndex < nofFiles; fileIndex++)
434434 {
435435 String fileName = filesArray.getString(fileIndex);
436- Log.v(TAG, "FILE : " + fileName);
436+ //Log.v(TAG, "FILE : " + fileName);
437437 ICameraContent cameraContent = new CameraContentInfo(cameraId, "sd1", dirName, fileName, new Date());
438438 cameraContent.setCapturedDate(getCameraContentDate(cameraContent));
439439 fileList.add(cameraContent);
--- /dev/null
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/playback/IContentDownloadNotify.java
@@ -0,0 +1,8 @@
1+package net.osdn.gokigen.pkremote.playback;
2+
3+import android.net.Uri;
4+
5+public interface IContentDownloadNotify
6+{
7+ void downloadedImage(String contentInfo, Uri content);
8+}
--- a/app/src/main/java/net/osdn/gokigen/pkremote/playback/ImageGridViewFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/playback/ImageGridViewFragment.java
@@ -29,7 +29,6 @@ import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentsRecog
2929 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
3030 import net.osdn.gokigen.pkremote.playback.detail.CameraContentEx;
3131 import net.osdn.gokigen.pkremote.playback.detail.ImagePagerViewFragment;
32-import net.osdn.gokigen.pkremote.playback.detail.MyContentDownloader;
3332 import net.osdn.gokigen.pkremote.playback.grid.ImageGridViewAdapter;
3433
3534 import java.util.ArrayList;
@@ -92,7 +91,7 @@ public class ImageGridViewFragment extends Fragment implements AdapterView.OnIte
9291 Activity activity = getActivity();
9392 if (activity != null)
9493 {
95- this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl);
94+ this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl, null);
9695 }
9796 else
9897 {
@@ -541,7 +540,7 @@ public class ImageGridViewFragment extends Fragment implements AdapterView.OnIte
541540 // activityが取れない時には終わる。
542541 return;
543542 }
544- this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl);
543+ this.contentDownloader = new MyContentDownloader(getActivity(), playbackControl, null);
545544 }
546545 Thread thread = new Thread(new Runnable()
547546 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/playback/detail/MyContentDownloader.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/playback/MyContentDownloader.java
@@ -1,4 +1,4 @@
1-package net.osdn.gokigen.pkremote.playback.detail;
1+package net.osdn.gokigen.pkremote.playback;
22 import android.app.Activity;
33 import android.app.AlertDialog;
44 import android.app.ProgressDialog;
@@ -28,6 +28,7 @@ import java.util.Calendar;
2828 import java.util.Locale;
2929
3030 import androidx.annotation.NonNull;
31+import androidx.annotation.Nullable;
3132 import androidx.preference.PreferenceManager;
3233
3334 /**
@@ -39,6 +40,7 @@ public class MyContentDownloader implements IDownloadContentCallback
3940 private final String TAG = toString();
4041 private final Activity activity;
4142 private final IPlaybackControl playbackControl;
43+ private final IContentDownloadNotify receiver;
4244 private static final String RAW_SUFFIX_1 = ".DNG";
4345 private static final String RAW_SUFFIX_2 = ".ORF";
4446 private static final String RAW_SUFFIX_3 = ".PEF";
@@ -55,10 +57,11 @@ public class MyContentDownloader implements IDownloadContentCallback
5557 * コンストラクタ
5658 *
5759 */
58- public MyContentDownloader(@NonNull Activity activity, @NonNull final IPlaybackControl playbackControl)
60+ public MyContentDownloader(@NonNull Activity activity, @NonNull final IPlaybackControl playbackControl, @Nullable IContentDownloadNotify receiver)
5961 {
6062 this.activity = activity;
6163 this.playbackControl = playbackControl;
64+ this.receiver = receiver;
6265 }
6366
6467 /**
@@ -234,18 +237,29 @@ public class MyContentDownloader implements IDownloadContentCallback
234237 final Uri content = resolver.insert(mediaValue, values);
235238 try
236239 {
237- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
238- if (preferences.getBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false))
239- {
240240 activity.runOnUiThread(new Runnable()
241241 {
242242 @Override
243243 public void run()
244244 {
245- shareContent(content, mimeType);
245+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
246+ if (preferences.getBoolean(IPreferencePropertyAccessor.SHARE_AFTER_SAVE, false))
247+ {
248+ shareContent(content, mimeType);
249+ }
250+ try
251+ {
252+ if (receiver != null)
253+ {
254+ receiver.downloadedImage(targetFileName, content);
255+ }
256+ }
257+ catch (Exception e)
258+ {
259+ e.printStackTrace();
260+ }
246261 }
247262 });
248- }
249263 }
250264 catch (Exception e)
251265 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/playback/detail/ImagePagerViewFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/playback/detail/ImagePagerViewFragment.java
@@ -20,6 +20,7 @@ import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraFileInfo;
2020 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IContentInfoCallback;
2121 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadThumbnailImageCallback;
2222 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
23+import net.osdn.gokigen.pkremote.playback.MyContentDownloader;
2324
2425 import java.text.SimpleDateFormat;
2526 import java.util.Date;
@@ -516,7 +517,7 @@ public class ImagePagerViewFragment extends Fragment
516517 Thread thread = new Thread(new Runnable() {
517518 @Override
518519 public void run() {
519- MyContentDownloader contentDownloader = new MyContentDownloader(activity, playbackControl);
520+ MyContentDownloader contentDownloader = new MyContentDownloader(activity, playbackControl, null);
520521 CameraContentEx infoEx = contentList.get(contentIndex);
521522 if (infoEx != null)
522523 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/transfer/AutoTransferFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/transfer/AutoTransferFragment.java
@@ -2,6 +2,7 @@ package net.osdn.gokigen.pkremote.transfer;
22
33 import android.content.Context;
44 import android.graphics.Bitmap;
5+import android.net.Uri;
56 import android.os.Bundle;
67 import android.os.Vibrator;
78 import android.util.Log;
@@ -17,6 +18,7 @@ import android.widget.TextView;
1718
1819 import net.osdn.gokigen.pkremote.R;
1920 import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
21+import net.osdn.gokigen.pkremote.playback.IContentDownloadNotify;
2022
2123 import androidx.annotation.NonNull;
2224 import androidx.appcompat.app.AppCompatActivity;
@@ -28,7 +30,7 @@ import static android.content.Context.VIBRATOR_SERVICE;
2830 * 自動転送クラス
2931 *
3032 */
31-public class AutoTransferFragment extends Fragment implements View.OnClickListener, ITransferMessage
33+public class AutoTransferFragment extends Fragment implements View.OnClickListener, ITransferMessage, IContentDownloadNotify
3234 {
3335 private final String TAG = this.toString();
3436
@@ -39,6 +41,7 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
3941 private FileAutoTransferMain transferMain = null;
4042 private View myView = null;
4143 private boolean transferThreadIsRunning = false;
44+ private boolean startTransferReceived = false;
4245
4346 public static AutoTransferFragment newInstance(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider)
4447 {
@@ -61,7 +64,7 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
6164 {
6265 Log.v(TAG, "prepare()");
6366 this.activity = activity;
64- transferMain = new FileAutoTransferMain(activity, interfaceProvider, this);
67+ transferMain = new FileAutoTransferMain(activity, interfaceProvider, this, this);
6568 }
6669
6770 /**
@@ -169,6 +172,14 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
169172 }
170173 try
171174 {
175+ // とにかく転送スレッドを止める指示を出す
176+ transferThreadIsRunning = false;
177+ while (startTransferReceived)
178+ {
179+ // すでにコマンドは発行状態...終わるまで待つ
180+ Thread.sleep(SLEEP_MS);
181+ }
182+
172183 // STARTボタンを無効化してぶるぶるする...
173184 controlButton(false);
174185 Vibrator vibrator = (activity != null) ? (Vibrator) activity.getSystemService(VIBRATOR_SERVICE) : null;
@@ -176,6 +187,11 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
176187 {
177188 vibrator.vibrate(50);
178189 }
190+ startTransferReceived = true;
191+
192+ // 画像を初期データにする
193+ ImageView imageView = activity.findViewById(R.id.image_view_area);
194+ imageView.setImageResource(R.drawable.ic_satellite_grey_24dp);
179195
180196 // 画面上にある自動転送の設定を取得
181197 CheckBox raw = activity.findViewById(R.id.check_auto_download_raw);
@@ -200,8 +216,8 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
200216 {
201217 if (transferMain != null)
202218 {
203- // 現在時刻を取得する
204- long checkStartTime = System.currentTimeMillis();
219+ //// 現在時刻を取得する
220+ //long checkStartTime = System.currentTimeMillis();
205221
206222 // チェックして追加ファイルがあったらダウンロード
207223 transferMain.checkFiles();
@@ -211,12 +227,15 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
211227 {
212228 Thread.sleep(SLEEP_MS);
213229 }
214- long checkTime = Math.abs(System.currentTimeMillis() - checkStartTime);
215- if (checkTime < SLEEP_WAIT_MS)
216- {
217- // 画像数確認の時間が規定時間よりも短い場合は、しばらく待つ
218- Thread.sleep(SLEEP_WAIT_MS - checkTime);
219- }
230+ //long checkTime = Math.abs(System.currentTimeMillis() - checkStartTime);
231+ //if (checkTime < SLEEP_WAIT_MS)
232+ //{
233+ // // 画像数確認の時間が規定時間よりも短い場合は、しばらく待つ
234+ // Thread.sleep(SLEEP_WAIT_MS - checkTime);
235+ //}
236+
237+ // 一定時間しばらく待つ (急ぎすぎると、GR2の電源が落ちる...
238+ Thread.sleep(SLEEP_WAIT_MS);
220239 }
221240 //count++;
222241 //Log.v(TAG, "TRANSFER LOOP : " + count);
@@ -231,6 +250,7 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
231250 // 後処理...
232251 transferMain.finish();
233252 }
253+ startTransferReceived = false;
234254 }
235255 });
236256
@@ -430,4 +450,35 @@ public class AutoTransferFragment extends Fragment implements View.OnClickListen
430450 });
431451 }
432452 }
453+
454+ // IContentDownloadNotify
455+ @Override
456+ public void downloadedImage(final String contentInfo, final Uri content)
457+ {
458+ if (activity != null)
459+ {
460+ activity.runOnUiThread(new Runnable() {
461+ @Override
462+ public void run() {
463+ ImageView imageView = activity.findViewById(R.id.image_view_area);
464+ TextView textView = activity.findViewById(R.id.image_view_information);
465+ try
466+ {
467+ if ((imageView != null)&&(content != null))
468+ {
469+ imageView.setImageURI(content);
470+ }
471+ if ((textView != null)&&(contentInfo != null))
472+ {
473+ textView.setText(contentInfo);
474+ }
475+ }
476+ catch (Throwable t)
477+ {
478+ t.printStackTrace();
479+ }
480+ }
481+ });
482+ }
483+ }
433484 }
--- a/app/src/main/java/net/osdn/gokigen/pkremote/transfer/FileAutoTransferMain.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/transfer/FileAutoTransferMain.java
@@ -6,7 +6,8 @@ import net.osdn.gokigen.pkremote.R;
66 import net.osdn.gokigen.pkremote.camera.interfaces.IInterfaceProvider;
77 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContent;
88 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentListCallback;
9-import net.osdn.gokigen.pkremote.playback.detail.MyContentDownloader;
9+import net.osdn.gokigen.pkremote.playback.IContentDownloadNotify;
10+import net.osdn.gokigen.pkremote.playback.MyContentDownloader;
1011
1112 import java.util.ArrayList;
1213 import java.util.HashMap;
@@ -36,12 +37,12 @@ class FileAutoTransferMain implements ICameraContentListCallback
3637 private boolean isChecking = false;
3738
3839
39- FileAutoTransferMain(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider, @NonNull ITransferMessage messageInterface)
40+ FileAutoTransferMain(@NonNull AppCompatActivity context, @NonNull IInterfaceProvider provider, @NonNull ITransferMessage messageInterface, @NonNull IContentDownloadNotify receiver)
4041 {
4142 this.activity = context;
4243 this.interfaceProvider = provider;
4344 this.messageInterface = messageInterface;
44- this.downloader = new MyContentDownloader(context, provider.getPlaybackControl());
45+ this.downloader = new MyContentDownloader(context, provider.getPlaybackControl(), receiver);
4546 this.contentHashMap = new HashMap<>();
4647 }
4748
@@ -92,6 +93,7 @@ class FileAutoTransferMain implements ICameraContentListCallback
9293 try
9394 {
9495 Log.v(TAG, "CHECK FILE");
96+ messageInterface.showInformation(activity.getString(R.string.get_image_list));
9597 isChecking = true;
9698 interfaceProvider.getPlaybackControl().getCameraContentList(this);
9799 }
@@ -206,6 +208,7 @@ class FileAutoTransferMain implements ICameraContentListCallback
206208 Log.v(TAG, "RECEIVE CONTENT LIST");
207209 try
208210 {
211+ messageInterface.showInformation(activity.getString(R.string.get_image_list_done));
209212 if (firstContent)
210213 {
211214 baseContentList = contentList;
@@ -259,14 +262,15 @@ class FileAutoTransferMain implements ICameraContentListCallback
259262 e.printStackTrace();
260263 }
261264 isChecking = false;
265+ Log.v(TAG, "CHECK FILE DONE.");
262266 }
263267
264268 // ICameraContentListCallback
265269 @Override
266270 public void onErrorOccurred(Exception e)
267271 {
268- Log.v(TAG, "RECEIVE FAILURE...");
269272 e.printStackTrace();
270273 isChecking = false;
274+ Log.v(TAG, "CHECK FILE DONE(WITH ERROR).");
271275 }
272276 }
--- a/app/src/main/res/layout/fragment_auto_transfer.xml
+++ b/app/src/main/res/layout/fragment_auto_transfer.xml
@@ -12,14 +12,10 @@
1212 android:layout_width="match_parent"
1313 android:layout_height="wrap_content"
1414 android:orientation="vertical">
15-
16- <ImageView
17- android:id="@+id/image_view_area"
18- android:layout_width="match_parent"
19- android:layout_height="160dp"
20- android:src="@null"
21- android:scaleType="fitCenter"
22- tools:ignore="ContentDescription" />
15+ <View
16+ android:layout_width="fill_parent"
17+ android:layout_height="1dp"
18+ android:background="@android:color/darker_gray"/>
2319
2420 <TextView
2521 android:id="@+id/image_view_information"
@@ -31,11 +27,21 @@
3127 android:focusable="true"
3228 android:text="@string/blank"
3329 android:textColor="@color/background_dark"
34- android:textSize="9pt" />
30+ android:textSize="8pt" />
31+
32+ <ImageView
33+ android:id="@+id/image_view_area"
34+ android:layout_width="match_parent"
35+ android:layout_height="160dp"
36+ android:layout_marginTop="2dp"
37+ android:src="@null"
38+ android:scaleType="fitCenter"
39+ tools:ignore="ContentDescription" />
3540
3641 <View
3742 android:layout_width="fill_parent"
3843 android:layout_height="1dp"
44+ android:layout_marginTop="2dp"
3945 android:background="@android:color/darker_gray"/>
4046
4147 <LinearLayout
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -184,5 +184,7 @@
184184 <string name="image_checking">撮影画像確認中&#8230;</string>
185185 <string name="add_image_pics">追加画像 : </string>
186186 <string name="image_download_done">転送終了</string>
187+ <string name="get_image_list">画像一覧取得中&#8230;</string>
188+ <string name="get_image_list_done">画像一覧取得中&#8230;完了</string>
187189
188190 </resources>
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -184,5 +184,6 @@
184184 <string name="image_checking">Image checking&#8230;</string>
185185 <string name="add_image_pics">Detect Image : </string>
186186 <string name="image_download_done">Transfer Finished.</string>
187-
187+ <string name="get_image_list">Get Image List&#8230;</string>
188+ <string name="get_image_list_done">Get Image List&#8230;DONE.</string>
188189 </resources>
Afficher sur ancien navigateur de dépôt.