gpt4 book ai didi

Android - SensorManager getOrientation 的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:40:11 25 4
gpt4 key购买 nike

我需要检索手机的方向。目前我写了这个:

public void onSensorChanged(SensorEvent event) {
switch (event.sensor.getType()){
case Sensor.TYPE_MAGNETIC_FIELD:
this.mag_vals = event.values.clone();
this.sensorReady = true;
break;
case Sensor.TYPE_ACCELEROMETER:
this.acc_vals = event.values.clone();
break;
}
if (this.mag_vals != null && this.acc_vals != null && this.sensorReady) {
this.sensorReady = false;
float[] R = new float[ProjectConstants.SIZE_MATRIX];
float[] I = new float[ProjectConstants.SIZE_MATRIX];
SensorManager.getRotationMatrix(R, I, this.acc_vals, this.mag_vals);

SensorManager.getOrientation(R, this.actual_orientation);
...

如果我将手机放在平坦的表面上并在该表面上旋转它,此代码可让我获取手机的方向。

我不明白的是,如果我将手机向上移动 this.actual_orientation[0] 的值,这是 [此处][1] 中描述的 zed 轴上的旋转,尽管没有轮换,但值(value)增加了​​。

有人知道发生了什么吗?

编辑

另一个奇怪的事情..

我在办公室试用了我的应用程序,它出现了我之前描述的奇怪行为。我在同一个办公室(同样的情况)尝试了一个我从市场上拿来的指南针应用程序,它的行为和我的一样。当我向上移动手机时,值(value)一直在变化。我在同一个办公室(同样的情况)试过 i-phone 指南针,它没有那种奇怪的行为!

然后当我到家时,我尝试了我的应用程序和我的 Android 手机的指南针应用程序,它们都能正常工作!!即使我向上移动手机,该值也很稳定...

非常感谢。

[1]: http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float[] , float [])

最佳答案

设备获得的方向估计部分取决于局部磁场方向。在建筑物内、铁结构附近和电器附近,感测到的磁场可能会随着以英尺为单位测量的距离发生显着变化。使用手持磁力计或高斯计可以很容易地看到这种效果。

我怀疑这些扭曲是导致您的应用程序出现奇怪行为的原因。

关于Android - SensorManager getOrientation 的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3195836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com