在下面的示例活动中,屏幕在用户关闭(使用电源按钮)后立即自动唤醒,但仅当我使用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标志)
或者也许我只是误解了这个flag...what的用途,它是为它而生的吗?
发布于 2012-07-20 15:32:53
好的,经过多次实验,似乎没有办法避免在使用这个PowerManager.ON_AFTER_RELEASE时自动唤醒屏幕。
因此,如果没有这个问题,使用MediaPlayer.setWakeMode()是不可能的。
发布于 2012-07-20 00:57:33
WindowManager.LayoutParams类有一个标志FLAG_TURN_SCREEN_ON。文档如下所示:
窗口标志:当设置为添加窗口或使其可见时,一旦窗口显示,系统将触发电源管理器的用户活动(就像用户已唤醒设备一样)以打开屏幕。
尝试在onResume中清除此标志
getWindow().clearFlags( WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON );看看这会不会让屏幕在按下电源按钮后保持黑暗。您也可以在onPause中试验该标志。只是猜测而已。
https://stackoverflow.com/questions/11564314
复制相似问题