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
{
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" でもエラーが発生した場合は、モニタ終了
}
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)
{
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
private fun getAperture() : String
{
+ if (currentFNumber.length > 1)
+ {
+ return ("F$currentFNumber")
+ }
return (currentFNumber)
}
private fun getIsoSensitivity() : String
{
+ if (currentIsoSpeedRate.length > 1)
+ {
+ return ("ISO:$currentIsoSpeedRate")
+ }
return (currentIsoSpeedRate)
}
+
private fun getWhiteBalance() : String
{
return (currentWhiteBalanceMode)
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
return (currentCameraStatus)
}
- override fun onApiListModified(apis: List<String?>?) {
+ override fun onApiListModified(apis: List<String?>?)
+ {
//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")
}
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
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")
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
fun getAvailableWhiteBalance(): List<String?>
{
val whiteBalanceList : ArrayList<String> = ArrayList()
-/*
try
{
if (::cameraApi.isInitialized)
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)
}
}
{
e.printStackTrace()
}
-*/
return (whiteBalanceList)
}
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
{