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
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
}
}
- 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
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())
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
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
Log.v(TAG, "disconnectFromCamera()")
try
{
- cameraExecutor.execute(OmdsCameraDisconnectSequence(context, powerOff))
+ cameraExecutor.execute(OmdsCameraDisconnectSequence(context, powerOff, userAgent, executeUrl))
}
catch (e: Exception)
{
connectionStatus = ICameraConnectionStatus.CameraConnectionStatus.CONNECTING
try
{
- cameraExecutor.execute(OmdsCameraConnectSequence(context, statusReceiver, this))
+ cameraExecutor.execute(OmdsCameraConnectSequence(context, statusReceiver, this, liveViewQuality, userAgent, executeUrl))
}
catch (e: Exception)
{
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()
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
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)
{
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))
{
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
// ライブビューの送信が来なくなった... それも回数が超えた...
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)
{
if (receiveSocket != null)
{
Log.v(TAG, " ----- SOCKET CLOSE ----- ")
- receiveSocket!!.close()
+ receiveSocket?.close()
receiveSocket = null
}
}
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
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()
)
}
- private fun findTouchAFPositionResult(replyXml: String, position: String): Boolean {
+ private fun findTouchAFPositionResult(replyXml: String, position: String): Boolean
+ {
try {
Log.v(
TAG,
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
-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
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)
{
var playModeUrl = "$executeUrl/switch_cammode.cgi"
playModeUrl = if (isRecording)
{
- "$playModeUrl?mode=rec"
+ "$playModeUrl?mode=rec&lvqty=$lvQuality"
}
else
{
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
}
}
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()
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"
}
}
-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()
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"
}
}
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
-package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.operation
+package jp.osdn.gokigen.gokigenassets.camera.vendor.omds.wrapper
import android.content.Context
import androidx.preference.Preference
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)
companion object
{
- private val TAG: String = OmdsCaptureControl::class.java.getSimpleName()
+ private val TAG: String = OmdsCaptureControl::class.java.simpleName
}
}