Компас на циферблате на Android Wear

Я пытаюсь установить компас на циферблате, но у меня проблемы с самого начала.

 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 ​​[], но это дает мне ошибку, он говорит" Не утверждение "

Итак, как я могу сделать так, чтобы я мог получить от нужного датчика значение в градусах для использования в моей матрице?

1 ответ

Ваш 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;
        }
    }
}
Другие вопросы по тегам