在以下示例活动中,屏幕会在用户关闭后立即自动唤醒(使用电源按钮),但仅当我使用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
标志)
或许我只是误解了这面旗帜的目的......那是什么呢?
答案 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()
。