From: MRSa Date: Sun, 15 Aug 2021 14:00:56 +0000 (+0900) Subject: SONY系ステータスの設定変更も搭載。(残りは Exposure compensation) X-Git-Url: http://git.osdn.net/view?p=gokigen%2Fmangle.git;a=commitdiff_plain;h=db1b0d7db58efb8c24905ce35a1596651f979b5e SONY系ステータスの設定変更も搭載。(残りは Exposure compensation) --- diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyCameraEventObserver.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyCameraEventObserver.kt index 6f0e621..0272848 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyCameraEventObserver.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyCameraEventObserver.kt @@ -16,7 +16,7 @@ class SonyCameraEventObserver(context: Context, private val remoteApi: ISonyCame private val replyParser = ReplyJsonParser(Handler(context.mainLooper)) private var isEventMonitoring = false private var isActive = false - private var eventVersion = "1.1" // 初期値を "1.0" から "1.1" に更新 + private var eventVersion = "1.3" // 初期値を "1.3" に更新 override fun start(): Boolean { @@ -50,13 +50,29 @@ class SonyCameraEventObserver(context: Context, private val remoteApi: ISonyCame when (errorCode) { 0 -> { } - 1, 12 -> { - if (eventVersion == "1.1") + 1, 12, 14, 15 -> { + if (eventVersion == "1.3") + { + // "1.3" でエラーが発生した時には "1.2" にダウングレードして再実行 + eventVersion = "1.2" + Log.v(TAG, " === NOT SUPPORT EVENT v1.3, TRY v1.2") + continue@MONITORLOOP + } + else if (eventVersion == "1.2") + { + // "1.2" でエラーが発生した時には "1.1" にダウングレードして再実行 + eventVersion = "1.1" + Log.v(TAG, " === NOT SUPPORT EVENT v1.2, TRY v1.1") + continue@MONITORLOOP + } + else if (eventVersion == "1.1") { // "1.1" でエラーが発生した時には "1.0" にダウングレードして再実行 eventVersion = "1.0" + Log.v(TAG, " === NOT SUPPORT EVENT v1.1, TRY v1.0") continue@MONITORLOOP } + Log.v(TAG, " === NOT SUPPORT EVENT v1.0... ABORTED.") replyParser.catchResponseError() break@MONITORLOOP // "1.0" でもエラーが発生した場合は、モニタ終了 } diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatus.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatus.kt index 0fe6504..6539df3 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatus.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatus.kt @@ -21,6 +21,10 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener private var currentShutterSpeed = "" private var currentWhiteBalanceMode = "" private var currentCameraStatus = "" + private var currentPictureEffect = "" + private var currentMeteringMode = "" + private var currentRemainBattery = "" + private var currentRemainBatteryPercent = 0.0 fun setCameraApi(sonyCameraApi: ISonyCameraApi) { @@ -98,7 +102,23 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener private fun getRemainBatteryColor() : Int { - return (Color.WHITE) + var color = Color.WHITE + try + { + if (currentRemainBatteryPercent < 30) + { + color = Color.RED + } + else if (currentRemainBatteryPercent < 50) + { + color = Color.YELLOW + } + } + catch (e : Exception) + { + e.printStackTrace() + } + return (color) } private fun getTakeMode() : String @@ -113,6 +133,10 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener private fun getAperture() : String { + if (currentFNumber.length > 1) + { + return ("F$currentFNumber") + } return (currentFNumber) } @@ -128,8 +152,13 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener private fun getIsoSensitivity() : String { + if (currentIsoSpeedRate.length > 1) + { + return ("ISO:$currentIsoSpeedRate") + } return (currentIsoSpeedRate) } + private fun getWhiteBalance() : String { return (currentWhiteBalanceMode) @@ -137,17 +166,17 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener private fun getMeteringMode() : String { - return "" + return (currentMeteringMode) } private fun getPictureEffect() : String { - return "" + return (currentPictureEffect) } private fun getRemainBattery() : String { - return "" + return (currentRemainBattery) } private fun getTorchMode() : String @@ -155,35 +184,43 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener return (currentCameraStatus) } - override fun onApiListModified(apis: List?) { + override fun onApiListModified(apis: List?) + { //TODO("Not yet implemented") } - override fun onCameraStatusChanged(status: String?) { + override fun onCameraStatusChanged(status: String?) + { //TODO("Not yet implemented") } - override fun onLiveviewStatusChanged(status: Boolean) { + override fun onLiveviewStatusChanged(status: Boolean) + { //TODO("Not yet implemented") } - override fun onShootModeChanged(shootMode: String?) { + override fun onShootModeChanged(shootMode: String?) + { //TODO("Not yet implemented") } - override fun onZoomPositionChanged(zoomPosition: Int) { + override fun onZoomPositionChanged(zoomPosition: Int) + { //TODO("Not yet implemented") } - override fun onStorageIdChanged(storageId: String?) { + override fun onStorageIdChanged(storageId: String?) + { //TODO("Not yet implemented") } - override fun onFocusStatusChanged(focusStatus: String?) { + override fun onFocusStatusChanged(focusStatus: String?) + { //TODO("Not yet implemented") } - override fun onResponseError() { + override fun onResponseError() + { //TODO("Not yet implemented") } @@ -203,6 +240,50 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener currentIsoSpeedRate = parseEventStatus(currentIsoSpeedRate, jsonObject, "isoSpeedRate", "currentIsoSpeedRate", 29) currentShutterSpeed = parseEventStatus(currentShutterSpeed, jsonObject, "shutterSpeed", "currentShutterSpeed", 32) currentWhiteBalanceMode = parseEventStatus(currentWhiteBalanceMode, jsonObject, "whiteBalance", "currentWhiteBalanceMode", 33) + currentRemainBattery = parseBatteryInfo(currentRemainBattery, jsonObject) + } + + private fun parseBatteryInfo(currentStatus: String, replyJson: JSONObject) : String + { + val indexOfCameraStatus = 56 + var eventStatus = currentStatus + try + { + val resultsObj = replyJson.getJSONArray("result") + if ((resultsObj.length() > indexOfCameraStatus)&&(!resultsObj.isNull(indexOfCameraStatus))) + { + val cameraStatusObj = resultsObj.getJSONObject(indexOfCameraStatus) + val batteryInfoObj = cameraStatusObj.getJSONArray("batteryInfo").getJSONObject(0) + val type = cameraStatusObj.getString("type") + if ("batteryInfo" == type) + { + Log.v(TAG, " =====> $batteryInfoObj") + //eventStatus = cameraStatusObj.getString(key) + + val numerator = batteryInfoObj.getInt("levelNumer") + val denominator = batteryInfoObj.getInt("levelDenom") + if ((numerator <= 0)||(denominator <= 0)) + { + eventStatus = "Batt.: ???%" + currentRemainBatteryPercent = 0.0 + } + else + { + currentRemainBatteryPercent = denominator.toDouble() / numerator.toDouble() * 100.0 + eventStatus = "Batt.: " + String.format("%2.0f", currentRemainBatteryPercent) + "%" + } + } + else + { + Log.w(TAG, "Event reply: Illegal Index ($indexOfCameraStatus:) $type : $cameraStatusObj") + } + } + } + catch (e: Exception) + { + e.printStackTrace() + } + return (eventStatus) } private fun parseEventStatus(currentStatus: String, replyJson: JSONObject, item: String, key: String, indexOfCameraStatus: Int): String @@ -211,7 +292,7 @@ class SonyStatus(jsonObject : JSONObject) : ICameraStatus, ICameraChangeListener try { val resultsObj = replyJson.getJSONArray("result") - if (!resultsObj.isNull(indexOfCameraStatus)) + if ((resultsObj.length() > indexOfCameraStatus)&&(!resultsObj.isNull(indexOfCameraStatus))) { val cameraStatusObj = resultsObj.getJSONObject(indexOfCameraStatus) val type = cameraStatusObj.getString("type") diff --git a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatusCandidates.kt b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatusCandidates.kt index 431a5c8..36ad961 100644 --- a/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatusCandidates.kt +++ b/app/src/main/java/jp/osdn/gokigen/gokigenassets/camera/sony/wrapper/eventlistener/SonyStatusCandidates.kt @@ -1,5 +1,6 @@ package jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.eventlistener +import android.util.Log import jp.osdn.gokigen.gokigenassets.camera.sony.wrapper.ISonyCameraApi import org.json.JSONArray @@ -180,7 +181,6 @@ class SonyStatusCandidates() fun getAvailableWhiteBalance(): List { val whiteBalanceList : ArrayList = ArrayList() -/* try { if (::cameraApi.isInitialized) @@ -192,7 +192,7 @@ class SonyStatusCandidates() val availableItemArray = resultsObj.getJSONArray(1) for (index in 0 until availableItemArray.length()) { - val itemString = availableItemArray.getString(index) + val itemString = availableItemArray.getJSONObject(index).getString("whiteBalanceMode") whiteBalanceList.add(itemString) } } @@ -202,7 +202,6 @@ class SonyStatusCandidates() { e.printStackTrace() } -*/ return (whiteBalanceList) } @@ -226,17 +225,167 @@ class SonyStatusCandidates() 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) { } + fun setTakeMode(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setExposureMode", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(exposureMode) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setShutterSpeed(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setShutterSpeed", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(shutterSpeed) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setAperture(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setFNumber", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(aperture) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setExpRev(value: String) + { + try + { +/* + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setxxx", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(aperture) : $replyJson") + } +*/ + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setCaptureMode(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setShootMode", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(shootMode) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setIsoSensitivity(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setIsoSpeedRate", JSONArray().put(value), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(ISO Sensitivity) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setWhiteBalance(value: String) + { + try + { + val replyJson = cameraApi.callGenericSonyApiMethod("camera", "setWhiteBalance", JSONArray().put(value).put(false).put(2500), "1.0") + if (cameraApi.isErrorReply(replyJson)) + { + Log.v(TAG, " REPLY ERROR(White Balance) : $replyJson") + } + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setMeteringMode(value: String) + { + try + { + Log.v(TAG, "setMeteringMode($value)") + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setPictureEffect(value: String) + { + try + { + Log.v(TAG, "setPictureEffect($value)") + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setRemainBattery(value: String) + { + try + { + Log.v(TAG, "setTorchMode($value)") + } + catch (e: Exception) + { + e.printStackTrace() + } + } + + fun setTorchMode(value: String) + { + try + { + Log.v(TAG, "setTorchMode($value)") + } + catch (e: Exception) + { + e.printStackTrace() + } + } companion object {