Android 安卓手表上的指南针

Android 安卓手表上的指南针,android,wear-os,watch-face-api,Android,Wear Os,Watch Face Api,我正试图在我的手表表面安装一个指南针,但从一开始我就遇到了麻烦 public class SensorActivity extends Activity implements SensorEventListener { private final SensorManager mSensorManager; private final Sensor mSensor; public SensorActivity() { mSensorManager = (

我正试图在我的手表表面安装一个指南针,但从一开始我就遇到了麻烦

 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[];
    }
我想这是我的问题,我可以在“event.values[]的括号中写下1、2和3,但它给了我一个错误,上面写着“nota statement”


那么,我如何才能从所需的传感器中获得一个在矩阵中使用的度值呢?

您的
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;
        }
    }
}

您的
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;
        }
    }
}