相关疑难解决方法(0)

Android Compass可以补偿Tilt和Pitch

我正在尝试在我的Android手机(Nexus 4)上制作应用程序,该手机将用于模型船.我添加了低通滤波器来滤除传感器的gitter.

但是,当手机背面平放时,指南针才稳定.如果我把它向上倾斜,(例如转动一个嘘声的页面),那么指南针标题就会消失 - 多达50*.

我已经使用Sensor.TYPE_GRAVITY和Sensor.TYPE_ACCELEROMETER对Sensor.TYPE_MAGNETIC_FIELD进行了尝试,效果相同.

我已经使用了这里提到的解决方案以及许多其他地方.我的数学并不好,但这必定是一个常见的问题,我发现没有一个API可以解决这个问题令人沮丧.

我已经在这个问题上工作了3天并且仍然没有找到任何解决方案,但是当我使用CatchCompass时,无论手机倾斜多少,它们都能保持稳定.所以我知道这一定是可能的.

我想做的就是创建一个指南针,如果手机指向北方,那么指南针将向北读取,而当手机通过任何其他轴(滚动或俯仰)时,指南针不会跳转.

在我不得不放弃我的项目之前,任何人都可以请求帮助.

谢谢,亚当

android android-sensors

22
推荐指数
2
解决办法
2万
查看次数

在Android 2.1中使用getRotationMatrix和getOrientation

我长期以来一直遇到这个问题.此代码应输出加速度计的dx,dy,dz以及dx的运行总和.它还应输出方位角,俯仰和滚动.

我已经使用了这里给出的信息,但无济于事.

此代码无法正确输出音高,方位角或滚动.它分别为最后三个文本视图输出0.0,-0.0,-0.0.

switch (event.sensor.getType()) {
    case Sensor.TYPE_ACCELEROMETER:
        accelerometerValues = event.values.clone();
    case Sensor.TYPE_MAGNETIC_FIELD:
        geomagneticMatrix = event.values.clone();
        sensorReady = true;
        break;
    default:
        break;
}   

if (geomagneticMatrix != null && accelerometerValues != null && sensorReady) {
    sensorReady = false;

    float[] R = new float[16];
    float[] I = new float[16];

    SensorManager.getRotationMatrix(R, I, accelerometerValues, geomagneticMatrix);

    float[] actual_orientation = new float[3];
    SensorManager.getOrientation(R, actual_orientation);

    tvXCoordinate.setText(accelerometerValues[0] + "");
    tvYCoordinate.setText(accelerometerValues[1] + "");
    tvZCoordinate.setText(accelerometerValues[2] + "");

    floatXTotal += accelerometerValues[0];
    tvXTotal.setText(floatXTotal + "");

    tvAzimuth.setText(actual_orientation[0] + "");
    tvPitch.setText(actual_orientation[1] + ""); …
Run Code Online (Sandbox Code Playgroud)

java events android matrix sensor

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

android-sensors ×1

events ×1

java ×1

matrix ×1

sensor ×1