Android中的传感器之---磁场传感器
时间:2023-10-14 11:07:02
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) { } }