2017-07-09 114 views
0

我的应用程序的目标是保持整个Android系统上的屏幕。以前,我已经使用FULL_WAKE_LOCK这个,它允许我在整个系统中屏蔽调光。然而,由于API等级17,它被认为是过时:在整个Android系统中使用FLAG_KEEP_SCREEN_ON

这个常量是在API层面弃用17.大多数应用程序应该 使用FLAG_KEEP_SCREEN_ON,而不是这种类型的唤醒锁的,因为它会 被正确地管理平台,因为用户在 应用程序之间移动并且不需要特殊许可。使用FLAG_KEEP_SCREEN_ON

Official documentation recommends,但它是可以使用它只有在特定的Activity

我仍然FULL_WAKE_LOCK,但是我发现它现在不能在一些设备上工作,比如MediaPad Huawei x2,Redmi Note 3等。我目前使用PowerManager的方式可以找到on GitHub。在API level 17之后有没有更好的方法来完成这项任务?

回答

0

从API 23开始,其新的打盹模式唤醒锁被忽略,它们不会阻止系统进入睡眠状态。

您应该尝试维护与唤醒锁并行的前台服务,理论上应该防止设备进入睡眠状态。

注意:前台服务必须调用startForeground并显示非dismissable通知

+0

我所知道的'Doze'模式,并保持后台服务实际上是目前我在做什么,但不幸的是这在某些设备上不起作用。你可以在这里查看我的实现:https://github.com/yyunikov/android-dim-block/blob/master/src/main/java/com/yyunikov/dimblock/service/DimBlockService.java#L31 –

+0

我添加了一个请注意,您的Notificaction类应调用builder.setOngoing(true); ... 我认为。 –