OSDN Git Service

namespaceを少し見直し。 UserAgentのカスタマイズを実施できるよう準備。
authorMRSa <mrsa@myad.jp>
Sat, 18 Sep 2021 10:07:59 +0000 (19:07 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 18 Sep 2021 10:07:59 +0000 (19:07 +0900)
12 files changed:
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/connection/OmdsCameraConnectSequence.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/connection/OmdsCameraConnection.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/connection/OmdsCameraDisconnectSequence.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/liveview/OmdsLiveViewControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsAutoFocusControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsRunModeControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsRunMode.kt with 56% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsSingleShotControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsZoomLensControl.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsZoomLensControl.kt with 86% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/status/OmdsCameraStatusWatcher.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsCameraPowerOff.kt [moved from app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/operation/OmdsCameraPowerOff.kt with 96% similarity]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/wrapper/OmdsCaptureControl.kt

index fcf249b..85dac68 100644 (file)
@@ -8,6 +8,8 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.camera.preference.ICameraPreferenceProvider
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.connection.OmdsCameraConnection
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.liveview.OmdsLiveViewControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.OmdsRunModeControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.OmdsZoomLensControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.status.OmdsCameraStatusWatcher
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.wrapper.OmdsCaptureControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.wrapper.OmdsFocusControl
@@ -29,6 +31,8 @@ class OmdsCameraControl(private val context: AppCompatActivity, private val vibr
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify)
     private val statusChecker = OmdsCameraStatusWatcher()
     private val cameraConnection = OmdsCameraConnection(context, provider)
+    private val runModeControl = OmdsRunModeControl()
+    private val zoomLensControl = OmdsZoomLensControl(statusChecker)
     private val storeImage = StoreImage(context, liveViewListener)
 
     private lateinit var liveViewControl : OmdsLiveViewControl
@@ -98,8 +102,16 @@ class OmdsCameraControl(private val context: AppCompatActivity, private val vibr
         }
     }
 
-    override fun changeCaptureMode(mode: String) { }
+    override fun changeCaptureMode(mode: String)
+    {
+        Log.v(TAG, "changeCaptureMode($mode) : ${runModeControl.isRecordingMode()}")
+
+        //dummy call
+        Log.v(TAG, " canZoom() : ${zoomLensControl.canZoom()}")
+    }
+
     override fun needRotateImage(): Boolean { return (false) }
