OSDN Git Service

a01fでの変更分をa01eにフィードバック。
[gokigen/mangle.git] / app / src / main / java / jp / osdn / gokigen / gokigenassets / camera / vendor / sony / operation / takepicture / ContinuousShotControl.kt
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/takepicture/ContinuousShotControl.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/operation/takepicture/ContinuousShotControl.kt
new file mode 100644 (file)
index 0000000..00f6e60
--- /dev/null
@@ -0,0 +1,63 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor.sony.operation.takepicture
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.vendor.sony.wrapper.ISonyCameraApi
+import jp.osdn.gokigen.gokigenassets.liveview.IIndicatorControl
+import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
+import java.lang.Exception
+
+class ContinuousShotControl(private val frameDisplayer: IAutoFocusFrameDisplay, private val indicator: IIndicatorControl)
+{
+    private lateinit var cameraApi: ISonyCameraApi
+    fun setCameraApi(sonyCameraApi: ISonyCameraApi)
+    {
+        cameraApi = sonyCameraApi
+    }
+
+    fun continuousShot(isStop: Boolean)
+    {
+        Log.v(TAG, "continuousShot()")
+        if (!::cameraApi.isInitialized)
+        {
+            Log.v(TAG, "ISonyCameraApi is not initialized...")
+            return
+        }
+        try
+        {
+            val thread = Thread {
+                try
+                {
+                    val resultsObj = if (isStop) { cameraApi.stopContShooting() } else { cameraApi.startContShooting() }
+                    if (resultsObj == null)
+                    {
+                        Log.v(TAG, "actTakePicture() reply is null.")
+                    }
+                    else
+                    {
+                        // 撮影後、タッチAFをキャンセルする
+                        val resultsObj2 = cameraApi.cancelTouchAFPosition()
+                        if (resultsObj2 == null)
+                        {
+                            Log.v(TAG, "cancelTouchAFPosition() reply is null.")
+                        }
+                    }
+                }
+                catch (e: Exception)
+                {
+                    e.printStackTrace()
+                }
+                frameDisplayer.hideFocusFrame()
+            }
+            thread.start()
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    companion object
+    {
+        private val TAG = ContinuousShotControl::class.java.simpleName
+    }
+}