According to the docs,地磁场传感器沿x,y和z轴测量地球的磁场强度(微特斯拉,μT)。但是,它并没有像我期望的那样表现。
我希望如果我将设备放在一个位置,测量磁场,然后将设备旋转90°,使新磁场读数与第一个正交。或者,如果旋转180°,则两个矢量的大小相等,但方向相反。我也期望无论设备的方向如何,场地的强度在一个位置上几乎都是相同的。
但这些都不像预期的那样。应该正交的矢量变成具有高于0.8的点积(每个矢量标准化)。如果我将设备旋转180°,矢量的点积应为-1,但在我的测试中,我得到的点积约为0.9(而不是负数)。
幅度也变化很大。有些方向是250,有些方向是45。
唯一需要注意的是它是一致的 - 当我将设备返回到相同的方向和位置时,数字大致相同。
因此,如果数字(x,y和z)不是沿着这些轴的字段的真实值,那么它们是什么?或者,如果它不是矢量空间,它测量的是什么?
以下是一些可以使用的示例代码:
public class SensorTestActivity extends Activity implements SensorEventListener {
private SensorManager sensorManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
}
@Override
public void onSensorChanged(SensorEvent event) {
Log.i("SENSOR", event.getValues());
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD),
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
}
答案 0 :(得分:0)
地磁场传感器应独立于设备的方向。它测量地球磁场强度,因此应仅取决于位置而不取决于设备的方向。当您将标准化向量对准自身时,上面的所有点积应该接近1。磁矢量的坐标仅因为磁矢量在设备坐标中表示而变化。因此,当您更改设备方向时,坐标会发生变化,但矢量保持不变。