如何使用Android';陀螺仪?
我正在尝试使用Android中的陀螺仪获取z轴旋转值,我只想在屏幕上显示手机绕z轴旋转的角度。因此,如果我把手机直立着,屏幕对着我,然后向右旋转90度,屏幕仍然对着我,我希望它在屏幕上显示90度 到目前为止,我的代码非常基本,但我似乎找不到任何仅在单轴上旋转的示例: 我有一个文本视图,它只是从onSensorChanged()打印数据如何使用Android';陀螺仪?,android,gyroscope,Android,Gyroscope,我正在尝试使用Android中的陀螺仪获取z轴旋转值,我只想在屏幕上显示手机绕z轴旋转的角度。因此,如果我把手机直立着,屏幕对着我,然后向右旋转90度,屏幕仍然对着我,我希望它在屏幕上显示90度 到目前为止,我的代码非常基本,但我似乎找不到任何仅在单轴上旋转的示例: 我有一个文本视图,它只是从onSensorChanged()打印数据 mySensorManager=(SensorManager)getSystemService(Context.SENSOR\u SERVICE); List m
mySensorManager=(SensorManager)getSystemService(Context.SENSOR\u SERVICE);
List mySensors=mySensorManager.getSensorList(Sensor.TYPE_陀螺仪);
如果(mySensors.size()>0){
mySensorManager.registerListener(mysensorreventListener、mySensors.get(0)、SensorManager.SENSOR\u DELAY\u UI);
}
私有SensorEventListener mySensorEventListener=新的SensorEventListener(){
@凌驾
传感器更改时的公共无效(传感器事件){
textviewX.setText(“X旋转:+String.valueOf(event.values[0]));
textviewY.setText(“Y-Rotation”+String.valueOf(event.values[1]);
textviewZ.setText(“Z-Rotation”+String.valueOf(event.values[2]);
}
@凌驾
精度更改时的公共无效(传感器,int精度){
}
};
当我在z轴上旋转手机时,它输出的z轴数据只是在0、-0、1和2之间切换,随手机旋转而随机切换。有人能帮我吗?谢谢。您忽略了传感器不返回纯旋转值这一事实 你需要考虑重力和精度 看 编辑:我忽略了一个事实,你需要的是角度运动,而不是直线运动
手册仍然适用。请查看此处。。。
mySensorManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
List<Sensor> mySensors = mySensorManager.getSensorList(Sensor.TYPE_GYROSCOPE);
if(mySensors.size() > 0){
mySensorManager.registerListener(mySensorEventListener, mySensors.get(0), SensorManager.SENSOR_DELAY_UI);
}
private SensorEventListener mySensorEventListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
textviewX.setText("X-Rotation: " + String.valueOf(event.values[0]));
textviewY.setText("Y-Rotation " + String.valueOf(event.values[1]));
textviewZ.setText("Z-Rotation " + String.valueOf(event.values[2]));
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
};