在整个活动过程中保持屏幕清醒

use*_*522 54 android screen

我的应用程序中有三个活动.我希望屏幕在第二次活动时保持清醒状态.除非手动按下"锁定"键,否则屏幕不应在我的第二个活动中熄灭.我经历了许多链接,但他们似乎对我不清楚.

Ted*_*opp 147

正如Android教程中的" 保持屏幕开启"中所述,您可以通过几种方式实现此目的.您可以在活动窗口中设置FLAG_KEEP_SCREEN_ON:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

与之等效的XML是将属性添加android:keepScreenOn="true"到活动布局的根视图中.以编程方式设置标志的优点是您可以使用

getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

当您的活动运行时,您不再需要强制屏幕保持打开状态.

控制屏幕(以及某些其他资源)的另一种方法是使用唤醒锁:

mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();
Run Code Online (Sandbox Code Playgroud)

清单必须包含此权限:

<uses-permission android:name="android.permission.WAKE_LOCK"/>
Run Code Online (Sandbox Code Playgroud)

但是,正如本教程中所讨论的,唤醒锁更适合其他用例(例如,在屏幕关闭时需要CPU继续运行的服务或后台任务).

  • @AlexLockwood - 对于OP的应用,第一种方法更好.但是,采用"不使用唤醒锁定"的政策是错误的.唤醒锁可以更好地控制屏幕开启状态.当活动仅需要在短时间内保持屏幕时,可以释放唤醒锁定,从而节省电池寿命.使用第一种方法,屏幕在活动处于前台的整个时间内保持打开状态.此外,服务代表活动执行工作时不能使用第一种方法. (11认同)
  • 第一个选择******更好......不要使用唤醒锁!! 它需要清单中的额外权限!http://stackoverflow.com/a/2134602/844882 (6认同)

Lia*_*rth 48

我发现这个解决方案更容易:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
    ...
    android:keepScreenOn="true"> // Add this line
Run Code Online (Sandbox Code Playgroud)

只需将其添加到您的活动布局XML即可.

  • 那很干净. (4认同)

use*_*305 7

据我了解你的问题,我认为你必须WAKE_LOCK在你的应用程序中使用它.

就像是,

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");    
mWakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)

在你的应用程序的manifest.xml文件文件中添加这个,

<uses-permission android:name="android.permission.WAKE_LOCK" />
Run Code Online (Sandbox Code Playgroud)

  • [**请不要使用唤醒锁**](/sf/ask/149236391/#2134602) (2认同)