以前GearLiveのセンサー一覧を調べましたが、その中で使ったことがないセンサーを試しに動かしてみました。
<動かしてみたセンサー>
・Step Detect Sensor
・Step Counter Sensor
・Significant Motion Sensor
・Tilt Wake Sensor
・Heart Rate Sensor
サンプルソフト
センサーから取得した値をそのまま画面に表示するだけのプログラムです。
全体のソースコードはこちら
ポイントだけ抜粋すると。
・Tilt Wake SensorはSensor.TYPE_**の定義がないので、getSensorListで取得した値をそのままぶっこみました。
Sensor tilt = mSensorManager.getDefaultSensor(65536);
・HeartRate SensorはSensor.TYPE_HEART_RATE(21)とgetSensorListで取得できる値(65562)をそれぞれ試してみました。
Sensor heart = mSensorManager.getDefaultSensor(65562); //Sensor heart = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
AndroidManifest.xmlに忘れずに下記を追加。
<uses-permission android:name="android.permission.BODY_SENSORS" />
動かした結果
Step Detect Sensor
Wear端末を持って歩いてみると、歩くごとにonSensorChangedが呼ばれました。
ただ、やっぱり精度はあまり良くない模様(反応しなかったり、しすぎたりする)。
あと、若干通知が遅れることがあり、止まってからも1,2回通知される場合もありました。
SensorEvent.values[0]は常に1.0になっている。
Step Counter Sensor
こちらはWear端末リブートからの累計歩数です。
Setp Detect Sensorと同じタイミングでカウントアップされていきました。
SensorEvent.values[0]はカウント値。
Significant Motion Sensor
アプリがスタート(レジューム)した後、何らかの加速度を検知するとonTriggerが呼ばれるようでした。
TriggerEvent.values[0]は、常に1.0になってる。
※実際動かしてもドキュメント見ても正直動きがよくわからないセンサーです。
Tilt Wake Sensor
Wear端末のある特定の傾きを検知してくれます。
onSensorChangedが呼ばれるのは、
・Wear端末が真上を向く角度から自分側に45度の範囲の外から内に入った場合
・Wear端末が真下を向いた場合
でした。
※説明しずらいですが、ざっくり言うと腕に巻いたWear端末の画面を顔に向けた時と真下に向けた時(寝ながら画面見る時かな?)です。
SensorEvent.values[0]は±3.0以内ぐらいの小数値なのですが、なんのあたいかはさっぱり検討がつきません。
Heart Rate Sensor
脈拍が読み取れるとonSensorChangedが呼ばれるみたいです。
常時Wear端末の後ろに付いてる緑色のLEDが光ります。そこに、何か押し当てると脈拍を読み取るみたいです。
SensorEvent.values[0]は脈拍数。
<Sensor.TYPE_HEART_RATEと65562の違い>
どちらも脈拍計は動きました。
とくに違うところもないような気がしました。
あとがき
いくつかWear端末についてるセンサーを実際に動かしてみました。
やっぱり使って面白そうなのは脈拍計ですね。
脈拍センサーは常時モニタリングできるみたいなんで、ありきたりなところでは、うそ発見器やラブ診断的なお遊びアプリは簡単に作れそうです。
ではでは~。