Проблемы с высотой тона в альбомном режиме

Мне нужно прочитать значение шага (насколько телефон наклонен вперед и назад) как в портретном, так и в ландшафтном режимах. Используя приведенный ниже код в портретной ориентации, я получаю свое значение из значения [1] с 0,0, когда телефон остается лежать ровно лицевой стороной вверх, -90, когда стоит вертикально, и 180, когда лежит на лицевой стороне устройства. Все отлично до сих пор ... Проблема возникает, когда устройство находится в ландшафтном режиме. На данный момент я использую значение [2] для измерения наклона устройства, но проблема связана со значениями: 0, когда телефон остается горизонтальным (ОК), поднимается до 90, когда он стоит вертикально (ОК), но когда я продолжаю при движении значение снова падает ниже 90 (80, 75 и т. д.), поэтому в основном я не могу различать эти 2 позиции, поскольку значения идентичны. Итак, что я делаю неправильно, какие еще значения с датчиков я могу прочитать, чтобы получить полную картину наклона устройства как в альбомном, так и в портретном режиме?

Тот же вопрос, что и здесь: 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);

}

5
задан Alex 17 January 2011 в 18:20
поделиться