• R/O
  • HTTP
  • SSH
  • HTTPS

PKRemote: Commit

Pentax DSLR Remote Control app.


Commit MetaInfo

Revision604d58d5cf166e7ac418cdaa82c13ca59f537901 (tree)
Zeit2019-09-22 14:57:39
AutorMRSa <mrsa@myad...>
CommiterMRSa

Log Message

データ読み込み詰まりを抑止したつもり。

Ändern Zusammenfassung

Diff

--- a/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/command/PtpIpCommandPublisher.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/command/PtpIpCommandPublisher.java
@@ -316,6 +316,13 @@ public class PtpIpCommandPublisher implements IPtpIpCommandPublisher, IPtpIpComm
316316 Log.v(TAG, "--- RECEIVE AGAIN --- [" + length + "(" + read_bytes + ") " + byte_array[4]+ "] ");
317317 }
318318 sleep(delayMs);
319+ int availableReadBytes = is.available();
320+ if (availableReadBytes <= 0)
321+ {
322+ // 読めるデータ数がない...よみだし終了にする。
323+ Log.v(TAG, " is.availableReadBytes() : " + availableReadBytes);
324+ break;
325+ }
319326 int read_bytes2 = is.read(byte_array, read_bytes, receive_message_buffer_size - read_bytes);
320327 if (read_bytes2 > 0)
321328 {
@@ -362,7 +369,7 @@ public class PtpIpCommandPublisher implements IPtpIpCommandPublisher, IPtpIpComm
362369 Log.v(TAG, "receive_from_camera() : " + read_bytes + " bytes.");
363370 dump_bytes("RECV[" + receive_body.length + "] ", receive_body);
364371 }
365- if (callback != null)
372+ if (callback != null)
366373 {
367374 if (callback.isReceiveMulti())
368375 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/playback/PtpIpPlaybackControl.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/playback/PtpIpPlaybackControl.java
@@ -1,10 +1,10 @@
11 package net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.playback;
22
33 import android.app.Activity;
4-import android.graphics.BitmapFactory;
5-import android.util.Log;
4+import android.content.SharedPreferences;
5+
6+import androidx.preference.PreferenceManager;
67
7-import net.osdn.gokigen.pkremote.R;
88 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraContentListCallback;
99 import net.osdn.gokigen.pkremote.camera.interfaces.playback.ICameraFileInfo;
1010 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IContentInfoCallback;
@@ -13,9 +13,9 @@ import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadContentList
1313 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadThumbnailImageCallback;
1414 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IPlaybackControl;
1515 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.PtpIpInterfaceProvider;
16-import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandCallback;
1716 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandPublisher;
1817 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.messages.PtpIpCommandGeneric;
18+import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
1919
2020 /**
2121 *
@@ -26,10 +26,7 @@ public class PtpIpPlaybackControl implements IPlaybackControl
2626 private final String TAG = toString();
2727 private final Activity activity;
2828 private final PtpIpInterfaceProvider provider;
29- //private List<ICameraContent> imageInfo;
30- //private SparseArray<PtpIpImageContentInfo> imageContentInfo;
31- //private int indexNumber = 0;
32- //private ICameraContentListCallback finishedCallback = null;
29+ private String raw_suffix = "CR2";
3330 private CanonImageObjectReceiver canonImageObjectReceiver;
3431
3532 public PtpIpPlaybackControl(Activity activity, PtpIpInterfaceProvider provider)
@@ -37,13 +34,22 @@ public class PtpIpPlaybackControl implements IPlaybackControl
3734 this.activity = activity;
3835 this.provider = provider;
3936 canonImageObjectReceiver = new CanonImageObjectReceiver(provider);
40- //this.imageContentInfo = new SparseArray<>();
37+
38+ try
39+ {
40+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
41+ raw_suffix = preferences.getString(IPreferencePropertyAccessor.CANON_RAW_SUFFIX, IPreferencePropertyAccessor.CANON_RAW_SUFFIX_DEFAULT_VALUE);
42+ }
43+ catch (Exception e)
44+ {
45+ e.printStackTrace();
46+ }
4147 }
4248
4349 @Override
4450 public String getRawFileSuffix()
4551 {
46- return (null);
52+ return (raw_suffix);
4753 }
4854
4955 @Override
@@ -95,19 +101,6 @@ public class PtpIpPlaybackControl implements IPlaybackControl
95101 // Log.v(TAG, "downloadContentThumbnail() " + indexStr + " [" + objectId + "] (" + storageId + ")");
96102 publisher.enqueueCommand(new PtpIpCommandGeneric(new PtpIpThumbnailImageReceiver(activity, callback), false, objectId, 0x910a, 8, objectId, 0x00032000));
97103 }
98-/*
99- int index = Integer.parseInt(indexStr);
100- if ((index > 0)&&(index <= imageContentInfo.size()))
101- {
102- IPtpIpCommandPublisher publisher = provider.getCommandPublisher();
103- PtpIpImageContentInfo contentInfo = imageContentInfo.get(index);
104- if (!contentInfo.isReceived())
105- {
106- publisher.enqueueCommand(new GetImageInfo(index, index, contentInfo));
107- }
108- publisher.enqueueCommand(new GetThumbNail(index, new PtpIpThumbnailImageReceiver(activity, callback)));
109- }
110- */
111104 }
112105 catch (Exception e)
113106 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/playback/PtpIpThumbnailImageReceiver.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/camera/vendor/ptpip/wrapper/playback/PtpIpThumbnailImageReceiver.java
@@ -6,12 +6,9 @@ import android.util.Log;
66
77 import androidx.annotation.NonNull;
88
9-import net.osdn.gokigen.pkremote.R;
109 import net.osdn.gokigen.pkremote.camera.interfaces.playback.IDownloadThumbnailImageCallback;
11-import net.osdn.gokigen.pkremote.camera.utils.SimpleLogDumper;
1210 import net.osdn.gokigen.pkremote.camera.vendor.ptpip.wrapper.command.IPtpIpCommandCallback;
1311
14-import java.io.ByteArrayInputStream;
1512 import java.util.Arrays;
1613
1714 public class PtpIpThumbnailImageReceiver implements IPtpIpCommandCallback
@@ -31,11 +28,11 @@ public class PtpIpThumbnailImageReceiver implements IPtpIpCommandCallback
3128 {
3229 try
3330 {
34- /////// 受信データから、先頭(0xff 0xd8)を検索 /////
3531 //Log.v(TAG, " RECV THUMBNAIL START : " + id + " [" + rx_body.length + "] ");
3632 //SimpleLogDumper.dump_bytes("[THUMB]", rx_body);
3733 //Log.v(TAG, " RECV THUMBNAIL END : " + id + " [" + rx_body.length + "] ");
3834
35+ /////// 受信データから、サムネイルの先頭(0xff 0xd8)を検索する /////
3936 int offset = rx_body.length - 22;
4037 //byte[] thumbnail0 = Arrays.copyOfRange(rx_body, 0, rx_body.length);
4138 while (offset > 32)
@@ -46,21 +43,8 @@ public class PtpIpThumbnailImageReceiver implements IPtpIpCommandCallback
4643 }
4744 offset--;
4845 }
49- if (rx_body.length > offset)
50- {
51- byte[] thumbnail = Arrays.copyOfRange(rx_body, offset, rx_body.length - 22);
52- callback.onCompleted(BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length), null);
53-
54- //callback.onCompleted(BitmapFactory.decodeByteArray(rx_body, 0, rx_body.length), null);
55- //callback.onCompleted(BitmapFactory.decodeByteArray(rx_body, offset, rx_body.length - offset - 22), null);
56- //callback.onCompleted(BitmapFactory.decodeStream(new ByteArrayInputStream(rx_body, offset, rx_body.length)), null);
57- //callback.onCompleted(BitmapFactory.decodeStream(new ByteArrayInputStream(rx_body, 0, rx_body.length)), null);
58- }
59- else
60- {
61- Log.v(TAG, "BITMAP IS NONE... : " + rx_body.length);
62- callback.onCompleted(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_broken_image_black_24dp), null);
63- }
46+ byte[] thumbnail = Arrays.copyOfRange(rx_body, offset, rx_body.length - 22);
47+ callback.onCompleted(BitmapFactory.decodeByteArray(thumbnail, 0, thumbnail.length), null);
6448 }
6549 catch (Exception e)
6650 {
--- a/app/src/main/java/net/osdn/gokigen/pkremote/preference/IPreferencePropertyAccessor.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/preference/IPreferencePropertyAccessor.java
@@ -87,6 +87,9 @@ public interface IPreferencePropertyAccessor
8787
8888 String USE_SMARTPHONE_TRANSFER_MODE = "use_smartphone_transfer_mode";
8989
90+ String CANON_RAW_SUFFIX = "canon_raw_suffix";
91+ String CANON_RAW_SUFFIX_DEFAULT_VALUE = "CR2";
92+
9093 /*
9194 //String GR2_DISPLAY_MODE = "gr2_display_mode";
9295 //String GR2_DISPLAY_MODE_DEFAULT_VALUE = "0";
--- a/app/src/main/java/net/osdn/gokigen/pkremote/preference/canon/CanonPreferenceFragment.java
+++ b/app/src/main/java/net/osdn/gokigen/pkremote/preference/canon/CanonPreferenceFragment.java
@@ -1,26 +1,26 @@
11 package net.osdn.gokigen.pkremote.preference.canon;
22
3-import android.content.Context;
4-import android.content.SharedPreferences;
5-import android.os.Bundle;
6-import android.util.Log;
7-
8-import java.util.Map;
9-
10-import androidx.annotation.NonNull;
11-import androidx.appcompat.app.AppCompatActivity;
12-import androidx.fragment.app.FragmentActivity;
13-import androidx.preference.CheckBoxPreference;
14-import androidx.preference.ListPreference;
15-import androidx.preference.Preference;
16-import androidx.preference.PreferenceFragmentCompat;
17-import androidx.preference.PreferenceManager;
18-
19-import net.osdn.gokigen.pkremote.R;
20-import net.osdn.gokigen.pkremote.camera.vendor.ptpip.operation.PtpIpCameraPowerOff;
21-import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
22-import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
23-import net.osdn.gokigen.pkremote.scene.IChangeScene;
3+ import android.content.Context;
4+ import android.content.SharedPreferences;
5+ import android.os.Bundle;
6+ import android.util.Log;
7+
8+ import java.util.Map;
9+
10+ import androidx.annotation.NonNull;
11+ import androidx.appcompat.app.AppCompatActivity;
12+ import androidx.fragment.app.FragmentActivity;
13+ import androidx.preference.CheckBoxPreference;
14+ import androidx.preference.ListPreference;
15+ import androidx.preference.Preference;
16+ import androidx.preference.PreferenceFragmentCompat;
17+ import androidx.preference.PreferenceManager;
18+
19+ import net.osdn.gokigen.pkremote.R;
20+ import net.osdn.gokigen.pkremote.camera.vendor.ptpip.operation.PtpIpCameraPowerOff;
21+ import net.osdn.gokigen.pkremote.logcat.LogCatViewer;
22+ import net.osdn.gokigen.pkremote.preference.IPreferencePropertyAccessor;
23+ import net.osdn.gokigen.pkremote.scene.IChangeScene;
2424
2525 /**
2626 *
@@ -117,6 +117,9 @@ public class CanonPreferenceFragment extends PreferenceFragmentCompat implement
117117 if (!items.containsKey(IPreferencePropertyAccessor.CONNECTION_METHOD)) {
118118 editor.putString(IPreferencePropertyAccessor.CONNECTION_METHOD, IPreferencePropertyAccessor.CONNECTION_METHOD_DEFAULT_VALUE);
119119 }
120+ if (!items.containsKey(IPreferencePropertyAccessor.CANON_RAW_SUFFIX)) {
121+ editor.putString(IPreferencePropertyAccessor.CANON_RAW_SUFFIX, IPreferencePropertyAccessor.CANON_RAW_SUFFIX_DEFAULT_VALUE);
122+ }
120123 editor.apply();
121124 }
122125 catch (Exception e)
@@ -167,7 +170,7 @@ public class CanonPreferenceFragment extends PreferenceFragmentCompat implement
167170 try
168171 {
169172 //super.onCreate(savedInstanceState);
170- addPreferencesFromResource(R.xml.preferences_fuji_x);
173+ addPreferencesFromResource(R.xml.preferences_canon);
171174
172175 ListPreference connectionMethod = (ListPreference) findPreference(IPreferencePropertyAccessor.CONNECTION_METHOD);
173176 connectionMethod.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@@ -181,7 +184,7 @@ public class CanonPreferenceFragment extends PreferenceFragmentCompat implement
181184
182185 findPreference("exit_application").setOnPreferenceClickListener(powerOffController);
183186 findPreference("debug_info").setOnPreferenceClickListener(logCatViewer);
184- }
187+ }
185188 catch (Exception e)
186189 {
187190 e.printStackTrace();
--- a/app/src/main/res/values-ja/strings.xml
+++ b/app/src/main/res/values-ja/strings.xml
@@ -293,6 +293,9 @@
293293 <string name="pref_sony_use_smartphone_transfer">スマートフォン転送モードを使う</string>
294294 <string name="pref_summary_sony_use_smartphone_transfer">うまく通信できない場合にチェックを入れてください。</string>
295295
296+ <string name="pref_canon_raw_suffix">RAW拡張子</string>
297+ <string name="pref_summary_canon_raw_suffix">カメラのRAW拡張子を設定してください。</string>
298+
296299 <string name="connect_start_2">準備中&#8230;</string>
297300 <string name="canon_connect_connecting1">接続中&#8230;(1/5)</string>
298301 <string name="canon_connect_connecting2">接続中&#8230;(2/5)</string>
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -295,6 +295,9 @@
295295 <string name="pref_sony_use_smartphone_transfer">Do use SmartPhone transfer mode.</string>
296296 <string name="pref_summary_sony_use_smartphone_transfer">If you cannot communicate, please check this.</string>
297297
298+ <string name="pref_canon_raw_suffix">RAW Suffix</string>
299+ <string name="pref_summary_canon_raw_suffix">Please set your camera RAW suffix.</string>
300+
298301 <string name="connect_start_2">Preparing&#8230;</string>
299302 <string name="canon_connect_connecting1">Connecting&#8230;(1/5)</string>
300303 <string name="canon_connect_connecting2">Connecting&#8230;(2/5)</string>
--- a/app/src/main/res/xml/preferences_canon.xml
+++ b/app/src/main/res/xml/preferences_canon.xml
@@ -20,6 +20,14 @@
2020 <PreferenceCategory
2121 android:title="@string/pref_cat_camera">
2222
23+
24+ <EditTextPreference
25+ android:key="canon_raw_suffix"
26+ android:title="@string/pref_canon_raw_suffix"
27+ android:defaultValue="CR2"
28+ android:inputType="number"
29+ android:summary="@string/pref_summary_canon_raw_suffix" />
30+
2331 <!--
2432
2533 <PreferenceScreen
Show on old repository browser