大多数智能手机均配备3轴陀螺仪,3轴磁力计和3轴加速度计。巧妙地将这些传感器的测量结果结合在一起(卡尔曼滤波器),应该可以实现快速,准确,无噪声和绝对的设备方向。这可以存储为四元数或偏航/俯仰/侧倾值。

在Android中实现此目标的最简单方法是什么?操作系统是否已经为您进行了这些计算?有没有人可以使用的开源实现?

我可以找到的大多数示例/教程仅关注一种类型的传感器。但是对于我的用例,只有通过适当的过滤将所有三个传感器融合在一起才有意义。

最佳答案

您需要实现SensorEventListener接口。
并且在您的课堂上,您必须声明以下内容:

Sensor sensor;
SensorManager sensorManager;


并覆盖以下方法:

public void onAccuracyChanged(Sensor sensor,int accuracy)
{

}

public void onSensorChanged(SensorEvent event)
{
}


并在您的类的构造函数中(Activity或...)

sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_GAME);

10-08 05:54