<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
- <value value="AHG771417877" />
+ <value value="3e50111c1220" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
- <timeTargetWasSelectedWithDropDown value="2022-04-10T13:56:04.072213700Z" />
+ <timeTargetWasSelectedWithDropDown value="2022-04-11T14:21:39.509765200Z" />
</component>
</project>
\ No newline at end of file
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.IOmdsProtocolNotify
+import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
+import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
+import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
+import java.lang.Exception
+import java.util.HashMap
+
+
+class OmdsContinuousShotControl(private val frameDisplayer: IAutoFocusFrameDisplay, indicator: IIndicatorControl, userAgent: String = "OlympusCameraKit", private val executeUrl : String = "http://192.168.0.10") : IOmdsProtocolNotify
+{
+ private val headerMap: MutableMap<String, String> = HashMap()
+ private val http = SimpleHttpClient()
+ private var useOpcProtocol = false
+
+ fun continuousShot(isStop: Boolean)
+ {
+ Log.v(TAG, "continuousShot()")
+ try
+ {
+ val thread = Thread {
+ try
+ {
+ val sendUrl = if (isStop) { if (useOpcProtocol) { executeUrl + CAPTURE_STOP_COMMAND_OPC } else { executeUrl + CAPTURE_STOP_COMMAND } } else { if (useOpcProtocol) { executeUrl + CAPTURE_COMMAND_OPC } else { executeUrl + CAPTURE_COMMAND } }
+ val reply: String = http.httpGetWithHeader(sendUrl, headerMap, null, TIMEOUT_MS)?.lowercase() ?: ""
+ if (!reply.contains("ok"))
+ {
+ Log.v(TAG, "Capture Failure... : $reply")
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ frameDisplayer.hideFocusFrame()
+ }
+ thread.start()
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ }
+
+ override fun detectedOpcProtocol(opcProtocol: Boolean)
+ {
+ Log.v(TAG, " --- detectedOpcProtocol($opcProtocol)")
+ useOpcProtocol = opcProtocol
+ }
+
+ companion object
+ {
+ private val TAG: String = OmdsSingleShotControl::class.java.simpleName
+ private const val TIMEOUT_MS = 3000
+ private const val CAPTURE_COMMAND = "/exec_takemotion.cgi?com=starttake"
+ private const val CAPTURE_COMMAND_OPC = "/exec_takemotion.cgi?com=newstarttake"
+ private const val CAPTURE_STOP_COMMAND = "/exec_takemotion.cgi?com=stoptake"
+ private const val CAPTURE_STOP_COMMAND_OPC = "/exec_takemotion.cgi?com=newstoptake"
+
+ }
+
+ init
+ {
+ headerMap["User-Agent"] = userAgent // "OlympusCameraKit" // "OI.Share"
+ headerMap["X-Protocol"] = userAgent // "OlympusCameraKit" // "OI.Share"
+ }
+}
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICaptureControl
import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.IOmdsProtocolNotify
+import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.OmdsContinuousShotControl
import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation.OmdsSingleShotControl
import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
import java.lang.Exception
+import java.util.*
-class OmdsCaptureControl(frameDisplay: IAutoFocusFrameDisplay, indicator: IIndicatorControl, statusChecker : ICameraStatus): ICaptureControl, IOmdsProtocolNotify
+class OmdsCaptureControl(frameDisplay: IAutoFocusFrameDisplay, indicator: IIndicatorControl, val statusChecker : ICameraStatus): ICaptureControl, IOmdsProtocolNotify
{
+ private var isStarted = false
private val singleShotControl = OmdsSingleShotControl(frameDisplay, indicator)
+ private val continuousShotControl = OmdsContinuousShotControl(frameDisplay, indicator)
override fun doCapture(kind: Int)
{
Log.v(TAG, "doCapture() : $kind")
try
{
+ val status = statusChecker.getStatus(ICameraStatus.CAPTURE_MODE).lowercase(Locale.getDefault())
+ //Log.v(TAG, "OMDS Capture Mode : $status")
+ if (!status.contains("normal"))
+ {
+ // 連写の場合...
+ continuousShotControl.continuousShot(isStarted)
+ isStarted = !isStarted
+ return
+ }
+
+ // 単写の場合...
singleShotControl.singleShot()
+ return
}
catch (e: Exception)
{
override fun detectedOpcProtocol(opcProtocol: Boolean)
{
singleShotControl.detectedOpcProtocol(opcProtocol)
+ continuousShotControl.detectedOpcProtocol(opcProtocol)
}
companion object