har*_*ara 5 android sensor accelerometer orientation magnetometer
我需要检索手机的方向.目前我写了这个:
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);
...
Run Code Online (Sandbox Code Playgroud)
如果我将手机放在平面上并将其旋转到表面上,此代码可让我获取手机的方向.
我不明白的是,如果我向上移动手机的值this.actual_orientation[0],即[此处] [1]所述的zed轴上的旋转,虽然没有旋转,但值会增加.
有人知道会发生什么吗?
编辑
另一件奇怪的事......
我在办公室里尝试了我的应用程序,它有我之前描述的奇怪的行为..我在同一个办公室(同样的情况)尝试了一个指南针应用程序,我从市场上取得它与我的相同的行为..当我我把电话向上移动了一致的价值变化..我在同一个办公室(同样的情况)尝试了i-phone罗盘,它没有那种奇怪的行为!
然后,当我到家时,我尝试了两个,我的应用程序和我的Android手机的指南针应用程序,他们工作!!即使我向上移动手机价值稳定...
非常感谢.
[1]:http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation(float [],float [])
小智 4
设备获得的方向估计部分取决于局部磁场方向。在建筑物内、铁结构附近和电器附近,感测到的磁场可能会随着以英尺为单位的距离而显着变化。使用手持式磁力计或高斯计可以轻松观察到这种效应。
我怀疑这些扭曲是导致您的应用程序出现奇怪行为的原因。
| 归档时间: |
|
| 查看次数: |
3804 次 |
| 最近记录: |