【问题标题】:Magnetometer sensors reading in android studio application在 android studio 应用程序中读取磁力计传感器
【发布时间】:2018-09-18 09:26:46
【问题描述】:

如何在 android 应用程序中获取x y z 坐标中的磁力计读数?

【问题讨论】:

    标签: java android magnetometer


    【解决方案1】:

    这是一个关于如何检索传感器值的示例:

    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

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多