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

好的,经过多次实验,使用 this 时似乎没有办法避免这种自动屏幕唤醒PowerManager.ON_AFTER_RELEASE

因此,MediaPlayer.setWakeMode()如果没有这个问题,就无法使用。

于 2012-07-20T07:32:53.453 回答