Компас на циферблате на 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;
}
}
}