如何从 SensorManager 获取线性加速度数据?
Posted
技术标签:
【中文标题】如何从 SensorManager 获取线性加速度数据?【英文标题】:How to get linear acceleration data from SensorManager? 【发布时间】:2021-12-01 07:02:59 【问题描述】:我正在尝试使用 Kotlin 在 android 应用上的文本视图中显示手机的线性加速度。
在一项活动中,我有
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()
据我了解,每次手机具有的传感器之一更新其值时,onSensorChanged()
都会被调用(当活动类扩展 SensorEventListener
时)。
从其他答案和文档中,我应该能够看到改变其值的传感器类型,在我的情况下,如果它是线性加速度传感器,新值应该写入我的文本视图中。
【问题讨论】:
【参考方案1】:据我了解,每次手机具有的传感器之一更新其值时,都会调用 onSensorChanged()(当活动类扩展 SensorEventListener 时)。
您还需要在SensorManager
上致电registerListener()
,提供您的听众和您想要的传感器。见:
SensorManager
documentation
The sensors overview documentation
【讨论】:
这就是缺少的!感谢您提供这些链接,出于某种原因,我查看了motion sensors 上的 android 文档,我认为这就是它的所有文档。现在完美运行。以上是关于如何从 SensorManager 获取线性加速度数据?的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何使用 SensorManager.getAltitude(float p0, float p)?
ANDROID_MARS学习笔记_S05_001_用SensorManager获取传感器
如何进行转换以从线性加速度 IMU 数据中获得正确的线速度?