4

画面の向きが変わらないようにするためのReto Meierの推奨方法を達成しようとしています。Google IO での彼の講演のスライド (#23 を参照) は、Android Protips: Where to Download the Slides and Code Snippets にあります。

コードをステップ実行して値を設定しましたが、画面の向きはまだ変わります。参考までに、このリスナーをアプリケーションに登録します。

これが私のコードです:

final SensorManager sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    sm.registerListener(
        new SensorEventListener() {
            @Override
            public void onSensorChanged(SensorEvent sensorEvent) {
                if (sensorEvent.sensor.getType() == Sensor.TYPE_ORIENTATION) {
                    final WindowManager wm = (WindowManager) getApplicationContext()
                            .getSystemService(Context.WINDOW_SERVICE);
                    final Display display = wm.getDefaultDisplay();

                    int x = SensorManager.AXIS_X;
                    int y = SensorManager.AXIS_Y;

                    switch (display.getRotation()) {
                    case Surface.ROTATION_90:
                        x = SensorManager.AXIS_Y;
                        y = SensorManager.AXIS_MINUS_X;

                        break;
                    case Surface.ROTATION_180:
                        y = SensorManager.AXIS_MINUS_Y;

                        break;
                    case Surface.ROTATION_270:
                        x = SensorManager.AXIS_MINUS_Y;
                        y = SensorManager.AXIS_MINUS_X;

                        break;
                    case Surface.ROTATION_0:
                    default:
                        break;
                    }

                    SensorManager.remapCoordinateSystem(sensorEvent.values, x, y, new float[] {});
                }
            }

            @Override
            public void onAccuracyChanged(Sensor sensor, int accuracy) {

            }
        }, sm.getDefaultSensor(Sensor.TYPE_ORIENTATION),
        SensorManager.SENSOR_DELAY_NORMAL);
4

1 に答える 1

12

現在機能していない30行以上のコードはすべて、ファイル内の一部のXML値に置き換えることができAndroidManifest.xmlます。

私たちは皆見ました

<activity android:name=".YourActivity" android:screenOrientation="portrait" ></activity>

また、デフォルトの横向きのタブレットではうまく機能しないことは誰もが知っています。しかし、これを見た人は何人いますか?

<activity android:name=".YourActivity" android:screenOrientation="nosensor" ></activity>

基本的には、デバイスの向きがセンサーに反応しないようにします。したがって、デフォルトが横向きまたは縦向きの場合、変更されません。Droid XXoomでテストしましたが、期待どおりに動作します。

これが他の人の役に立つことを願っています。

于 2011-07-08T05:53:10.397 に答える