1

我正在尝试在表盘中实现指南针,但从一开始我就遇到了麻烦。

 public class SensorActivity extends Activity implements SensorEventListener {
    private final SensorManager mSensorManager;
    private final Sensor mSensor;

    public SensorActivity() {
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    }

    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() == mSensor.getType())
            float mag = event.values[];
    }
}

所以这是我的代码,问题是我不知道如何从磁传感器度数中获取,以便我可以在矩阵中使用它来旋转指南针 png,因为它应该是正常的。

public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() == mSensor.getType())
            float mag = event.values[];
    }

我认为这是我的问题,我可以将 1,2 和 3 写在“ event.values [] 的括号中,但它给了我一个错误,它说“不是声明”

那么我该怎么做才能从所需的传感器中获得要在矩阵中使用的度数?

4

1 回答 1

0

您的mag变量应该是一个数组,您可能希望在范围内声明它,以便值保持不变并可以在其他地方使用:

public class SensorActivity extends Activity implements SensorEventListener {
    private final SensorManager mSensorManager;
    private final Sensor mSensor;
    private float[] mag = new float[3];

    public SensorActivity() {
        mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
        mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
    }

    protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    protected void onPause() {
        super.onPause();
        mSensorManager.unregisterListener(this);
    }

    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

    public void onSensorChanged(SensorEvent event) {
        if(event.sensor.getType() == mSensor.getType()) {
             mag = event.values;
        }
    }
}
于 2015-07-22T19:24:15.380 回答