3

空のアクティビティでターゲット API 15 (ICS) を使用して新しいプロジェクトを作成しました。マニフェストに許可を追加しました:

<uses-permission android:name="android.permission.WAKE_LOCK" />

にコードを追加しましたonCreate():

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PowerManager pm = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag");
        wl.acquire();

        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.screenBrightness = 0;
        getWindow().setAttributes(params);
    }

しかし、デバイスでは何も起こりません。PowerManager のドキュメントによると、画面が (すぐに) 消えると予想していました。それで、私は何か間違ったことをしていますか、それともこれは機能していませんか?


編集:

WakeLock を取得した後に手動で設定する Ashish Ranjan の提案を試みscreenBrightnessましたが、これも機能しません。

4

2 に答える 2

1

Android のドキュメントによると、 を使用しPARTIAL_WAKE_LOCKても画面はオフになりません。ただし、このモードが でアクティブになっている場合は、画面をオフにすることができますWakeLock

そのため、デバイスの画面はすぐにはオフになりません。画面がタイムアウトするまで待つ必要があります (デバイスの表示設定で設定された時間によって異なります) が、CPUは実行を続けます。

PARTIAL_WAKE_LOCK

ウェイク ロック レベル: CPU が動作していることを確認します。画面とキーボードのバックライトをオフにすることができます。

ユーザーが電源ボタンを押すと、画面はオフになりますが、部分的なウェイクロックがすべて解除されるまで、CPU はオンのままになります。

画面をオフにするには、次のように Window LayoutParams を変更する必要があります。

WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);
于 2016-07-15T13:41:27.303 に答える
0

これを追加するのを忘れたと思います:

 wl.release();
于 2016-07-15T13:23:21.127 に答える