使用PowerManager.ON_AFTER_RELEASE wakeLock自动唤醒屏幕

时间:2012-07-19 15:37:11

标签: android

在以下示例活动中,屏幕会在用户关闭后立即自动唤醒(使用电源按钮),但仅当我使用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标志)

或许我只是误解了这面旗帜的目的......那是什么呢?

2 个答案:

答案 0 :(得分:1)

WindowManager.LayoutParams类有一个标记FLAG_TURN_SCREEN_ON。它记录如下:

  

窗口标志:当设置为正在添加或可见的窗口时,一次   窗口已经显示,然后系统将拨动电源   经理的用户活动(就好像用户已经唤醒了设备)   打开屏幕。

尝试在onResume

中清除此标记
getWindow().clearFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );

并查看是否在按下电源按钮后屏幕保持黑暗。您也可以在onPause中试用该标记。只是一个猜测。

答案 1 :(得分:0)

好的,经过多次实验后,似乎在使用此PowerManager.ON_AFTER_RELEASE时无法避免此自动屏幕唤醒。

因此,如果没有此问题,则无法使用MediaPlayer.setWakeMode()