OSDN Git Service

ボタンを押したときの処理を軽く作ってみる。
authorMRSa <mrsa@myad.jp>
Sat, 13 Feb 2021 14:38:09 +0000 (23:38 +0900)
committerMRSa <mrsa@myad.jp>
Sat, 13 Feb 2021 14:38:09 +0000 (23:38 +0900)
app/src/main/java/jp/osdn/gokigen/thetathoughtshutter/MainActivity.kt
app/src/main/java/jp/osdn/gokigen/thetathoughtshutter/MyApplicationStatus.kt

index 1f7321e..bb4035d 100644 (file)
@@ -9,11 +9,12 @@ import com.theta360.pluginlibrary.values.LedColor
 import com.theta360.pluginlibrary.values.LedTarget
 import jp.osdn.gokigen.thetathoughtshutter.R.layout
 import jp.osdn.gokigen.thetathoughtshutter.theta.ThetaHardwareControl
+import java.lang.Exception
 
 class MainActivity : PluginActivity()
 {
     private val thetaHardwareControl = ThetaHardwareControl(this)
-    private var applicationStatus : MyApplicationStatus = MyApplicationStatus.Undefined
+    private val applicationStatus : MyApplicationStatus = MyApplicationStatus()
 
     override fun onCreate(savedInstanceState: Bundle?)
     {
@@ -25,24 +26,78 @@ class MainActivity : PluginActivity()
         setKeyCallback(object : KeyCallback {
             override fun onKeyDown(keyCode: Int, event: KeyEvent?)
             {
-                if (keyCode == KeyReceiver.KEYCODE_CAMERA)
+/*
+                if (keyCode == KeyReceiver.KEYCODE_MEDIA_RECORD) // Modeボタン
+                {
+
+                }
+                if (keyCode == KeyReceiver.KEYCODE_CAMERA)   // Shutterボタン
                 {
 
                 }
+                if (keyCode == KeyReceiver.KEYCODE_FUNCTION)   // Fnボタン (Z1のみ)
+                {
+
+                }
+                if (keyCode == KeyReceiver.KEYCODE_WLAN_ON_OFF) // Wirelessボタン
+                {
+
+                }
+*/
             }
 
             override fun onKeyUp(keyCode: Int, event: KeyEvent?)
             {
-                notificationLedBlink(LedTarget.LED3, LedColor.BLUE, 1000)
-                //notificationLedBlink(LedTarget.LED4, LedColor.CYAN, 1000)
+                if (keyCode == KeyReceiver.KEYCODE_CAMERA)   // Shutterボタン
+                {
+                    if (applicationStatus.status == MyApplicationStatus.Status.Connected)
+                    {
+                        // EEGからの情報を取得して撮影する
+                        applicationStatus.status = MyApplicationStatus.Status.Scanning
+                    }
+                    else if (applicationStatus.status == MyApplicationStatus.Status.Scanning)
+                    {
+                        // スタンバイ状態に戻す
+                        applicationStatus.status = MyApplicationStatus.Status.Connected
+                    }
+                }
+                if (keyCode == KeyReceiver.KEYCODE_WLAN_ON_OFF) // Wirelessボタン
+                {
+                    if (applicationStatus.status == MyApplicationStatus.Status.Initialized)
+                    {
+                        // Bluetooth SPPで EEGに接続する
+                        applicationStatus.status = MyApplicationStatus.Status.Searching
+                    }
+                }
+/*
+                if (keyCode == KeyReceiver.KEYCODE_MEDIA_RECORD) // Modeボタン
+                {
+
+                }
+                if (keyCode == KeyReceiver.KEYCODE_FUNCTION)   // Fnボタン (Z1のみ)
+                {
+
+                }
+*/
+                updateStatus(applicationStatus.status)
             }
 
             override fun onKeyLongPress(keyCode: Int, event: KeyEvent?)
             {
                 if (keyCode == KeyReceiver.KEYCODE_MEDIA_RECORD) // Modeボタン
                 {
-
+                    if (applicationStatus.status == MyApplicationStatus.Status.Searching)
+                    {
+                        // ダミー処理 (EEG接続完了)
+                        applicationStatus.status = MyApplicationStatus.Status.Connected
+                    }
+                    else
+                    {
+                        // ダミー処理 (初期化完了)
+                        applicationStatus.status = MyApplicationStatus.Status.Initialized
+                    }
                 }
+/*
                 if (keyCode == KeyReceiver.KEYCODE_CAMERA)   // Shutterボタン
                 {
 
@@ -55,10 +110,49 @@ class MainActivity : PluginActivity()
                 {
 
                 }
+*/
+                updateStatus(applicationStatus.status)
             }
         })
     }
 
+    private fun updateStatus(currentStatus : MyApplicationStatus.Status)
+    {
+        try
+        {
+            when (currentStatus) {
+                MyApplicationStatus.Status.Initialized -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 1500, LedColor.BLUE)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 0, LedColor.BLUE)
+                }
+                MyApplicationStatus.Status.Searching -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 250, LedColor.BLUE)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 0, LedColor.BLUE)
+                }
+                MyApplicationStatus.Status.Connected -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 1, LedColor.BLUE)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 0, LedColor.BLUE)
+                }
+                MyApplicationStatus.Status.Scanning -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 1, LedColor.BLUE)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 1, LedColor.BLUE)
+                }
+                MyApplicationStatus.Status.FailedInitialize -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 250, LedColor.RED)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 0, LedColor.BLUE)
+                }
+                else -> {
+                    thetaHardwareControl.controlLED(LedTarget.LED3, 0, LedColor.BLUE)
+                    thetaHardwareControl.controlLED(LedTarget.LED7, 0, LedColor.BLUE)
+                }
+            }
+        }
+        catch (e : Exception)
+        {
+            e.printStackTrace()
+        }
+    }
+
     override fun onResume()
     {
         super.onResume()
index 1bb26dc..ba6757b 100644 (file)
@@ -1,11 +1,16 @@
 package jp.osdn.gokigen.thetathoughtshutter
 
-enum class MyApplicationStatus
+data class MyApplicationStatus(val defaultStatus : Status = Status.Undefined)
 {
-    Undefined,
-    FailedInitialize,
-    Initialized,
-    Searching,
-    Connected,
-    Scanning,
+    var status: Status = Status.Undefined
+
+    enum class Status
+    {
+        Undefined,
+        FailedInitialize,
+        Initialized,
+        Searching,
+        Connected,
+        Scanning,
+    }
 }