1

画面の向きを横向きにロックする機能を備えたAndroidアプリケーションを開発しています。この向きの変更を、電話のすべてのAndroidアプリケーションに適用したいと思います。私はこのコードを使用しています

private void lockScreenOrientation() {
if (!mScreenOrientationLocked) {
    final int orientation = getResources().getConfiguration().orientation;
    final int rotation = getWindowManager().getDefaultDisplay().getOrientation();
    if (rotation == Surface.ROTATION_0 || rotation == Surface.ROTATION_90) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
    }
    else if (rotation == Surface.ROTATION_180 || rotation == Surface.ROTATION_270) {
        if (orientation == Configuration.ORIENTATION_PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
        }
        else if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
        }
    }

    mScreenOrientationLocked = true;
}
}

private void unlockScreenOrientation() {
 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
 mScreenOrientationLocked = false;
}

しかし、これは一時的な変更であり、すべてのアプリケーションに有効になるわけではありません。すべてのアプリケーションにロックの向きを適用する方法を知っている人はいますか?ありがとうございました

4

1 に答える 1

4

リンクしたようなアプリケーションは、ローテーションに関連付けられたグローバルシステム設定値を変更することでこれを行います。アプリケーションで使用できる定数については、 Settings.Systemクラスを参照してください。具体的には、ACCELEROMETER_ROTATIONandのUSER_ROTATION値がおそらく重要になります。

android.permission.WRITE_SETTINGSまた、マニフェストでandroid.permission.WRITE_SECURE_SETTINGS権限を宣言する必要があります。

于 2012-09-04T15:30:38.257 に答える