磁场传感器和加速度传感器是一样一样的(我说的是得到数据)
Android的磁场传感器,Magnetic Field。。读取磁场的变化,通过该传感器可开发出指南针、罗盘等磁场应用。该传感器读取的数据是空间坐标系三个方向的磁场值,其数据单位为uT,即微特斯拉。
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) {
}
}