使用TYPE_MAGNETOMETER传感器时,可获得与器件方向相关的磁场强度的X,Y,Z值.我想要得到的是将这些值转换为全局参考框架,澄清:用户接受设备,测量这些值,而不是将设备旋转任何轴周围一定程度并获得相同的值.请在下面找到类似的问题: 在全局坐标中获取磁场值 如何获得磁场矢量,与设备旋转无关? 在这个答案中描述了样本解决方案(它用于线性加速,但我认为没关系):https://stackoverflow.com/a/11614404/2152255 我使用它并且我得到3个值,X总是非常小(不要认为它是正确的),Y和Z都可以,但是当我旋转设备时它们仍然有点变化.怎么可以调整?它可以全部解决吗?我使用简单的卡尔曼滤波器来近似测量值,因为即使设备根本没有移动/旋转,我也会得到不同的值.请在下面找到我的代码:
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.opengl.Matrix;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import com.test.statistics.filter.kalman.KalmanState;
import com.example.R;
/**
* Activity for gathering magnetic field statistics.
*/
public class MagneticFieldStatisticsGatheringActivity extends Activity implements SensorEventListener {
public static final int KALMAN_STATE_MAX_SIZE = 80;
public static final double MEASUREMENT_NOISE = 5;
/** Sensor manager. */
private SensorManager mSensorManager;
/** Magnetometer spec. */
private TextView vendor;
private TextView resolution; …Run Code Online (Sandbox Code Playgroud)