如何从SensorManager获取线加速度数据?

How to get linear acceleration data from SensorManager?

我正在尝试使用 Kotlin 在 Android 应用程序的文本视图中显示 phone 的线性加速度。

在一个activity中,我有

var sensorManager : SensorManager? = null
var lastUpdatedDate : Date? = null

然后,在 onCreate() 方法中我有

lastUpdatedDate = Date(System.currentTimeMillis())
sensorManager = getSystemService(SENSOR_SERVICE) as SensorManager

而我的onSensorChanged()方法如下:

@Override
override fun onSensorChanged(event: SensorEvent?) {
    when (event?.sensor?.type) {
        Sensor.TYPE_LINEAR_ACCELERATION -> {
            timer_since_started_detecting.text = event.values[0].toString()
        }
    }
}

据我了解,每当 phone 的传感器之一有更新时,onSensorChanged() 就会被调用(当 activity class 扩展 SensorEventListener 时)它的价值。

从其他答案和文档中,我应该能够看到改变其值的传感器类型,在我的例子中,如果它是线性加速度传感器,新值应该写在我的文本视图中.

From my understanding, onSensorChanged() gets called (when the activity class extends SensorEventListener) every time one of the sensors the phone has updates its value.

您还需要在 SensorManager 上调用 registerListener(),提供您想要的监听器和传感器。参见: