如何从 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(),提供您的听众和您想要的传感器。见:

The SensorManager documentation The sensors overview documentation

【讨论】:

这就是缺少的!感谢您提供这些链接,出于某种原因,我查看了motion sensors 上的 android 文档,我认为这就是它的所有文档。现在完美运行。

以上是关于如何从 SensorManager 获取线性加速度数据?的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何使用 SensorManager.getAltitude(float p0, float p)?

ANDROID_MARS学习笔记_S05_001_用SensorManager获取传感器

如何进行转换以从线性加速度 IMU 数据中获得正确的线速度?

如何从可变加速度计获得速度(在简单的线性运动中)?

Android SensorManager 奇怪如何重新映射CoordinateSystem

光照传感器