eventObserver = SonyCameraEventObserver.newInstance(context, sonyCameraApi, sonyCameraStatus)
liveViewControl = SonyLiveViewControl(context, informationNotify, liveViewListener, sonyCameraApi)
zoomControl.setCameraApi(sonyCameraApi)
+ sonyCameraStatus.setCameraApi(sonyCameraApi)
if (::focusControl.isInitialized)
{
focusControl.setCameraApi(sonyCameraApi)
import org.json.JSONArray
import org.json.JSONObject
-
interface ISonyCameraApi
{
fun getAvailableApiList(): JSONObject?
service: String,
method: String,
params: JSONArray,
- version: String
+ version: String,
+ timeoutMs: Int = -1
): JSONObject?
fun getDdUrl(): String?
return null
}
- override fun callGenericSonyApiMethod(
- service: String,
- method: String,
- params: JSONArray,
- version: String
- ): JSONObject
+ override fun callGenericSonyApiMethod(service: String, method: String, params: JSONArray, version: String, timeoutMs: Int): JSONObject
{
- return communicateJSON(service, method, params, version, -1)
+ return communicateJSON(service, method, params, version, timeoutMs)
}
override fun getDdUrl(): String
companion object
{
private val TAG = SonyCameraApi::class.java.simpleName
- private const val FULL_LOG = true
+ private const val FULL_LOG = false
}
}
import java.util.*
import kotlin.collections.ArrayList
-
class ReplyJsonParser(private val uiHandler: Handler) : ICameraStatusHolder
{
private var cameraStatus = ""
{
val replyJson = remoteApi.getEvent(eventVersion, longPolling) ?: JSONObject()
val errorCode = findErrorCode(replyJson)
- Log.d(TAG, "getEvent errorCode: $errorCode")
+ if (errorCode != 0)
+ {
+ Log.d(TAG, "getEvent errorCode: $errorCode")
+ }
when (errorCode)
{
0 -> { }
import android.graphics.Color
import android.util.Log
import jp.osdn.gokigen.gokigenassets.camera.interfaces.*
+import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
import org.json.JSONObject
import java.lang.Exception
class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener, ISonyStatusReceiver
{
+ private val statusCandidates = SonyStatusCandidates()
+
private var currentExposureMode = ""
private var currentShootMode = ""
private var currentExposureCompensation = ""
private var currentWhiteBalanceMode = ""
private var currentCameraStatus = ""
+ fun setCameraApi(sonyCameraApi: ISonyCameraApi)
+ {
+ statusCandidates.setCameraApi(sonyCameraApi)
+ }
private var jsonObject : JSONObject
init
override fun setStatus(key: String, value: String)
{
-
+ when (key) {
+ ICameraStatus.TAKE_MODE -> statusCandidates.setTakeMode(value)
+ ICameraStatus.SHUTTER_SPEED -> statusCandidates.setShutterSpeed(value)
+ ICameraStatus.APERTURE -> statusCandidates.setAperture(value)
+ ICameraStatus.EXPREV -> statusCandidates.setExpRev(value)
+ ICameraStatus.CAPTURE_MODE -> statusCandidates.setCaptureMode(value)
+ ICameraStatus.ISO_SENSITIVITY -> statusCandidates.setIsoSensitivity(value)
+ ICameraStatus.WHITE_BALANCE -> statusCandidates.setWhiteBalance(value)
+ ICameraStatus.AE -> statusCandidates.setMeteringMode(value)
+ ICameraStatus.EFFECT -> statusCandidates.setPictureEffect(value)
+ ICameraStatus.BATTERY -> statusCandidates.setRemainBattery(value)
+ ICameraStatus.TORCH_MODE -> statusCandidates.setTorchMode(value)
+ else -> { return }
+ }
}
override fun getStatusList(key: String): List<String?>
{
- return (ArrayList())
+ val statusList : List<String?> = (when (key) {
+ ICameraStatus.TAKE_MODE -> statusCandidates.getAvailableTakeMode()
+ ICameraStatus.SHUTTER_SPEED -> statusCandidates.getAvailableShutterSpeed()
+ ICameraStatus.APERTURE -> statusCandidates.getAvailableAperture()
+ ICameraStatus.EXPREV -> statusCandidates.getAvailableExpRev()
+ ICameraStatus.CAPTURE_MODE -> statusCandidates.getAvailableCaptureMode()
+ ICameraStatus.ISO_SENSITIVITY -> statusCandidates.getAvailableIsoSensitivity()
+ ICameraStatus.WHITE_BALANCE -> statusCandidates.getAvailableWhiteBalance()
+ ICameraStatus.AE -> statusCandidates.getAvailableMeteringMode()
+ ICameraStatus.EFFECT -> statusCandidates.getAvailablePictureEffect()
+ ICameraStatus.BATTERY -> statusCandidates.getAvailableRemainBattery()
+ ICameraStatus.TORCH_MODE -> statusCandidates.getAvailableTorchMode()
+ else -> { ArrayList() }
+ })
+ return (statusList)
}
override fun getStatus(key: String): String
{
this.jsonObject = jsonObject
- currentCameraStatus = parseEventStatus(jsonObject, "cameraStatus", "cameraStatus", 1)
- currentExposureMode = parseEventStatus(jsonObject, "exposureMode", "currentExposureMode", 18)
- currentShootMode = parseEventStatus(jsonObject, "shootMode", "currentShootMode",21)
- currentExposureCompensation = parseEventStatus(jsonObject, "exposureCompensation", "currentExposureCompensation",25)
-
- currentFlashMode = parseEventStatus(jsonObject, "flashMode", "currentFlashMode",26)
- currentFNumber = parseEventStatus(jsonObject, "fNumber", "currentFNumber",27)
- currentFocusMode = parseEventStatus(jsonObject, "focusMode", "currentFocusMode",28)
+ currentCameraStatus = parseEventStatus(currentCameraStatus, jsonObject, "cameraStatus", "cameraStatus", 1)
+ currentExposureMode = parseEventStatus(currentExposureMode, jsonObject, "exposureMode", "currentExposureMode", 18)
+ currentShootMode = parseEventStatus(currentShootMode, jsonObject, "shootMode", "currentShootMode",21)
+ currentExposureCompensation = parseEventStatus(currentExposureCompensation, jsonObject, "exposureCompensation", "currentExposureCompensation",25)
- currentIsoSpeedRate = parseEventStatus(jsonObject, "isoSpeedRate", "currentIsoSpeedRate", 29)
- currentShutterSpeed = parseEventStatus(jsonObject, "shutterSpeed", "currentShutterSpeed", 32)
- currentWhiteBalanceMode = parseEventStatus(jsonObject, "whiteBalanceMode", "currentWhiteBalanceMode", 33)
+ currentFlashMode = parseEventStatus(currentFlashMode, jsonObject, "flashMode", "currentFlashMode",26)
+ currentFNumber = parseEventStatus(currentFNumber, jsonObject, "fNumber", "currentFNumber",27)
+ currentFocusMode = parseEventStatus(currentFocusMode, jsonObject, "focusMode", "currentFocusMode",28)
+ currentIsoSpeedRate = parseEventStatus(currentIsoSpeedRate, jsonObject, "isoSpeedRate", "currentIsoSpeedRate", 29)
+ currentShutterSpeed = parseEventStatus(currentShutterSpeed, jsonObject, "shutterSpeed", "currentShutterSpeed", 32)
+ currentWhiteBalanceMode = parseEventStatus(currentWhiteBalanceMode, jsonObject, "whiteBalance", "currentWhiteBalanceMode", 33)
}
- private fun parseEventStatus(replyJson: JSONObject, item: String, key: String, indexOfCameraStatus: Int): String
+ private fun parseEventStatus(currentStatus: String, replyJson: JSONObject, item: String, key: String, indexOfCameraStatus: Int): String
{
- var eventStatus = ""
+ var eventStatus = currentStatus
try
{
val resultsObj = replyJson.getJSONArray("result")
}
else
{
- Log.w(TAG, "Event reply: Illegal Index ($indexOfCameraStatus: $key) $type")
+ Log.w(TAG, "Event reply: Illegal Index ($indexOfCameraStatus: $key) $type : $cameraStatusObj")
}
}
}
--- /dev/null
+package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener
+
+import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi
+import org.json.JSONArray
+
+class SonyStatusCandidates()
+{
+ private lateinit var cameraApi: ISonyCameraApi
+ fun setCameraApi(sonyCameraApi: ISonyCameraApi)
+ {
+ cameraApi = sonyCameraApi
+ }
+
+ fun getAvailableTakeMode(): List<String?>
+ {
+ val takeModeList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableExposureMode", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val takeModeArray = resultsObj.getJSONArray(1)
+ //Log.v(TAG, " getAvailableTakeMode() : $takeModeArray")
+ for (index in 0 until takeModeArray.length())
+ {
+ val itemString = takeModeArray.getString(index)
+ takeModeList.add(itemString)
+ //Log.v(TAG, " --- $itemString ($index) ---")
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (takeModeList)
+ }
+
+ fun getAvailableShutterSpeed(): List<String?>
+ {
+ val shutterSpeedList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableShutterSpeed", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ shutterSpeedList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (shutterSpeedList)
+ }
+
+ fun getAvailableAperture(): List<String?>
+ {
+ val apertureList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableFNumber", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ apertureList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (apertureList)
+ }
+
+ fun getAvailableExpRev(): List<String?>
+ {
+/*
+ val apertureList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableExposureCompensation", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ apertureList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+*/
+ return (ArrayList())
+ }
+
+ fun getAvailableCaptureMode(): List<String?>
+ {
+ val shootModeList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableShootMode", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ shootModeList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (shootModeList)
+ }
+
+ fun getAvailableIsoSensitivity(): List<String?>
+ {
+ val isoList : ArrayList<String> = ArrayList()
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableIsoSpeedRate", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ isoList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+ return (isoList)
+ }
+
+ fun getAvailableWhiteBalance(): List<String?>
+ {
+ val whiteBalanceList : ArrayList<String> = ArrayList()
+/*
+ try
+ {
+ if (::cameraApi.isInitialized)
+ {
+ val replyJson = cameraApi.callGenericSonyApiMethod("camera", "getAvailableWhiteBalance", JSONArray(), "1.0")
+ val resultsObj = replyJson?.getJSONArray("result")
+ if (resultsObj?.isNull(1) == false)
+ {
+ val availableItemArray = resultsObj.getJSONArray(1)
+ for (index in 0 until availableItemArray.length())
+ {
+ val itemString = availableItemArray.getString(index)
+ whiteBalanceList.add(itemString)
+ }
+ }
+ }
+ }
+ catch (e: Exception)
+ {
+ e.printStackTrace()
+ }
+*/
+ return (whiteBalanceList)
+ }
+
+ fun getAvailableMeteringMode(): List<String?>
+ {
+ return (ArrayList())
+ }
+
+ fun getAvailablePictureEffect(): List<String?>
+ {
+ return (ArrayList())
+ }
+
+ fun getAvailableRemainBattery(): List<String?>
+ {
+ return (ArrayList())
+ }
+
+ fun getAvailableTorchMode(): List<String?>
+ {
+ return (ArrayList())
+ }
+
+ fun setTakeMode(value: String) { }
+ fun setShutterSpeed(value: String) { }
+ fun setAperture(value: String) { }
+ fun setExpRev(value: String) { }
+ fun setCaptureMode(value: String) { }
+ fun setIsoSensitivity(value: String) { }
+ fun setWhiteBalance(value: String) { }
+ fun setMeteringMode(value: String) { }
+ fun setPictureEffect(value: String) { }
+ fun setRemainBattery(value: String) { }
+ fun setTorchMode(value: String) { }
+
+ companion object
+ {
+ private val TAG = SonyStatusCandidates::class.java.simpleName
+ }
+}