OSDN Git Service

カメラ状態を操作パネルに表示できるよう小細工。
authorMRSa <mrsa@myad.jp>
Wed, 14 Jul 2021 14:18:12 +0000 (23:18 +0900)
committerMRSa <mrsa@myad.jp>
Wed, 14 Jul 2021 14:18:12 +0000 (23:18 +0900)
13 files changed:
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/CameraPreference.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/DummyCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ICameraPreferenceProvider.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraStatusHolder.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/console/ConsolePanelControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/example/ExamplePictureControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/interfaces/ICameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/panasonic/wrapper/PanasonicCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/ricohpentax/RicohPentaxCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/ThetaCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/theta/status/ThetaCameraStatusWatcher.kt
app/src/main/java/jp/osdn/gokigen/mangle/scene/CameraProvider.kt

index 855c50b..bd54e43 100644 (file)
@@ -2,7 +2,7 @@ package jp.osdn.gokigen.gokigenassets.camera
 
 import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 
-class CameraPreference(private val wrapper : PreferenceAccessWrapper, method0 : String, private val isReadonly : Boolean = false, sequence0 : String = "0", option1_ : String = "", option2_ : String = "", option3_ : String = "", option4_ : String = "", option5_ : String = "", private val keySet : CameraPreferenceKeySet? = null) : ICameraPreferenceProvider, ICameraPreferenceUpdater
+class CameraPreference(private val id : Int, private val wrapper : PreferenceAccessWrapper, method0 : String, private val isReadonly : Boolean = false, sequence0 : String = "0", option1_ : String = "", option2_ : String = "", option3_ : String = "", option4_ : String = "", option5_ : String = "", private val keySet : CameraPreferenceKeySet? = null) : ICameraPreferenceProvider, ICameraPreferenceUpdater
 {
     private var method = method0
     private var sequence = sequence0
@@ -12,6 +12,11 @@ class CameraPreference(private val wrapper : PreferenceAccessWrapper, method0 :
     private var option4 = option4_
     private var option5 = option5_
 
+    override fun getId(): Int
+    {
+        return (id)
+    }
+
     override fun getCameraMethod(): String
     {
         return (method)
@@ -47,7 +52,7 @@ class CameraPreference(private val wrapper : PreferenceAccessWrapper, method0 :
         return (option5)
     }
 
-    override fun getUpdator(): ICameraPreferenceUpdater?
+    override fun getUpdater(): ICameraPreferenceUpdater?
     {
         if (isReadonly)
         {
index e661864..a8621cb 100644 (file)
@@ -2,16 +2,12 @@ package jp.osdn.gokigen.gokigenassets.camera
 
 import android.view.KeyEvent
 import android.view.View
-import androidx.camera.core.CameraSelector
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraControl
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IDisplayInjector
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IKeyDown
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveViewRefresher
 
-class DummyCameraControl() : ICameraControl, View.OnClickListener, View.OnLongClickListener, IKeyDown
+class DummyCameraControl() : ICameraControl, View.OnClickListener, View.OnLongClickListener, IKeyDown, ICameraStatus
 {
     override fun getConnectionMethod(): String { return ("NONE") }
     override fun initialize() { }
@@ -26,7 +22,13 @@ class DummyCameraControl() : ICameraControl, View.OnClickListener, View.OnLongCl
     override fun keyDownReceiver(id: Int): IKeyDown { return (this) }
     override fun getFocusingControl(id: Int): IFocusingControl? { return (null) }
     override fun getDisplayInjector(): IDisplayInjector? { return (null) }
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+    override fun getCameraStatus(): ICameraStatus { return (this) }
+
     override fun onClick(v: View?) { }
     override fun handleKeyDown(keyCode: Int, event: KeyEvent): Boolean { return (false) }
     override fun onLongClick(v: View?): Boolean { return (false) }
+    override fun getStatusList(key: String): List<String?> { return (ArrayList<String>()) }
+    override fun getStatus(key: String): String { return ("") }
+    override fun setStatus(key: String, value: String) { }
 }
index 514933b..85c8944 100644 (file)
@@ -2,6 +2,7 @@ package jp.osdn.gokigen.gokigenassets.camera
 
 interface ICameraPreferenceProvider
 {
+    fun getId() : Int
     fun getCameraMethod() : String
     fun getConnectionSequence() : String
 
@@ -11,5 +12,5 @@ interface ICameraPreferenceProvider
     fun getCameraOption4() : String
     fun getCameraOption5() : String
 
-    fun getUpdator() : ICameraPreferenceUpdater?
+    fun getUpdater() : ICameraPreferenceUpdater?
 }
index b90addc..65a0e23 100644 (file)
@@ -12,16 +12,13 @@ import androidx.camera.core.Preview
 import androidx.camera.lifecycle.ProcessCameraProvider
 import androidx.core.content.ContextCompat
 import jp.osdn.gokigen.gokigenassets.camera.ICameraPreferenceProvider
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.constants.IApplicationConstantConvert.Companion.ID_CAMERA_X_PREVIEW_LAYOUT
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveViewRefresher
 import jp.osdn.gokigen.gokigenassets.liveview.image.CameraLiveViewListenerImpl
 import jp.osdn.gokigen.gokigenassets.liveview.storeimage.StoreImage
 import jp.osdn.gokigen.gokigenassets.utils.imagefile.FileControl
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraControl
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IDisplayInjector
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IFocusingControl
-import jp.osdn.gokigen.gokigenassets.camera.interfaces.IKeyDown
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
@@ -37,6 +34,7 @@ class CameraControl(private val activity : AppCompatActivity, private val prefer
     private lateinit var cameraXCamera : Camera
     private var cameraIsStarted = false
     private val cameraXCameraControl = CameraXCameraControl()
+    private val cameraXCameraStatusHolder = CameraXCameraStatusHolder()
     private val clickKeyDownListeners = mutableMapOf<Int, CameraClickKeyDownListener>()
     private val cachePositionProviders = mutableMapOf<Int, ICachePositionProvider>()
 
@@ -284,6 +282,8 @@ class CameraControl(private val activity : AppCompatActivity, private val prefer
         clickKeyDownListeners[id] = listener
         return (listener)
     }
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+    override fun getCameraStatus(): ICameraStatus { return (cameraXCameraStatusHolder) }
 
     companion object
     {
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraStatusHolder.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/camerax/operation/CameraXCameraStatusHolder.kt
new file mode 100644 (file)
index 0000000..f5d5006
--- /dev/null
@@ -0,0 +1,13 @@
+package jp.osdn.gokigen.gokigenassets.camera.camerax.operation
+
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
+
+class CameraXCameraStatusHolder : ICameraStatus
+{
+    override fun getStatusList(key: String): List<String?>
+    {
+        return (ArrayList<String>())
+    }
+    override fun getStatus(key: String): String { return ("") }
+    override fun setStatus(key: String, value: String) { }
+}
\ No newline at end of file
index acb777e..aa5d26a 100644 (file)
@@ -19,11 +19,15 @@ import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 
 class ConsolePanelControl (private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider) : IDisplayInjector,
-    ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener,
-    ICaptureModeReceiver, ICameraShutter, IKeyDown, IAnotherDrawer, View.OnTouchListener
+    ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown, IAnotherDrawer, View.OnTouchListener, ICameraStatus
 {
     private lateinit var refresher: ILiveViewRefresher
 
+    private var camera0: ICameraControl? = null
+    private var camera1: ICameraControl? = null
+    private var camera2: ICameraControl? = null
+    private var camera3: ICameraControl? = null
+
     companion object
     {
         private val TAG = ConsolePanelControl::class.java.simpleName
@@ -46,13 +50,23 @@ class ConsolePanelControl (private val context: AppCompatActivity, private val v
     override fun doShutter() { }
     override fun doShutterOff() { }
     override fun getAnotherTouchListener(id : Int) : View.OnTouchListener { return (this) }
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?)
+    {
+        this.camera0 = camera0
+        this.camera1 = camera1
+        this.camera2 = camera2
+        this.camera3 = camera3
+    }
+
+    override fun getCameraStatus(): ICameraStatus {
+        TODO("Not yet implemented")
+    }
 
     override fun injectDisplay(frameDisplayer: IAutoFocusFrameDisplay, indicator: IIndicatorControl, focusingModeNotify: IFocusingModeNotify)
     {
 
     }
 
-
     override fun initialize()
     {
         try
@@ -65,7 +79,6 @@ class ConsolePanelControl (private val context: AppCompatActivity, private val v
         }
     }
 
-
     override fun setRefresher(id: Int, refresher: ILiveViewRefresher, imageView: ILiveView, cachePosition: ICachePositionProvider)
     {
         try
@@ -168,7 +181,7 @@ class ConsolePanelControl (private val context: AppCompatActivity, private val v
         paint.style = Paint.Style.STROKE
         paint.isAntiAlias = true
         val width = canvas.width / 3.0f
-        val height = canvas.height / 3.0f
+        val height = canvas.height / 4.0f
         val rect = RectF(0.0f, 0.0f, canvas.width.toFloat(), canvas.height.toFloat())
 
         canvas.drawLine(rect.left + width, rect.top, rect.left + width, rect.bottom, paint)
@@ -178,4 +191,8 @@ class ConsolePanelControl (private val context: AppCompatActivity, private val v
         canvas.drawRect(rect, paint)
     }
 
+    override fun getStatusList(key: String): List<String?> { return (ArrayList<String>()) }
+    override fun getStatus(key: String): String { return ("") }
+    override fun setStatus(key: String, value: String) { }
+
 }
index be46935..2f82877 100644 (file)
@@ -24,7 +24,7 @@ import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 import java.io.InputStream
 
 
-class ExamplePictureControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider) : IDisplayInjector, ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown
+class ExamplePictureControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider) : IDisplayInjector, ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown, ICameraStatus
 {
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify, isDisableCache = true)
     private lateinit var refresher : ILiveViewRefresher
@@ -81,6 +81,11 @@ class ExamplePictureControl(private val context: AppCompatActivity, private val
     override fun doShutter() { }
     override fun doShutterOff() { }
     override fun handleKeyDown(keyCode: Int, event: KeyEvent): Boolean { return (false) }
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+    override fun getCameraStatus(): ICameraStatus { return (this) }
+    override fun getStatusList(key: String): List<String?> { return (ArrayList<String>()) }
+    override fun getStatus(key: String): String { return ("") }
+    override fun setStatus(key: String, value: String) { }
 
     override fun setRefresher(id: Int, refresher: ILiveViewRefresher, imageView: ILiveView, cachePosition : ICachePositionProvider)
     {
@@ -128,7 +133,7 @@ class ExamplePictureControl(private val context: AppCompatActivity, private val
                 {
                     if (isStoreUri)
                     {
-                        preference.getUpdator()?.setCameraOption1(uri.toString())
+                        preference.getUpdater()?.setCameraOption1(uri.toString())
                         vibrator.vibrate(IVibrator.VibratePattern.SIMPLE_LONG)
                     }
                     liveViewListener.onUpdateLiveView(fis.readBytes(), null)
index b91211b..1332f10 100644 (file)
@@ -26,4 +26,6 @@ interface ICameraControl
     fun getFocusingControl(id : Int = 0) : IFocusingControl?
     fun getDisplayInjector() : IDisplayInjector?
     fun getAnotherTouchListener(id : Int = 0) : View.OnTouchListener? = null
+    fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?)
+    fun getCameraStatus() : ICameraStatus
 }
index 807d4b4..0d0903f 100644 (file)
@@ -37,7 +37,7 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
 
     private lateinit var cachePositionProvider : ICachePositionProvider
     private lateinit var panasonicCamera: IPanasonicCamera
-    private var statusChecker: CameraEventObserver? = null
+    private lateinit var statusChecker: CameraEventObserver
     private var liveViewControl: PanasonicLiveViewControl? = null
     private var focusControl: PanasonicCameraFocusControl? = null
     private var captureControl: PanasonicCameraCaptureControl? = null
@@ -58,7 +58,7 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
             Log.v(TAG, " prepare : " + panasonicCamera.getFriendlyName() + " " + panasonicCamera.getModelName())
             try
             {
-                if (statusChecker == null)
+                if (!::statusChecker.isInitialized)
                 {
                     statusChecker = CameraEventObserver(context, panasonicCamera, cardSlotSelector)
                 }
@@ -111,13 +111,13 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
     {
         try
         {
-            if (statusChecker != null)
+            if (::statusChecker.isInitialized)
             {
                 if (listener != null)
                 {
-                    statusChecker?.setEventListener(listener)
+                    statusChecker.setEventListener(listener)
                 }
-                statusChecker?.startStatusWatch(null, null)
+                statusChecker.startStatusWatch(null, null)
             }
         }
         catch (e: Exception)
@@ -206,7 +206,10 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
         {
             if (isStatusWatch)
             {
-                statusChecker?.stopStatusWatch()
+                if (::statusChecker.isInitialized)
+                {
+                    statusChecker.stopStatusWatch()
+                }
                 isStatusWatch = false
             }
             cameraConnection.disconnect(false)
@@ -285,8 +288,11 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
         {
             if (!isStatusWatch)
             {
-                statusChecker?.startStatusWatch(null, null)
-                isStatusWatch = true
+                if (::statusChecker.isInitialized)
+                {
+                    statusChecker.startStatusWatch(null, null)
+                    isStatusWatch = true
+                }
             }
             liveViewControl?.startLiveView()
         }
@@ -304,8 +310,11 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
             liveViewControl?.stopLiveView()
             if (isStatusWatch)
             {
-                statusChecker?.stopStatusWatch()
-                isStatusWatch = false
+                if (::statusChecker.isInitialized)
+                {
+                    statusChecker.stopStatusWatch()
+                    isStatusWatch = false
+                }
             }
         }
         catch (e : Exception)
@@ -408,4 +417,10 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
     {
         return (false)
     }
+
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+    override fun getCameraStatus(): ICameraStatus
+    {
+        return (statusChecker)
+    }
 }
index 763d672..63a850f 100644 (file)
@@ -330,6 +330,13 @@ class RicohPentaxCameraControl(private val context: AppCompatActivity, private v
         return (false)
     }
 
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+
+    override fun getCameraStatus(): ICameraStatus
+    {
+        return (statusChecker)
+    }
+
     /**
      *
      *
index 0538ae2..1cd64b6 100644 (file)
@@ -346,4 +346,10 @@ class ThetaCameraControl(private val context: AppCompatActivity, private val vib
         return (false)
     }
 
+    override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?) { }
+
+    override fun getCameraStatus(): ICameraStatus
+    {
+        return (statusWatcher)
+    }
 }
index e7faad9..1d3c00d 100644 (file)
@@ -2,13 +2,14 @@ package jp.osdn.gokigen.gokigenassets.camera.theta.status
 
 import android.graphics.Color
 import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatus
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusUpdateNotify
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusWatcher
 import jp.osdn.gokigen.gokigenassets.liveview.message.IMessageDrawer
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 import org.json.JSONObject
 
-class ThetaCameraStatusWatcher(private val sessionIdProvider: IThetaSessionIdProvider, private val captureModeReceiver : ICaptureModeReceiver, private val executeUrl : String = "http://192.168.1.1") : ICameraStatusWatcher, IThetaStatusHolder
+class ThetaCameraStatusWatcher(private val sessionIdProvider: IThetaSessionIdProvider, private val captureModeReceiver : ICaptureModeReceiver, private val executeUrl : String = "http://192.168.1.1") : ICameraStatusWatcher, IThetaStatusHolder, ICameraStatus
 {
     private val httpClient = SimpleHttpClient()
     private var whileFetching = false
@@ -464,4 +465,18 @@ class ThetaCameraStatusWatcher(private val sessionIdProvider: IThetaSessionIdPro
         updateMessage()
     }
 
+    override fun getStatusList(key: String): List<String?>
+    {
+        return (ArrayList<String>())
+    }
+
+    override fun getStatus(key: String): String
+    {
+        return ("")
+    }
+
+    override fun setStatus(key: String, value: String)
+    {
+
+    }
 }
index d16340c..f7f7388 100644 (file)
@@ -152,7 +152,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
 
     private fun setupCameraPreference0(wrapper : PreferenceAccessWrapper) : ICameraPreferenceProvider
     {
-        return (CameraPreference(wrapper, PREFERENCE_CAMERA_METHOD_NONE))
+        return (CameraPreference(0, wrapper, PREFERENCE_CAMERA_METHOD_NONE))
     }
 
     private fun setupCameraPreference1(wrapper : PreferenceAccessWrapper) : ICameraPreferenceProvider
@@ -165,7 +165,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         val option4  = wrapper.getString(PREFERENCE_CAMERA_OPTION4_1, PREFERENCE_CAMERA_OPTION4_1_DEFAULT_VALUE)
         val option5  = wrapper.getString(PREFERENCE_CAMERA_OPTION5_1, PREFERENCE_CAMERA_OPTION5_1_DEFAULT_VALUE)
 
-        return (CameraPreference(wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_1, PREFERENCE_CAMERA_OPTION2_1, PREFERENCE_CAMERA_OPTION3_1, PREFERENCE_CAMERA_OPTION4_1, PREFERENCE_CAMERA_OPTION5_1)))
+        return (CameraPreference(1, wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_1, PREFERENCE_CAMERA_OPTION2_1, PREFERENCE_CAMERA_OPTION3_1, PREFERENCE_CAMERA_OPTION4_1, PREFERENCE_CAMERA_OPTION5_1)))
     }
 
     private fun setupCameraPreference2(wrapper : PreferenceAccessWrapper) : ICameraPreferenceProvider
@@ -178,7 +178,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         val option4  = wrapper.getString(PREFERENCE_CAMERA_OPTION4_2, PREFERENCE_CAMERA_OPTION4_2_DEFAULT_VALUE)
         val option5  = wrapper.getString(PREFERENCE_CAMERA_OPTION5_2, PREFERENCE_CAMERA_OPTION5_2_DEFAULT_VALUE)
 
-        return (CameraPreference(wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_2, PREFERENCE_CAMERA_OPTION2_2, PREFERENCE_CAMERA_OPTION3_2, PREFERENCE_CAMERA_OPTION4_2, PREFERENCE_CAMERA_OPTION5_2)))
+        return (CameraPreference(2, wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_2, PREFERENCE_CAMERA_OPTION2_2, PREFERENCE_CAMERA_OPTION3_2, PREFERENCE_CAMERA_OPTION4_2, PREFERENCE_CAMERA_OPTION5_2)))
     }
 
     private fun setupCameraPreference3(wrapper : PreferenceAccessWrapper) : ICameraPreferenceProvider
@@ -191,7 +191,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         val option4  = wrapper.getString(PREFERENCE_CAMERA_OPTION4_3, PREFERENCE_CAMERA_OPTION4_3_DEFAULT_VALUE)
         val option5  = wrapper.getString(PREFERENCE_CAMERA_OPTION5_3, PREFERENCE_CAMERA_OPTION5_3_DEFAULT_VALUE)
 
-        return (CameraPreference(wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_3, PREFERENCE_CAMERA_OPTION2_3, PREFERENCE_CAMERA_OPTION3_3, PREFERENCE_CAMERA_OPTION4_3, PREFERENCE_CAMERA_OPTION5_3)))
+        return (CameraPreference(3, wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_3, PREFERENCE_CAMERA_OPTION2_3, PREFERENCE_CAMERA_OPTION3_3, PREFERENCE_CAMERA_OPTION4_3, PREFERENCE_CAMERA_OPTION5_3)))
     }
 
     private fun setupCameraPreference4(wrapper : PreferenceAccessWrapper) : ICameraPreferenceProvider
@@ -204,7 +204,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         val option4  = wrapper.getString(PREFERENCE_CAMERA_OPTION4_4, PREFERENCE_CAMERA_OPTION4_4_DEFAULT_VALUE)
         val option5  = wrapper.getString(PREFERENCE_CAMERA_OPTION5_4, PREFERENCE_CAMERA_OPTION5_4_DEFAULT_VALUE)
 
-        return (CameraPreference(wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_4, PREFERENCE_CAMERA_OPTION2_4, PREFERENCE_CAMERA_OPTION3_4, PREFERENCE_CAMERA_OPTION4_4, PREFERENCE_CAMERA_OPTION5_4)))
+        return (CameraPreference(4, wrapper, method, false, sequence, option1, option2, option3, option4, option5, CameraPreferenceKeySet(PREFERENCE_CAMERA_OPTION1_4, PREFERENCE_CAMERA_OPTION2_4, PREFERENCE_CAMERA_OPTION3_4, PREFERENCE_CAMERA_OPTION4_4, PREFERENCE_CAMERA_OPTION5_4)))
     }
 
     private fun prepareThetaCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl