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