首页 > 解决方案 > 陀螺仪和加速度计倒置

问题描述

我在 Android 中同时使用陀螺仪和加速度计。我所做的只是显示来自两个传感器的值。我不明白为什么要跟踪设备加速度,我必须使用陀螺仪以及为什么设备方向由加速度计传感器给出。我已经在 2 台平板电脑、3 部手机上测试了这段代码,结果是一样的。

听众:

// gyroscope sensor
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), SensorManager.SENSOR_DELAY_NORMAL);

// accelerometer sensor
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);

为了得到结果,我实现了 SensorEventListener :

@Override
public void onSensorChanged(SensorEvent sensorEvent) {
    switch (sensorEvent.sensor.getStringType()){
        case Sensor.STRING_TYPE_ACCELEROMETER:
            (TextView)findViewById(R.id.sensor_accel_data_textView)).setText(String.valueOf(sensorEvent.values[0]));
            ((TextView)findViewById(R.id.sensor_accel_data_textView2)).setText(String.valueOf(sensorEvent.values[1]));
            ((TextView)findViewById(R.id.sensor_accel_data_textView3)).setText(String.valueOf(sensorEvent.values[2]));
            break;
        case Sensor.STRING_TYPE_GYROSCOPE:
            ((TextView)findViewById(R.id.sensor_gyro_data_textView)).setText(String.valueOf(sensorEvent.values[0]));
            ((TextView)findViewById(R.id.sensor_gyro_data_textView2)).setText(String.valueOf(sensorEvent.values[1]));
            ((TextView)findViewById(R.id.sensor_gyro_data_textView3)).setText(String.valueOf(sensorEvent.values[2]));
            break;
    }
}

标签: androidaccelerometergyroscope

解决方案


  1. 它们没有倒置。加速度计为您提供 ax、ay、az,它们是 3 个方向的加速度。陀螺仪为您提供 gx、gy、gz,它们是三个方向的旋转速度。
  2. 这两个传感器可以独立使用。
  3. 加速度计不会给你方向。有方向传感器,但可能已弃用。我认为传感器值与方向有关,但有一些方法可以使它们与方向无关。

您可以从 Play 商店安装一些传感器应用程序并将其与您的值进行比较以进行测试。


推荐阅读