From 002aafb7b90d5bc3b2e79b2684524cbf64e9b132 Mon Sep 17 00:00:00 2001 From: MRSa Date: Sat, 8 Aug 2020 23:35:20 +0900 Subject: [PATCH] =?utf8?q?WPZ2=E3=81=A8=E3=81=AE=E3=82=B3=E3=83=9E?= =?utf8?q?=E3=83=B3=E3=83=89=E9=80=9A=E4=BF=A1=E3=81=AE=E5=9B=9E=E7=B7=9A?= =?utf8?q?=E3=81=8C=E5=88=87=E3=82=8C=E3=81=9F=E5=A0=B4=E5=90=88=E3=81=AB?= =?utf8?q?=E3=83=80=E3=82=A4=E3=82=A2=E3=83=AD=E3=82=B0=E3=82=92=E5=87=BA?= =?utf8?q?=E3=81=97=E3=80=81=E5=86=8D=E8=A9=A6=E8=A1=8C=EF=BC=88=E5=86=8D?= =?utf8?q?=E6=8E=A5=E7=B6=9A=EF=BC=89=E3=81=97=E3=81=A6=E5=BE=A9=E6=97=A7?= =?utf8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB=E3=81=99?= =?utf8?q?=E3=82=8B=E3=80=82=E3=81=BE=E3=81=9F=E3=80=81=E3=83=AA=E3=83=AA?= =?utf8?q?=E3=83=BC=E3=82=B9=E3=81=AB=E5=90=91=E3=81=91=E3=81=A6=E9=80=9A?= =?utf8?q?=E4=BF=A1=E3=81=AE=E3=83=AD=E3=82=B0=E3=81=B8=E3=81=AE=E3=83=80?= =?utf8?q?=E3=83=B3=E3=83=97=E9=87=8F=E3=82=92=E6=B8=9B=E3=82=89=E3=81=99?= =?utf8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../a01d/camera/kodak/IKodakInterfaceProvider.java | 2 ++ .../kodak/wrapper/KodakInterfaceProvider.java | 11 +++++- .../wrapper/command/KodakCommandCommunicator.java | 42 ++++++++++++++++++---- .../wrapper/command/messages/IKodakMessages.java | 4 --- .../wrapper/command/messages/KodakCommandBase.java | 2 +- .../command/messages/KodakCommandReceiveOnly.java | 2 +- .../wrapper/liveview/KodakLiveViewControl.java | 5 ++- app/src/main/res/values-ja/strings.xml | 2 ++ app/src/main/res/values/strings.xml | 1 + 9 files changed, 57 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/IKodakInterfaceProvider.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/IKodakInterfaceProvider.java index 563841b..d8d8717 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/IKodakInterfaceProvider.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/IKodakInterfaceProvider.java @@ -39,4 +39,6 @@ public interface IKodakInterfaceProvider ICameraStatusWatcher getCameraStatusWatcher(); ICameraStatus getCameraStatusListHolder(); + + String getStringFromResource(int resId); } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/KodakInterfaceProvider.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/KodakInterfaceProvider.java index f6d9817..1c5f6db 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/KodakInterfaceProvider.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/KodakInterfaceProvider.java @@ -60,7 +60,7 @@ public class KodakInterfaceProvider implements IKodakInterfaceProvider, IDisplay public KodakInterfaceProvider(@NonNull Activity context, @NonNull ICameraStatusReceiver provider, @NonNull ICameraStatusUpdateNotify statusListener, @NonNull IInformationReceiver informationReceiver) { this.activity = context; - commandPublisher = new KodakCommandCommunicator(CAMERA_IP, CONTROL_PORT, true, false); + commandPublisher = new KodakCommandCommunicator(this, CAMERA_IP, CONTROL_PORT, true, false); liveViewControl = new KodakLiveViewControl(context, CAMERA_IP, LIVEVIEW_PORT); statusChecker = new KodakStatusChecker(); canonConnection = new KodakConnection(context, provider, this, statusChecker); @@ -169,6 +169,12 @@ public class KodakInterfaceProvider implements IKodakInterfaceProvider, IDisplay } @Override + public String getStringFromResource(int resId) + { + return (activity.getString(resId)); + } + + @Override public IInformationReceiver getInformationReceiver() { // ちょっとこの引き回しは気持ちがよくない... @@ -180,4 +186,7 @@ public class KodakInterfaceProvider implements IKodakInterfaceProvider, IDisplay { return (statusChecker); } + + + } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/KodakCommandCommunicator.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/KodakCommandCommunicator.java index b9a06ca..46d8519 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/KodakCommandCommunicator.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/KodakCommandCommunicator.java @@ -5,6 +5,9 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import net.osdn.gokigen.a01d.R; +import net.osdn.gokigen.a01d.camera.ICameraConnection; +import net.osdn.gokigen.a01d.camera.kodak.IKodakInterfaceProvider; import net.osdn.gokigen.a01d.camera.kodak.wrapper.command.messages.KodakCommandReceiveOnly; import java.io.BufferedReader; @@ -28,6 +31,7 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC private static final int COMMAND_SEND_RECEIVE_DURATION_MAX = 3000; private static final int COMMAND_POLL_QUEUE_MS = 5; + private final IKodakInterfaceProvider interfaceProvider; private final String ipAddress; private final int portNumber; @@ -39,8 +43,9 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC private BufferedReader bufferedReader = null; private Queue commandQueue; - public KodakCommandCommunicator(@NonNull String ip, int portNumber, boolean tcpNoDelay, boolean waitForever) + public KodakCommandCommunicator(@NonNull IKodakInterfaceProvider interfaceProvider, @NonNull String ip, int portNumber, boolean tcpNoDelay, boolean waitForever) { + this.interfaceProvider = interfaceProvider; this.ipAddress = ip; this.portNumber = portNumber; this.tcpNoDelay = tcpNoDelay; @@ -288,12 +293,37 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC dos.write(byte_array); dos.flush(); } + catch (java.net.SocketException socketException) + { + socketException.printStackTrace(); + try + { + // 回線切断を通知する + detectDisconnect(); + } + catch (Exception ee) + { + ee.printStackTrace(); + } + } catch (Exception e) { e.printStackTrace(); } } + private void detectDisconnect() + { + ICameraConnection connection = interfaceProvider.getCameraConnection(); + if (connection != null) + { + // 回線状態を「切断」にしてダイアログを表示する + connection.forceUpdateConnectionStatus(ICameraConnection.CameraConnectionStatus.DISCONNECTED); + connection.alertConnectingFailed(interfaceProvider.getStringFromResource(R.string.kodak_command_line_disconnected)); + } + } + + private void sleep(int delayMs) { try @@ -344,7 +374,7 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC if (read_bytes < 0) { // リトライオーバー検出 - Log.v(TAG, " DETECT RETRY OVER..."); + Log.v(TAG, " ----- DETECT RECEIVE RETRY OVER... -----"); return (true); } @@ -375,7 +405,7 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC private void receivedAllMessage(boolean isDumpReceiveLog, int id, byte[] body, IKodakCommandCallback callback) { - Log.v(TAG, "receivedAllMessage() : " + ((body == null) ? 0 : body.length) + " bytes."); + Log.v(TAG, " receivedAllMessage() : " + ((body == null) ? 0 : body.length) + " bytes."); if ((isDumpReceiveLog)&&(body != null)) { // ログに受信メッセージを出力する @@ -396,10 +426,10 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC { if (received_body == null) { - Log.v(TAG, "send_secondary_message : NULL "); + Log.v(TAG, " send_secondary_message : NULL "); return; } - Log.v(TAG, "send_secondary_message : [" + received_body[8] + "] [" + received_body[9] + "] "); + Log.v(TAG, " send_secondary_message : [" + received_body[8] + "] [" + received_body[9] + "] "); try { byte[] message_to_send = null; if ((received_body[8] == (byte) 0xd2) && (received_body[9] == (byte) 0xd7)) { @@ -514,7 +544,7 @@ public class KodakCommandCommunicator implements IKodakCommandPublisher, IKodakC { while (read_bytes <= 0) { - Log.v(TAG, " --- waitForReceive : " + retry_count + " delay : " + delayMs + "ms"); + // Log.v(TAG, " --- waitForReceive : " + retry_count + " delay : " + delayMs + "ms"); sleep(delayMs); read_bytes = is.available(); if (read_bytes <= 0) diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/IKodakMessages.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/IKodakMessages.java index 9e87ee2..23b42bb 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/IKodakMessages.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/IKodakMessages.java @@ -24,9 +24,5 @@ public interface IKodakMessages int SEQ_CONNECT_09 = 109; int SEQ_CONNECT_10 = 110; int SEQ_CONNECT_11 = 111; - int SEQ_CONNECT_12 = 112; - int SEQ_CONNECT_13 = 113; - int SEQ_CONNECT_14 = 114; - int SEQ_CONNECT_15 = 115; } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandBase.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandBase.java index 2741049..d153769 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandBase.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandBase.java @@ -52,6 +52,6 @@ public class KodakCommandBase implements IKodakCommand @Override public boolean dumpLog() { - return (true); + return (false); } } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandReceiveOnly.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandReceiveOnly.java index 00dff3e..8afa3a1 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandReceiveOnly.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/command/messages/KodakCommandReceiveOnly.java @@ -36,7 +36,7 @@ public class KodakCommandReceiveOnly extends KodakCommandBase @Override public boolean dumpLog() { - return (true); + return (false); } } diff --git a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/liveview/KodakLiveViewControl.java b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/liveview/KodakLiveViewControl.java index 21f2d5c..72d1dd8 100644 --- a/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/liveview/KodakLiveViewControl.java +++ b/app/src/main/java/net/osdn/gokigen/a01d/camera/kodak/wrapper/liveview/KodakLiveViewControl.java @@ -39,6 +39,7 @@ public class KodakLiveViewControl implements ILiveViewControl */ private void prepare() { +/* try { //SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); @@ -48,6 +49,7 @@ public class KodakLiveViewControl implements ILiveViewControl { e.printStackTrace(); } +*/ } @Override @@ -99,6 +101,7 @@ public class KodakLiveViewControl implements ILiveViewControl if (whileFetching) { Log.v(TAG, "start() already starting."); + return; // すでにスタートしているので、LVの再スタートはしない。 } whileFetching = true; @@ -165,7 +168,7 @@ public class KodakLiveViewControl implements ILiveViewControl if ((!whileFetching)&&(continuousNullDataReceived > FETCH_ERROR_MAX)) { // 再度ライブビューのスタートをやってみる。 - whileFetching = false; + //whileFetching = false; //continuousNullDataReceived = 0; start(streamUrl); } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 9dbdc53..660bf99 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -326,4 +326,6 @@ フラッシュモード 現在は、カメラと接続する時に設定します。 + カメラへのコマンド送信回線が切断されました。再試行してください。 + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2c0e249..b0893ce 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -331,4 +331,5 @@ Flash Mode Currently, sets only when connecting to camera. + The command communication line is disconnected. (RETRY please.) -- 2.11.0