我想让设备进入睡眠状态或关闭屏幕。我调查并发现了这个主题:在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);
问题:我可以让它工作,但是当尝试打开设备时它会做一些奇怪的事情,比如不喜欢返回,或者如果我的应用程序在前面,按下按钮后会自动进入睡眠状态。这看起来更像是一个提示或解决方法,而不是正常的解决方案。
谁能告诉我有什么好方法可以让设备进入睡眠状态或关闭屏幕,并且可以毫无问题地运行?在我看来,像这样的简单功能并不能很好地使用它(或者至少有据可查),这听起来很少见