我需要在竖屏和横屏模式下读取手机倾斜的俯仰值。在竖屏模式下,使用以下代码,我可以从value[1]中获取值。当手机平放时(面朝上)为0.0,立直时为-90,设备面朝下时为180。到这里一切都很好...
问题出现在设备处于横屏模式时。此时,我使用value[2]来测量设备倾斜度,但问题出在数值上:当手机平放时为0(没问题),当手机呈立直状态时为90(没问题),但当我继续移动设备时,该值再次降至90以下(80、75等...),所以基本上我无法区分这两个位置,因为这些数值是相同的。
那么,我做错了什么?除了这些数值外,我还可以从传感器中读取哪些值,以便全面了解设备在横屏和竖屏模式下的倾斜情况?
问题出现在设备处于横屏模式时。此时,我使用value[2]来测量设备倾斜度,但问题出在数值上:当手机平放时为0(没问题),当手机呈立直状态时为90(没问题),但当我继续移动设备时,该值再次降至90以下(80、75等...),所以基本上我无法区分这两个位置,因为这些数值是相同的。
那么,我做错了什么?除了这些数值外,我还可以从传感器中读取哪些值,以便全面了解设备在横屏和竖屏模式下的倾斜情况?
与此处相同的问题:http://groups.google.com/group/android-beginners/browse_thread/thread/c691bbac3e294c7c?pli=1
我有以下代码:
private void ReadOrientationSensor(){
final SensorManager sensorManager;
final TextView text = (TextView) this.findViewById(R.id.TextView01);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
SensorEventListener listener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
float x,y,z;
x=event.values[0];
y=event.values[1];
z=event.values[2];
//text.setText(String.valueOf(event.values[0]));
text.setText("x: " + x + " y: " + y + " z: " + z);
}
};
sensorManager.registerListener(listener, sensor,SensorManager.SENSOR_DELAY_FASTEST);
}