Android中的传感器之---磁场传感器

磁场传感器和加速度传感器是一样一样的(我说的是得到数据)

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) {

    }
}

猜你喜欢

转载自blog.csdn.net/lanrenxiaowen/article/details/108059598