我有一个Activity
,通常需要一些时间来观看屏幕而不与其进行交互。
问题在于,屏幕会像几乎所有其他应用程序一样关闭。
我希望防止我的Activity
自动关闭屏幕,就像Dolphin HD那样(如果您从设置菜单中进行配置)。
我想让用户按下常规锁定按钮关闭屏幕,但在我的Activity
中防止设备自动锁定。
我该如何实现这一点?
谢谢。
我有一个Activity
,通常需要一些时间来观看屏幕而不与其进行交互。
问题在于,屏幕会像几乎所有其他应用程序一样关闭。
我希望防止我的Activity
自动关闭屏幕,就像Dolphin HD那样(如果您从设置菜单中进行配置)。
我想让用户按下常规锁定按钮关闭屏幕,但在我的Activity
中防止设备自动锁定。
我该如何实现这一点?
谢谢。
android:keepScreenOn="true"
,只要该小部件在屏幕上可见,屏幕就不会自动关闭。WakeLock
,从技术上讲它确实有效。但是,您必须手动释放WakeLock
(如果出错,屏幕将长时间保持亮着)。并且,由于您可能会出错,所以需要WAKE_LOCK
权限。使用keepScreenOn
可以避免所有这些问题。keepScreenOn=true
,最初它按预期工作。然而,当进行屏幕旋转的配置更改时,显示屏没有保持开启状态。 - AdamHurwitz要即时更改它,请执行以下操作:
if (keepScreenOn)
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
else
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Android文档中保持设备唤醒列出了每个解决方案。
文档 - 使用唤醒锁的替代方法
对于Fragment,请使用程序化方法,这样消耗的电池更少。
activity!!.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
activity!!.window.clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON)
对于我的用例,我在onStop()
中调用它,这样当退出显示媒体内容的Fragment时,屏幕会默认返回正常配置。
keepScreenOn=true
在存在诸如Fragment的屏幕旋转等配置更改时无效。
注意:Android的保持设备唤醒文档应相应更新以处理此情况。
文档 - 使用唤醒锁保持CPU运行
唤醒锁可以更好地控制设备的特定元素保持唤醒,但它会消耗更多电池,并且由于系统不会自动处理,因此重要的是手动释放它以节省电池。
对于 "Xamarin Android":
Window.AddFlags(WindowManagerFlags.KeepScreenOn);
您需要在清单文件中添加WAKE_LOCK,并在应用程序内根据需要设置和删除它。 请参阅此处的Google文档以了解PowerManager.WAKE_LOCK。
http://developer.android.com/reference/android/os/PowerManager.html