Der Magnetfeldsensor ist derselbe wie der Beschleunigungsmesser (ich spreche vom Abrufen von Daten).
Der Magnetfeldsensor von Android, Magnetic Field. . Lesen Sie die Änderung des Magnetfelds und verwenden Sie diesen Sensor, um Magnetfeldanwendungen wie Kompass und Kompass zu entwickeln. Die vom Sensor gelesenen Daten sind der Magnetfeldwert in drei Richtungen des Raumkoordinatensystems, und seine Dateneinheit ist uT, also Mikro-Tesla.
public class MagneticFieldActivity extends AppCompatActivity implements SensorEventListener {
private SensorManager sensorManager;
private Sensor sensor;
private TextView mMagneticField;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_magnetic_field);
mMagneticField=findViewById(R.id.tv_magnetic_field);
sensorManager= (SensorManager) getSystemService(Context.SENSOR_SERVICE);
sensor=sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
}
@Override
protected void onResume() {
super.onResume();
if (sensorManager!=null){
sensorManager.registerListener(this,sensor,SensorManager.SENSOR_DELAY_UI);
}
}
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this,sensor);
}
@Override
public void onSensorChanged(SensorEvent event) {
// 传感器返回的数据
float x=event.values[0];
float y=event.values[1];
float z=event.values[2];
StringBuffer buffer = new StringBuffer();
buffer.append("X方向的磁场为:").append(String.format("%.2f", x)).append("\n");
buffer.append("Y方向的磁场为:").append(String.format("%.2f", y)).append("\n");
buffer.append("Z方向的磁场为:").append(String.format("%.2f", z)).append("\n");
mMagneticField.setText(buffer);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}