Android Studio (センサーでのデータ取得)
■スマホで得られる情報について。
Bluetooth通信でやり取りするにあたって、スマホで取得できる情報について少し見ておきたい。いろいろなアプリを見てみると、傾きや加速度、位置情報などは使っているはずなので、スマホの中にいくつかのセンサーと呼べる装置が入っているはず。そこで、生成AIにいくつか挙げてもらってコードまで組んだ。
Android(Java)では、android.hardware.Sensorというライブラリから扱えるよう。挙げてもらったセンサーとしては次の8つ。あとGPSもあるけど、これは衛星からの受信のみでSensorとは別物のよう。
Sensor.TYPE_ACCELEROMETER, 加速度
Sensor.TYPE_GYROSCOPE, ジャイロ
Sensor.TYPE_LIGHT, 照度
Sensor.TYPE_PROXIMITY, 近接
Sensor.TYPE_MAGNETIC_FIELD, 地磁気
Sensor.TYPE_ROTATION_VECTOR, 回転ベクトル
Sensor.TYPE_GRAVITY, 重力
Sensor.TYPE_LINEAR_ACCELERATION, 線形加速度
Sensor.TYPE_STEP_DETECTOR, 歩行検出
下のように取得した値が表示された。値が変わるたびにTextviewを更新するコードで、スマホを少し動かすと値が頻繁に更新されていく(public void onSensorChanged(SensorEvent event) が都度呼ばれる)。

「次のセンサー」ボタンを押すと、センサーが入れ替わる。

照度などは太陽の下にスマホを持っていくと大きく値が変わるので正しそう。近接は、手をカメラあたりに近づけると0.0、遠ざけると5.0と2値で管理されているよう。歩行検出は今のところうまく検知できていない。他のものはスマホを移動や回転させると値が変わるので、何かしら検知はしている(正しい値かはもう少し調べる)。
こういったセンサーがどう応用できるかまだ思いつかないけど、例えば、持ち歩いたり車で移動したりして蓄積させた加速度データをBluetooth通信で取得するとかしたい。

