加速度センサーとは
スマホには様々なセンサーがありますが、その中でも
スマホが縦向きか横向きかを判断し 画面を回転させるためや
万歩計などに使われているセンサーです
実装
kotlinでアプリ内に加速度センサーを使って端末の向きを取得しようと思います
class MainActivity : AppCompatActivity(), SensorEventListener {
private var sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager
private val textView: TextView = findViewById(R.id.text_view)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onSensorChanged(event: SensorEvent) {
val x = event.values[0].toInt()
val y = event.values[1].toInt()
val z = event.values[2].toInt()
textView.text = " X= $x Y= $y Z= $z"
}
override fun onAccuracyChanged(p0: Sensor?, p1: Int) {
TODO("Not yet implemented")
}
SensorManagerという機能を使って取得できます。
使いやすくするためにあらかじめインスタンス化しておきます。
SensorEventListenerを継承しているのでセンサーが切り替わったタイミングでonSensorChangedメソッドで値が取得できます。
xが横軸 yが縦軸 zが方位角度でそれぞれ取得されます。
また、onAccuracyChangedメソッドはセンサーの精度が変化した時に呼ばれます。
参考
おわりに
センサー系の実装は体感的で触っていて面白いので今後も記事にできたらいいなと思います。