【发布时间】:2018-09-18 09:26:46
【问题描述】:
如何在 android 应用程序中获取x y z 坐标中的磁力计读数?
【问题讨论】:
标签: java android magnetometer
如何在 android 应用程序中获取x y z 坐标中的磁力计读数?
【问题讨论】:
标签: java android magnetometer
这是一个关于如何检索传感器值的示例:
public class MagnetometerActivity extends Activity implements SensorEventListener {
// Sensors & SensorManager
private Sensor magnetometer;
private SensorManager mSensorManager;
// Storage for Sensor readings
private float[] mGeomagnetic = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Get a reference to the SensorManager
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
// Get a reference to the magnetometer
magnetometer = mSensorManager
.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
// Exit unless sensor are available
if (null == magnetometer)
finish();
}
@Override
protected void onResume() {
super.onResume();
// Register for sensor updates
mSensorManager.registerListener(this, magnetometer,
SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
protected void onPause() {
super.onPause();
// Unregister all sensors
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
// Acquire magnetometer event data
else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) {
mGeomagnetic = new float[3];
System.arraycopy(event.values, 0, mGeomagnetic, 0, 3);
}
// If we have readings from both sensors then
// use the readings to compute the device's orientation
// and then update the display.
if (mGeomagnetic != null) {
Log.d(TAG, "mx : "+mGeomagnetic[0]+" my : "+mGeomagnetic[1]+" mz : "+mGeomagnetic[2]);
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// N/A
}
}
如果您想要磁力计的未校准值,您可以使用TYPE_MAGNETIC_FIELD_UNCALIBRATED 传感器类型。请找到所有传感器的详细信息here。
希望对您有所帮助!
【讨论】: