繁体   English   中英

PARTIAL_WAKE_LOCK不起作用

[英]PARTIAL_WAKE_LOCK does not work

我使用目标API 15(ICS)创建了一个新项目,活动为空。 我添加了显示权限:

<uses-permission android:name="android.permission.WAKE_LOCK" />

我向onCreate()添加了代码:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        PowerManager pm = (PowerManager) getSystemService(getApplicationContext().POWER_SERVICE);
        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Tag");
        wl.acquire();

        WindowManager.LayoutParams params = getWindow().getAttributes();
        params.flags |= WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON;
        params.screenBrightness = 0;
        getWindow().setAttributes(params);
    }

但是设备没有任何反应。 根据PowerManager文档,我希望屏幕立即关闭。 那么,我是在做错什么还是不起作用?


编辑:

我在获取WakeLock之后尝试了Ashish Ranjan的建议来手动设置screenBrightness ,但这也行不通。

根据Android 文档 ,使用PARTIAL_WAKE_LOCK不会关闭屏幕。 但是,当WakeLock中的此模式处于活动状态时,它将允许屏幕关闭。

因此,设备屏幕不会立即关闭,您必须等待屏幕超时(取决于设备显示设置中设置的时间),但CPU会继续运行。

PARTIAL_WAKE_LOCK

唤醒锁定级别:确保CPU在运行; 屏幕和键盘背光将被允许熄灭。

如果用户按下电源按钮,则屏幕将关闭,但CPU将保持打开状态,直到所有部分唤醒锁都已释放。

要关闭屏幕,您必须像这样更改Window LayoutParams:

WindowManager.LayoutParams params = getWindow().getAttributes();
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
params.screenBrightness = 0;
getWindow().setAttributes(params);

我认为您忘了添加:

 wl.release();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM