【问题标题】:How to turn screen off or send device to sleep如何关闭屏幕或让设备进入睡眠状态
【发布时间】:2012-01-17 01:14:36
【问题描述】:

我想让设备进入睡眠状态或关闭屏幕。我调查发现了这个话题:Turn off screen on Android

基本上有以下三种方法,但我发现这三种方法都有问题:

a) 选择 1:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
manager.goToSleep(int amountOfTime);

问题:导致FC。我已阅读我需要DEVICE_POWER 权限,但不能为普通应用授予权限。

b) 选择 2:

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag");
wl.acquire();
wl.release();

问题:这对我不起作用。我不知道为什么。它没有给我一个 FC,但它是无害的。

c) 选择 3:

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

问题:我可以让它工作,但是当尝试打开设备时它会做一些奇怪的事情,比如不喜欢返回,或者如果我的应用在前面,会自动进入睡眠状态就在按下按钮后。这看起来更像是一个提示或解决方法,而不是正常的解决方案。

谁能告诉我有什么好方法可以让设备进入睡眠状态或关闭屏幕并且可以毫无问题地运行?在我看来,像这样的简单功能并不能很好地使用它(或至少有据可查)

【问题讨论】:

    标签: android sleep-mode


    【解决方案1】:

    我自己回答。可以关闭设备,但应用程序必须通过API实现设备管理员功能:Device Administration

    在这个 API 中有一个 locknow() 函数可以做我想做的事情。

    无论如何,这是为了扩展 android 硬件和安全功能,不太可能有人想以这种方式控制设备。

    我想要的是能够通过一个简单的手势来锁定设备。因为我不想创建自己的设备管理器类,所以我检查是否安装了免费应用程序“lockScreen”并启动它。这是做我想做的事的捷径和简单的方法。这个应用程序必须注册为设备管理器,所以它已经实现了这个类。可以从市场上免费获得它。

    【讨论】:

    • 如果我想让它关闭屏幕并且在我的屏幕锁定超时之前不锁定怎么办?
    【解决方案2】:

    我的应用程序已经很好地做到了,我在我的PowerManager.class 中找到了这个

     /**
     * Force the device to go to sleep. Overrides all the wake locks that are
     * held.
     * 
     * @param time is used to order this correctly with the wake lock calls. 
     *          The time  should be in the {@link SystemClock#uptimeMillis 
     *          SystemClock.uptimeMillis()} time base.
     */
    public void goToSleep(long time) 
    {
        try {
            mService.goToSleep(time);
        } catch (RemoteException e) {
        }
    }
    

    【讨论】:

    • 您确定您还没有掌握 API 的 PowerManager 类实现吗?我无法使用此方法,因为我无法获得必要的权限。
    • DEVICE_POWER 权限呢?
    猜你喜欢
    • 1970-01-01
    • 2017-08-30
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-26
    • 1970-01-01
    相关资源
    最近更新 更多