+
     override fun setRefresher(id : Int, refresher: ILiveViewRefresher, imageView: ILiveView, cachePosition : ICachePositionProvider)
     {
         try
index a9b74a0..f30a7bc 100644 (file)
@@ -10,20 +10,21 @@ import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import java.lang.Exception
 import java.util.HashMap
 
-class OmdsCameraConnectSequence(private val context: AppCompatActivity, private val cameraStatusReceiver: ICameraStatusReceiver, private val cameraConnection : ICameraConnection, private val liveViewQuality : String = "0640x0480", private val executeUrl : String = "http://192.168.0.10") : Runnable
+class OmdsCameraConnectSequence(private val context: AppCompatActivity, private val cameraStatusReceiver: ICameraStatusReceiver, private val cameraConnection : ICameraConnection, private val liveViewQuality : String, userAgent : String, private val executeUrl : String) : Runnable
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
 
     override fun run()
     {
-        val camInfoUrl = "$executeUrl/get_caminfo.cgi"
-        val getCommandListUrl = "$executeUrl/get_commandlist.cgi"
-        val getConnectModeUrl = "$executeUrl/get_connectmode.cgi"
-        val switchCameraModeUrl = "$executeUrl/switch_cammode.cgi"
-        //final String getCameraStatusUrl = "$executeUrl/get_activate.cgi";
         try
         {
+            val camInfoUrl = "$executeUrl/get_caminfo.cgi"
+            val getCommandListUrl = "$executeUrl/get_commandlist.cgi"
+            val getConnectModeUrl = "$executeUrl/get_connectmode.cgi"
+            val switchCameraModeUrl = "$executeUrl/switch_cammode.cgi"
+            //val getCameraStatusUrl = "$executeUrl/get_activate.cgi"
+
             val response: String = http.httpGetWithHeader(getConnectModeUrl, headerMap, null, TIMEOUT_MS) ?: ""
             Log.v(TAG, " $getConnectModeUrl $response")
             if (response.isNotEmpty())
@@ -75,8 +76,8 @@ class OmdsCameraConnectSequence(private val context: AppCompatActivity, private
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 
     companion object
index e4ed59f..cd5d0df 100644 (file)
@@ -13,7 +13,7 @@ import java.lang.Exception
 import java.util.concurrent.Executor
 import java.util.concurrent.Executors
 
-class OmdsCameraConnection(private val context: AppCompatActivity, private val statusReceiver: ICameraStatusReceiver) : ICameraConnection, ICameraConnectionStatus
+class OmdsCameraConnection(private val context: AppCompatActivity, private val statusReceiver: ICameraStatusReceiver, private val liveViewQuality : String = "0640x0480", private val userAgent : String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : ICameraConnection, ICameraConnectionStatus
 {
     private val cameraExecutor: Executor = Executors.newFixedThreadPool(1)
     private var connectionStatus: ICameraConnectionStatus.CameraConnectionStatus = ICameraConnectionStatus.CameraConnectionStatus.UNKNOWN
@@ -164,7 +164,7 @@ class OmdsCameraConnection(private val context: AppCompatActivity, private val s
         Log.v(TAG, "disconnectFromCamera()")
         try
         {
-            cameraExecutor.execute(OmdsCameraDisconnectSequence(context, powerOff))
+            cameraExecutor.execute(OmdsCameraDisconnectSequence(context, powerOff, userAgent, executeUrl))
         }
         catch (e: Exception)
         {
@@ -181,7 +181,7 @@ class OmdsCameraConnection(private val context: AppCompatActivity, private val s
         connectionStatus = ICameraConnectionStatus.CameraConnectionStatus.CONNECTING
         try
         {
-            cameraExecutor.execute(OmdsCameraConnectSequence(context, statusReceiver, this))
+            cameraExecutor.execute(OmdsCameraConnectSequence(context, statusReceiver, this, liveViewQuality, userAgent, executeUrl))
         }
         catch (e: Exception)
         {
index 6bbd386..19353f2 100644 (file)
@@ -6,7 +6,7 @@ import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import java.lang.Exception
 import java.util.HashMap
 
-class OmdsCameraDisconnectSequence(private val context: AppCompatActivity, private val powerOff: Boolean, private val executeUrl : String = "http://192.168.0.10") : Runnable
+class OmdsCameraDisconnectSequence(private val context: AppCompatActivity, private val powerOff: Boolean, userAgent: String, private val executeUrl : String) : Runnable
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
@@ -31,8 +31,8 @@ class OmdsCameraDisconnectSequence(private val context: AppCompatActivity, priva
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 
     companion object
index 4b46101..98bdb2e 100644 (file)
@@ -13,20 +13,20 @@ import java.net.DatagramPacket
 import java.net.DatagramSocket
 import java.util.*
 
-
 class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
                           private val statusWatcher: OmdsCameraStatusWatcher,
                           private val indicator: IMessageDrawer?,
                           private val notifier: ICameraStatusUpdateNotify?,
+                          userAgent: String = "OlympusCameraKit",
                           private val executeUrl : String = "http://192.168.0.10",
                           ) : ILiveViewController
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
+    private val receivedByteStream = ByteArrayOutputStream(RECEIVE_BUFFER_SIZE)
 
     private var receiveSocket: DatagramSocket? = null
     private var whileStreamReceive = false
-    private val receivedByteStream: ByteArrayOutputStream
 
     override fun startLiveView(isCameraScreen: Boolean)
     {
@@ -141,8 +141,6 @@ class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
             if (receivedData[0] == 0x90.toByte())
             {
                 // 先頭パケット (RTPヘッダは 12bytes + 拡張ヘッダ...)
-                //extensionLength = (receivedData[14]);
-                //extensionLength = (extensionLength * 256) + (receivedData[15]);
                 extensionLength = 16
                 extensionLength = checkJpegStartPosition(receivedData, extensionLength) - position
                 statusWatcher.setRtpHeader(Arrays.copyOf(receivedData, extensionLength))
@@ -202,12 +200,12 @@ class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
         {
             try
             {
-                val receive_packet = DatagramPacket(buffer, buffer.size)
+                val receivePacket = DatagramPacket(buffer, buffer.size)
                 if (receiveSocket != null)
                 {
                     receiveSocket?.soTimeout = TIMEOUT_MS
-                    receiveSocket?.receive(receive_packet)
-                    checkReceiveImage(receive_packet)
+                    receiveSocket?.receive(receivePacket)
+                    checkReceiveImage(receivePacket)
                     exceptionCount = 0
                 }
                 else
@@ -226,13 +224,6 @@ class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
                         //  ライブビューの送信が来なくなった... それも回数が超えた...
                         Log.v(TAG, "LV : RETRY REQUEST")
                         exceptionCount = 0
-                        /*
-                        String reply = SimpleHttpClient.httpGet(camera.getCmdUrl() + LIVEVIEW_START_REQUEST, TIMEOUT_MS);
-                        if (!reply.contains("ok"))
-                        {
-                            Log.v(TAG, "LV : RETRY COMMAND FAIL...");
-                        }
-*/
                     }
                     catch (ee: Exception)
                     {
@@ -254,7 +245,7 @@ class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
             if (receiveSocket != null)
             {
                 Log.v(TAG, "  ----- SOCKET CLOSE -----  ")
-                receiveSocket!!.close()
+                receiveSocket?.close()
                 receiveSocket = null
             }
         }
@@ -266,10 +257,8 @@ class OmdsLiveViewControl(private val imageDataReceiver: IImageDataReceiver,
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
-
-        receivedByteStream = ByteArrayOutputStream(RECEIVE_BUFFER_SIZE)
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 
     companion object
index e911b91..1dfed51 100644 (file)
@@ -10,7 +10,7 @@ import java.lang.Exception
 import java.util.*
 import kotlin.math.floor
 
-class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl, private val executeUrl : String = "http://192.168.0.10")
+class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10")
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
@@ -176,7 +176,8 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p
         )
     }
 
-    private fun findTouchAFPositionResult(replyXml: String, position: String): Boolean {
+    private fun findTouchAFPositionResult(replyXml: String, position: String): Boolean
+    {
         try {
             Log.v(
                 TAG,
@@ -193,8 +194,8 @@ class OmdsAutoFocusControl(private val frameDisplayer: IAutoFocusFrameDisplay, p
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 
     companion object
@@ -1,4 +1,4 @@
-package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation
 
 import android.util.Log
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraRunMode
@@ -8,11 +8,12 @@ import java.lang.Exception
 import java.util.HashMap
 
 
-class OmdsRunMode(private val executeUrl : String = "http://192.168.0.10") : ICameraRunMode
+class OmdsRunModeControl(private val liveViewQuality : String = "0640x0480", userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : ICameraRunMode
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
     private var runMode = false
+    private var lvQuality = liveViewQuality
 
     override fun changeRunMode(isRecording: Boolean, callback: ICameraRunModeCallback)
     {
@@ -23,7 +24,7 @@ class OmdsRunMode(private val executeUrl : String = "http://192.168.0.10") : ICa
                 var playModeUrl = "$executeUrl/switch_cammode.cgi"
                 playModeUrl = if (isRecording)
                 {
-                    "$playModeUrl?mode=rec"
+                    "$playModeUrl?mode=rec&lvqty=$lvQuality"
                 }
                 else
                 {
@@ -53,18 +54,44 @@ class OmdsRunMode(private val executeUrl : String = "http://192.168.0.10") : ICa
 
     override fun isRecordingMode(): Boolean
     {
+        getCurrentPlayMode()
         return (runMode)
     }
 
+    fun setLiveviewQuality(quality: String?)
+    {
+        lvQuality = quality ?: liveViewQuality
+    }
+
+    private fun getCurrentPlayMode() : Boolean
+    {
+        val isRecordingMode = false
+        try
+        {
+            val getConnectModeUrl = "$executeUrl/get_connectmode.cgi"
+            val response: String = http.httpGetWithHeader(getConnectModeUrl, headerMap, null, TIMEOUT_MS) ?: ""
+            Log.v(TAG, " $getConnectModeUrl $response")
+            if (response.isNotEmpty())
+            {
+                Log.v(TAG, " RESPONSE : $response")
+            }
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (isRecordingMode)
+    }
+
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 
     companion object
     {
-        private val TAG = OmdsRunMode::class.java.simpleName
+        private val TAG = OmdsRunModeControl::class.java.simpleName
         private const val TIMEOUT_MS = 5000
     }
 }
index 066400f..780c2fd 100644 (file)
@@ -7,7 +7,7 @@ import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import java.lang.Exception
 import java.util.HashMap
 
-class OmdsSingleShotControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl, private val executeUrl : String = "http://192.168.0.10")
+class OmdsSingleShotControl(private val frameDisplayer: IAutoFocusFrameDisplay, indicator: IIndicatorControl, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10")
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
@@ -49,7 +49,7 @@ class OmdsSingleShotControl(private val frameDisplayer: IAutoFocusFrameDisplay,
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 }
@@ -1,12 +1,13 @@
-package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.wrapper
+package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation
 
 import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.IZoomLensControl
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import java.lang.Exception
 import java.util.HashMap
 
-class OmdsZoomLensControl(private val executeUrl : String = "http://192.168.0.10") : IZoomLensControl
+class OmdsZoomLensControl(statusChecker: ICameraStatus, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : IZoomLensControl
 {
     private val headerMap: MutableMap<String, String> = HashMap()
     private val http = SimpleHttpClient()
@@ -104,7 +105,7 @@ class OmdsZoomLensControl(private val executeUrl : String = "http://192.168.0.10
 
     init
     {
-        headerMap["User-Agent"] = "OlympusCameraKit" // "OI.Share"
-        headerMap["X-Protocol"] = "OlympusCameraKit" // "OI.Share"
+        headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+        headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
     }
 }
index c3f85da..dab76c9 100644 (file)
@@ -9,7 +9,7 @@ import jp.osdn.gokigen.gokigenassets.liveview.message.IMessageDrawer
 import java.lang.Exception
 import kotlin.collections.ArrayList
 
-class OmdsCameraStatusWatcher() : ICameraStatusWatcher, ICameraStatus
+class OmdsCameraStatusWatcher : ICameraStatusWatcher, ICameraStatus
 {
     private var buffer: ByteArray? = null
     private var isWatching = false
index d4c47ba..cfcc846 100644 (file)
@@ -8,7 +8,7 @@ import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
 import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 import java.lang.Exception
 
-class OmdsCaptureControl(private val frameDisplay: IAutoFocusFrameDisplay, indicator: IIndicatorControl, statusChecker : ICameraStatus): ICaptureControl
+class OmdsCaptureControl(frameDisplay: IAutoFocusFrameDisplay, indicator: IIndicatorControl, statusChecker : ICameraStatus): ICaptureControl
 {
     private val singleShotControl = OmdsSingleShotControl(frameDisplay, indicator)
 
@@ -27,7 +27,7 @@ class OmdsCaptureControl(private val frameDisplay: IAutoFocusFrameDisplay, indic
 
     companion object
     {
-        private val TAG: String = OmdsCaptureControl::class.java.getSimpleName()
+        private val TAG: String = OmdsCaptureControl::class.java.simpleName
     }
 
 }