android - 陀螺仪和加速度计倒置
问题描述
我在 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;
}
}
解决方案
- 它们没有倒置。加速度计为您提供 ax、ay、az,它们是 3 个方向的加速度。陀螺仪为您提供 gx、gy、gz,它们是三个方向的旋转速度。
- 这两个传感器可以独立使用。
- 加速度计不会给你方向。有方向传感器,但可能已弃用。我认为传感器值与方向有关,但有一些方法可以使它们与方向无关。
您可以从 Play 商店安装一些传感器应用程序并将其与您的值进行比较以进行测试。
推荐阅读
- r - 如何在 R 中获取向量中的元素数?
- vim - 如何在 Vim 中更改特定行号颜色
- rest - URL 中带有 .bat/.exe 的用户名 - 替代
- php - WooCommerce 中特定产品的基于地理位置的自定义重定向
- azure - Azure 服务总线高级版 - 异地恢复 - 丢弃的消息
- vue.js - 捆绑后,vuetify 需要 500kb 捆绑大小
- python - 是否使用正则表达式,从 HTML 中获取 json 值
- python - 如何根据条件从数据框列名中填充列值?
- javascript - CROPPER JS 获取裁剪器画布不适用于较大的文件
- java - 什么时候在 Spring 中使用删除请求?