OSDN Git Service

単一メーカの複数デバイス対応の開始。
authorMRSa <mrsa@myad.jp>
Sat, 29 Jan 2022 15:23:22 +0000 (00:23 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 29 Jan 2022 15:23:22 +0000 (00:23 +0900)
17 files changed:
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/DummyCameraControl.kt
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/vendor/CameraControlManager.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ICameraControlManager.kt [new file with mode: 0644]
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/camerax/operation/CameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/omds/OmdsCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicCameraConnectSequence.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/connection/PanasonicCameraConnection.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/panasonic/wrapper/PanasonicCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/pixpro/PixproCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ricohpentax/RicohPentaxCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/sony/SonyCameraControl.kt
app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/theta/ThetaCameraControl.kt
app/src/main/java/jp/osdn/gokigen/mangle/scene/CameraProvider.kt
app/src/main/java/jp/osdn/gokigen/mangle/scene/SceneChanger.kt

index 0ed5372..5a8da69 100644 (file)
@@ -8,7 +8,7 @@ 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, ICameraStatus
+class DummyCameraControl(private val number : Int = 0) : ICameraControl, View.OnClickListener, View.OnLongClickListener, IKeyDown, ICameraStatus
 {
     override fun getConnectionMethod(): String { return ("NONE") }
     override fun initialize() { }
@@ -25,7 +25,7 @@ class DummyCameraControl() : ICameraControl, View.OnClickListener, View.OnLongCl
     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 getCameraNumber(): Int { return (number) }
     override fun onClick(v: View?) { }
     override fun handleKeyDown(keyCode: Int, event: KeyEvent): Boolean { return (false) }
     override fun onLongClick(v: View?): Boolean { return (false) }
index 542f250..a3001fc 100644 (file)
@@ -44,7 +44,7 @@ import jp.osdn.gokigen.gokigenassets.liveview.focusframe.IAutoFocusFrameDisplay
 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,
+class ConsolePanelControl (private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, private val number : Int = 0) : IDisplayInjector,
     ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown, IAnotherDrawer, View.OnTouchListener, ICameraStatus, IDetectPositionReceiver
 {
     private val gestureListener = ConsolePanelGestureListener(this)
@@ -110,6 +110,7 @@ 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 getCameraNumber(): Int { return (number) }
 
     override fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?)
     {
index 1595096..3f615a8 100644 (file)
@@ -25,7 +25,7 @@ import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 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, ICameraStatus
+class ExamplePictureControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, private val number : Int = 0) : IDisplayInjector, ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown, ICameraStatus
 {
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify, isDisableCache = true)
     private lateinit var refresher : ILiveViewRefresher
@@ -88,6 +88,7 @@ class ExamplePictureControl(private val context: AppCompatActivity, private val
     override fun getStatus(key: String): String { return ("") }
     override fun getStatusColor(key: String): Int { return (Color.WHITE) }
     override fun setStatus(key: String, value: String) { }
+    override fun getCameraNumber(): Int { return (number) }
 
     override fun setRefresher(id: Int, refresher: ILiveViewRefresher, imageView: ILiveView, cachePosition : ICachePositionProvider)
     {
index 221002e..cf689fa 100644 (file)
@@ -4,7 +4,6 @@ import android.view.View
 import jp.osdn.gokigen.gokigenassets.liveview.ICachePositionProvider
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveView
 import jp.osdn.gokigen.gokigenassets.liveview.ILiveViewRefresher
-import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 
 interface ICameraControl
 {
@@ -28,4 +27,5 @@ interface ICameraControl
     fun getAnotherTouchListener(id : Int = 0) : View.OnTouchListener? = null
     fun setNeighborCameraControl(camera0: ICameraControl?, camera1: ICameraControl?, camera2: ICameraControl?, camera3: ICameraControl?)
     fun getCameraStatus() : ICameraStatus?
+    fun getCameraNumber() : Int
 }
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/CameraControlManager.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/CameraControlManager.kt
new file mode 100644 (file)
index 0000000..e6df1eb
--- /dev/null
@@ -0,0 +1,65 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor
+
+import android.util.Log
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+
+class CameraControlManager : ICameraControlManager
+{
+    private val panasonicCameraDeviceMap = mutableMapOf<Int, IPanasonicCamera>()
+
+    override fun isAlreadyAssignedCameraControl(number: Int): Boolean
+    {
+        try
+        {
+            return (panasonicCameraDeviceMap.containsKey(number))
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (false)
+    }
+
+    override fun releaseCameraControl(number: Int)
+    {
+        try
+        {
+            panasonicCameraDeviceMap.remove(number)
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    override fun assignPanasonicCamera(number: Int, cameraDevice: IPanasonicCamera)
+    {
+        try
+        {
+            Log.v(TAG, "assignPanasonicCamera($number, cameraDevice)")
+            panasonicCameraDeviceMap[number] = cameraDevice
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
+    override fun isAssignedPanasonicCamera(cameraDevice: IPanasonicCamera): Boolean
+    {
+        try
+        {
+            return (panasonicCameraDeviceMap.containsValue(cameraDevice))
+        }
+        catch (e: Exception)
+        {
+            e.printStackTrace()
+        }
+        return (false)
+    }
+
+    companion object
+    {
+        private val TAG = CameraControlManager::class.java.simpleName
+    }
+}
diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ICameraControlManager.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/vendor/ICameraControlManager.kt
new file mode 100644 (file)
index 0000000..c08b7cc
--- /dev/null
@@ -0,0 +1,12 @@
+package jp.osdn.gokigen.gokigenassets.camera.vendor
+
+import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
+
+interface ICameraControlManager
+{
+    fun isAlreadyAssignedCameraControl(number: Int) : Boolean
+    fun releaseCameraControl(number: Int)
+
+    fun assignPanasonicCamera(number: Int, cameraDevice: IPanasonicCamera)
+    fun isAssignedPanasonicCamera(cameraDevice: IPanasonicCamera) : Boolean
+}
index a82758d..f8ad19b 100644 (file)
@@ -30,7 +30,7 @@ import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 import java.util.concurrent.ExecutorService
 import java.util.concurrent.Executors
 
-class CameraControl(private val activity : AppCompatActivity, private val preference: ICameraPreferenceProvider, private val vibrator : IVibrator, private val informationReceiver : IInformationReceiver) : ICameraControl
+class CameraControl(private val activity : AppCompatActivity, private val preference: ICameraPreferenceProvider, private val vibrator : IVibrator, private val informationReceiver : IInformationReceiver, private val number : Int = 0) : ICameraControl
 {
     private lateinit var cameraExecutor: ExecutorService
     private lateinit var liveViewListener : CameraLiveViewListenerImpl
@@ -332,6 +332,11 @@ class CameraControl(private val activity : AppCompatActivity, private val prefer
         return (cameraXCameraControl)
     }
 
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
+
     private fun getClickKeyDownListener(id : Int) : CameraClickKeyDownListener
     {
         try
index e3dc7b7..2a7e0f4 100644 (file)
@@ -25,7 +25,7 @@ import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 
-class OmdsCameraControl(private val context: AppCompatActivity, private val vibrator: IVibrator, informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver) : ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown, IDisplayInjector, IOmdsProtocolNotify
+class OmdsCameraControl(private val context: AppCompatActivity, private val vibrator: IVibrator, informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver, private val number : Int = 0) : ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown, IDisplayInjector, IOmdsProtocolNotify
 {
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify)
     private val statusChecker = OmdsCameraStatusWatcher()
@@ -254,6 +254,11 @@ class OmdsCameraControl(private val context: AppCompatActivity, private val vibr
         return (false)
     }
 
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
+
     override fun detectedOpcProtocol(opcProtocol: Boolean)
     {
         zoomLensControl.detectedOpcProtocol(opcProtocol)
index 7afc732..9ff2d0c 100644 (file)
@@ -14,7 +14,6 @@ import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert.Companion.
 
 class PanasonicCameraConnectSequence(private val context: AppCompatActivity, private val cameraStatusReceiver: ICameraStatusReceiver, private val cameraConnection: ICameraConnection, private val cameraHolder: IPanasonicCameraHolder, private val listener: ICameraChangeListener) : Runnable, PanasonicSsdpClient.ISearchResultCallback
 {
-
     companion object
     {
         private val TAG = PanasonicCameraConnectSequence::class.java.simpleName
index 73722ab..f7dffd4 100644 (file)
@@ -12,12 +12,14 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraConnectionStatus.C
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraStatusReceiver
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ILiveViewController
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
+import jp.osdn.gokigen.gokigenassets.camera.vendor.CameraControlManager
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ICameraControlManager
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCameraHolder
 import jp.osdn.gokigen.gokigenassets.constants.ICameraConstantConvert
 import java.util.concurrent.Executor
 import java.util.concurrent.Executors
 
-class PanasonicCameraConnection(private val context: AppCompatActivity, private val statusReceiver: ICameraStatusReceiver, private val liveViewControl: ILiveViewController, private val cameraHolder: IPanasonicCameraHolder, private val listener: ICameraChangeListener) : ICameraConnection
+class PanasonicCameraConnection(private val context: AppCompatActivity, private val statusReceiver: ICameraStatusReceiver, private val liveViewControl: ILiveViewController, private val cameraHolder: IPanasonicCameraHolder, private val listener: ICameraChangeListener, private val cameraManager: ICameraControlManager, private val number : Int) : ICameraConnection
 {
     companion object
     {
index 7230c69..5f09feb 100644 (file)
@@ -10,6 +10,8 @@ import jp.osdn.gokigen.gokigenassets.camera.interfaces.ICameraChangeListener
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCamera
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.IPanasonicCameraHolder
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.connection.PanasonicCameraConnection
+import jp.osdn.gokigen.gokigenassets.camera.vendor.CameraControlManager
+import jp.osdn.gokigen.gokigenassets.camera.vendor.ICameraControlManager
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.liveview.PanasonicLiveViewControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.PanasonicCameraCaptureControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.operation.PanasonicCameraFocusControl
@@ -28,11 +30,11 @@ import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 import jp.osdn.gokigen.gokigenassets.utils.communication.SimpleHttpClient
 
-class PanasonicCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver) : IPanasonicCameraHolder, IDisplayInjector,ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown
+class PanasonicCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver, cameraManager: ICameraControlManager, private val number: Int) : IPanasonicCameraHolder, IDisplayInjector,ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown
 {
     private val cardSlotSelector = PanasonicCardSlotSelector()
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify)
-    private val cameraConnection: PanasonicCameraConnection = PanasonicCameraConnection(context, provider, this, this, cardSlotSelector)
+    private val cameraConnection: PanasonicCameraConnection = PanasonicCameraConnection(context, provider, this, this, cardSlotSelector, cameraManager, number)
     private val storeImage = StoreImage(context, liveViewListener)
 
     private lateinit var cachePositionProvider : ICachePositionProvider
@@ -436,4 +438,9 @@ class PanasonicCameraControl(private val context: AppCompatActivity, private val
         }
         return (statusChecker.getCameraStatusConvert())
     }
+
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
 }
index 7fc5d2c..e3642d4 100644 (file)
@@ -32,7 +32,7 @@ import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 
-class PixproCameraControl(private val context: AppCompatActivity, private val vibrator: IVibrator, private val informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver) : ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown, IPixproInternalInterfaces, IPixproCommunicationNotify, IDisplayInjector
+class PixproCameraControl(private val context: AppCompatActivity, private val vibrator: IVibrator, private val informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver, private val number : Int = 0) : ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown, IPixproInternalInterfaces, IPixproCommunicationNotify, IDisplayInjector
 {
     private val statusChecker = PixproStatusChecker()
     private val liveViewListener = CameraLiveViewListenerImpl(context, informationNotify)
@@ -295,6 +295,11 @@ class PixproCameraControl(private val context: AppCompatActivity, private val vi
         }
     }
 
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
+
     private fun captureImageLiveView() : Boolean
     {
         try
index d258017..7ad49d9 100644 (file)
@@ -26,7 +26,7 @@ import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 
-class RicohPentaxCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, statusReceiver : ICameraStatusReceiver)  : ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IDisplayInjector, IUseGR2CommandNotify, IKeyDown
+class RicohPentaxCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, statusReceiver : ICameraStatusReceiver, private val number : Int = 0)  : ILiveViewController, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IDisplayInjector, IUseGR2CommandNotify, IKeyDown
 {
 
     //private final Activity activity;
@@ -337,6 +337,11 @@ class RicohPentaxCameraControl(private val context: AppCompatActivity, private v
         return (statusChecker)
     }
 
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
+
     /**
      *
      *
index fc074d8..0d58d9b 100644 (file)
@@ -33,7 +33,7 @@ import org.json.JSONObject
 import kotlin.collections.ArrayList
 
 
-class SonyCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, private val informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver) : ISonyCameraHolder,
+class SonyCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, private val informationNotify : IInformationReceiver, private val preference: ICameraPreferenceProvider, provider: ICameraStatusReceiver, private val number : Int = 0) : ISonyCameraHolder,
     IDisplayInjector, ICameraControl, View.OnClickListener, View.OnLongClickListener, ICameraShutter, IKeyDown
 {
     private val sonyCameraStatus = SonyStatus(JSONObject())
@@ -456,4 +456,9 @@ class SonyCameraControl(private val context: AppCompatActivity, private val vibr
     {
         return (sonyCameraStatus)
     }
+
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
 }
index 728d1e2..9a9cc4c 100644 (file)
@@ -29,7 +29,7 @@ import jp.osdn.gokigen.gokigenassets.preference.PreferenceAccessWrapper
 import jp.osdn.gokigen.gokigenassets.scene.IInformationReceiver
 import jp.osdn.gokigen.gokigenassets.scene.IVibrator
 
-class ThetaCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, statusReceiver : ICameraStatusReceiver) : ILiveViewController,
+class ThetaCameraControl(private val context: AppCompatActivity, private val vibrator : IVibrator, informationNotify: IInformationReceiver, private val preference: ICameraPreferenceProvider, statusReceiver : ICameraStatusReceiver, private val number : Int = 0) : ILiveViewController,
     ICameraControl, View.OnClickListener, View.OnLongClickListener, ICaptureModeReceiver, ICameraShutter, IKeyDown
 {
     private val sessionIdHolder = ThetaSessionHolder()
@@ -352,4 +352,9 @@ class ThetaCameraControl(private val context: AppCompatActivity, private val vib
     {
         return (statusWatcher)
     }
+
+    override fun getCameraNumber(): Int
+    {
+        return (number)
+    }
 }
index c4160ba..37a3e91 100644 (file)
@@ -10,6 +10,7 @@ import jp.osdn.gokigen.gokigenassets.camera.console.ConsolePanelControl
 import jp.osdn.gokigen.gokigenassets.camera.example.ExamplePictureControl
 import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
 import jp.osdn.gokigen.gokigenassets.camera.vendor.omds.OmdsCameraControl
+import jp.osdn.gokigen.gokigenassets.camera.vendor.CameraControlManager
 import jp.osdn.gokigen.gokigenassets.camera.vendor.panasonic.wrapper.PanasonicCameraControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.pixpro.PixproCameraControl
 import jp.osdn.gokigen.gokigenassets.camera.vendor.ricohpentax.RicohPentaxCameraControl
@@ -89,6 +90,7 @@ import jp.osdn.gokigen.mangle.preference.IPreferencePropertyAccessor.Companion.U
 
 class CameraProvider(private val activity: AppCompatActivity, private val informationNotify: IInformationReceiver, private val vibrator : IVibrator, private val statusReceiver : ICameraStatusReceiver)
 {
+    private val cameraManager = CameraControlManager()
     private var cameraXisCreated = false
     private var isOnlySingleCamera = false
     private lateinit var cameraXControl0: ICameraControl
@@ -96,7 +98,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
     private lateinit var cameraXControl2: ICameraControl
     private lateinit var cameraXControl3: ICameraControl
 
-    fun decideCameraControl(preferenceKey : String) : ICameraControl
+    fun decideCameraControl(preferenceKey : String, number : Int) : ICameraControl
     {
         try
         {
@@ -111,17 +113,17 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
                 else -> setupCameraPreference0(wrapper)
             }
             return (when (cameraPreference.getCameraMethod()) {
-                PREFERENCE_CAMERA_METHOD_NONE -> DummyCameraControl()
-                PREFERENCE_CAMERA_METHOD_CONSOLE -> prepareConsolePanelControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_EXAMPLE -> prepareExamplePictureControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_CAMERAX -> prepareCameraXControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_THETA -> prepareThetaCameraControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_PENTAX -> preparePentaxCameraControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_PANASONIC -> preparePanasonicCameraControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_SONY -> prepareSonyCameraControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_PIXPRO -> preparePixproCameraControl(cameraPreference)
-                PREFERENCE_CAMERA_METHOD_OMDS -> prepareOmdsCameraControl(cameraPreference)
-                else -> DummyCameraControl()
+                PREFERENCE_CAMERA_METHOD_NONE -> DummyCameraControl(number)
+                PREFERENCE_CAMERA_METHOD_CONSOLE -> prepareConsolePanelControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_EXAMPLE -> prepareExamplePictureControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_CAMERAX -> prepareCameraXControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_THETA -> prepareThetaCameraControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_PENTAX -> preparePentaxCameraControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_PANASONIC -> preparePanasonicCameraControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_SONY -> prepareSonyCameraControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_PIXPRO -> preparePixproCameraControl(cameraPreference, number)
+                PREFERENCE_CAMERA_METHOD_OMDS -> prepareOmdsCameraControl(cameraPreference, number)
+                else -> DummyCameraControl(number)
             })
         }
         catch (e : Exception)
@@ -131,11 +133,11 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         return (DummyCameraControl())
     }
 
-    fun getCameraXControl() : ICameraControl
+    fun getCameraXControl(number : Int = 0) : ICameraControl
     {
         try
         {
-            return (prepareCameraXControl(setupCameraPreference0(PreferenceAccessWrapper(activity))))
+            return (prepareCameraXControl(setupCameraPreference0(PreferenceAccessWrapper(activity)), number))
         }
         catch (e : Exception)
         {
@@ -216,47 +218,47 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
         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
+    private fun prepareThetaCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (ThetaCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (ThetaCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, number))
     }
 
-    private fun preparePentaxCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun preparePentaxCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (RicohPentaxCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (RicohPentaxCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, number))
     }
 
-    private fun preparePanasonicCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun preparePanasonicCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (PanasonicCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (PanasonicCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, cameraManager, number))
     }
 
-    private fun prepareSonyCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun prepareSonyCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (SonyCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (SonyCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, number))
     }
 
-    private fun preparePixproCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun preparePixproCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (PixproCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (PixproCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, number))
     }
 
-    private fun prepareOmdsCameraControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun prepareOmdsCameraControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (OmdsCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver))
+        return (OmdsCameraControl(activity, vibrator, informationNotify, cameraPreference, statusReceiver, number))
     }
 
-    private fun prepareConsolePanelControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun prepareConsolePanelControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (ConsolePanelControl(activity, vibrator, informationNotify, cameraPreference))
+        return (ConsolePanelControl(activity, vibrator, informationNotify, cameraPreference, number))
     }
 
-    private fun prepareExamplePictureControl(cameraPreference : ICameraPreferenceProvider) : ICameraControl
+    private fun prepareExamplePictureControl(cameraPreference : ICameraPreferenceProvider, number : Int) : ICameraControl
     {
-        return (ExamplePictureControl(activity, vibrator, informationNotify, cameraPreference))
+        return (ExamplePictureControl(activity, vibrator, informationNotify, cameraPreference, number))
     }
 
-    private fun prepareCameraXControl(cameraPreference : ICameraPreferenceProvider): ICameraControl
+    private fun prepareCameraXControl(cameraPreference : ICameraPreferenceProvider, number : Int): ICameraControl
     {
         if ((cameraXisCreated)&&(::cameraXControl0.isInitialized))
         {
@@ -287,7 +289,7 @@ class CameraProvider(private val activity: AppCompatActivity, private val inform
             }
             return (cameraXControl0)
         }
-        cameraXControl0 = CameraControl(activity, cameraPreference, vibrator, informationNotify)
+        cameraXControl0 = CameraControl(activity, cameraPreference, vibrator, informationNotify, number)
         cameraXisCreated = true
         return (cameraXControl0)
     }
index 4051c01..d5823ad 100644 (file)
@@ -50,10 +50,10 @@ class SceneChanger(private val activity: AppCompatActivity, private val informat
     {
         Log.v(TAG, " SceneChanger is created. ")
 
-        cameraControl1 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_1)
-        cameraControl2 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_2)
-        cameraControl3 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_3)
-        cameraControl4 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_4)
+        cameraControl1 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_1, 1)
+        cameraControl2 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_2, 2)
+        cameraControl3 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_3, 3)
+        cameraControl4 = cameraProvider.decideCameraControl(PREFERENCE_CAMERA_METHOD_4, 4)
 
         cameraControl1.initialize()
         cameraControl2.initialize()