0

次のサンプル アクティビティでは、ユーザーが (電源ボタンで) 電源を切った直後に画面が自動的に起動しますが、PowerManager.ON_AFTER_RELEASEフラグを使用した場合のみです。このフラグを使用しないと発生しません。

public class TestActivity extends Activity {

    private WakeLock wakeLock;

    @Override
    protected void onResume() {
        super.onResume();

        wakeLock = ((PowerManager) getSystemService(Context.POWER_SERVICE)).newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "test");
        wakeLock.acquire();
    }

    @Override
    protected void onPause() {
        wakeLock.release();
        super.onPause();
    }

}

PowerManager.ON_AFTER_RELEASEフラグを使用している間にこの動作を回避する方法はありますか?

MediaPlayer のメソッドを使用する場合も同じ問題があります (ソース コードをチェックインし、このフラグsetWakeMode()も使用します)。PowerManager.ON_AFTER_RELEASE

それとも、このフラグの目的を誤解しているだけかもしれません...では、それは何のために作られているのでしょうか?

4

2 に答える 2

1

WindowManager.LayoutParamsクラスにはフラグがありFLAG_TURN_SCREEN_ONます。次のように文書化されています。

ウィンドウフラグ:ウィンドウが追加または表示されるように設定されている場合、ウィンドウが表示されると、システムはパワーマネージャーのユーザーアクティビティを(ユーザーがデバイスを起動したかのように)突いて画面をオンにします。

onResumeあなたの:でこのフラグをクリアしてみてください

getWindow().clearFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );

電源ボタンを押した後、画面が暗くなるかどうかを確認します。フラグを試してみることもできonPauseます。ただの推測。

于 2012-07-19T16:57:32.540 に答える
0

OK、多くの実験の結果、これを使用すると、この自動スクリーン ウェイクアップを回避する方法がないようPowerManager.ON_AFTER_RELEASEです。

結果として、MediaPlayer.setWakeMode()この問題がなければ使用することはできません。

于 2012-07-20T07:32:53.453 に答える