1 package jp.osdn.gokigen.thetathoughtshutter.theta.operation
3 import android.util.Log
4 import jp.osdn.gokigen.thetathoughtshutter.utils.SimpleHttpClient
5 import org.json.JSONObject
7 class ThetaSingleShotControl(private val executeUrl : String = "http://192.168.1.1")
9 private val httpClient = SimpleHttpClient()
17 Log.v(TAG, "singleShot()")
23 val shootUrl = "${executeUrl}/osc/commands/execute"
24 val postData = "{\"name\":\"camera.takePicture\",\"parameters\":{\"timeout\":0}}"
25 val result: String? = httpClient.httpPostWithHeader(shootUrl, postData, null, "application/json;charset=utf-8", timeoutMs)
26 if ((result != null)&&(result.isNotEmpty()))
28 Log.v(TAG, " singleShot() : $result")
35 Log.v(TAG, "singleShot() reply is null. $shootUrl")
53 * (ただし、タイムアウト時間を超えたらライブビューを再開させる)
55 private fun waitChangeStatus()
57 val getStateUrl = "${executeUrl}/osc/state"
58 val maxWaitTimeoutMs = 9000 // 最大待ち時間 (単位: ms)
62 val result: String? = httpClient.httpPost(getStateUrl, "", timeoutMs)
63 if ((result != null)&&(result.isNotEmpty()))
65 val jsonObject = JSONObject(result)
66 fingerprint = jsonObject.getString("fingerprint")
69 Log.v(TAG, " $getStateUrl $result ($fingerprint)")
79 val firstTime = System.currentTimeMillis()
80 var currentTime = firstTime
81 while (currentTime - firstTime < maxWaitTimeoutMs)
84 val result: String? = httpClient.httpPost(getStateUrl, "", timeoutMs)
85 if ((result != null)&&(result.isNotEmpty()))
87 val jsonObject = JSONObject(result)
88 val currentFingerprint = jsonObject.getString("fingerprint")
91 // Log.v(TAG, " " + getStateUrl + " ( " + result + " ) " + "(" + fingerprint + " " + current_fingerprint + ")");
92 if (fingerprint != currentFingerprint)
97 Log.v(TAG, " ----- NOW PROCESSING ----- : $fingerprint")
100 currentTime = System.currentTimeMillis()
113 private fun waitMs(waitMs: Int)
117 Thread.sleep(waitMs.toLong())
127 private val TAG = ThetaSingleShotControl::class.java.simpleName
128 private const val timeoutMs = 6000