Kotlinで加速度センサーを利用してみた。
パーミッションは必要なく、リスナーを実装するだけでいけた。

package com.atmc118.sensorpika
import android.content.Context
import android.hardware.Sensor
import android.hardware.SensorEvent
import android.hardware.SensorEventListener
import android.hardware.SensorManager
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
//Gradleのpluginsに追記する必要あり 「id 'kotlin-android-extensions'」
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity(),SensorEventListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onSensorChanged(event: SensorEvent?) {
if(event == null) return
if(event.sensor.type == Sensor.TYPE_ACCELEROMETER){
txt01.text = "x: ${event.values[0]} \n y: ${event.values[1]} \n z: ${event.values[2]} \n"
}
}
override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) {
}
override fun onResume() {
super.onResume()
val sm = getSystemService(Context.SENSOR_SERVICE) as SensorManager
val accmeter = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
sm.registerListener(this,accmeter,SensorManager.SENSOR_DELAY_NORMAL)
}
override fun onPause() {
super.onPause()
val sm = getSystemService(Context.SENSOR_SERVICE) as SensorManager
sm.unregisterListener(this)
}
}
resumeでリスナー登録、pauseでリスナー解除する。
センサーの値はonSensorChangedで取得できるのでテキスト表示する。
加速度センサーを使えば色々応用できそう。