在我的应用还有很长的加载过程中,如果设备戴上屏幕锁,我的进程将停止出于某种原因。
我怎样才能防止自动锁屏的设备?
在我的应用还有很长的加载过程中,如果设备戴上屏幕锁,我的进程将停止出于某种原因。
我怎样才能防止自动锁屏的设备?
您必须声明该使用许可权的AndroidManifest:
<uses-permission android:name="android.permission.WAKE_LOCK" />
而在你的代码的活动:
PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Lock");
wakeLock.acquire();
只要记住释放此锁,当你的应用程序被暂停或这样做销毁处理:
wakeLock.release();
通常情况下,它的建议打电话给你活动的onResume()内的获取方法及的onPause() 释放方法。 我们保证这样我们的应用程序仍处于被暂停或恢复的情况下表现良好。
保持屏幕的另一种方式锁定,而不必要求准许参加manifiest是:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
你在做的UI线程你长期加载过程? 事情似乎并不正确 - 如果这个过程是如此之久,屏幕锁定timesout和你的结束过程,也许需要在后台服务中去。
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE);
lock.disableKeyguard();
在androidmanifest:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
要么
按照此链接
下面一行使您的手机设置为ON时,应用程序是在前台
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
下面的说明让我们在按下锁定按钮禁用锁定屏幕。 KeyguardLock类是在API级别13弃用
/*onCreate*/
KeyguardManager keyguardManager = (KeyguardManager)getSystemService(Activity.KEYGUARD_SERVICE);
KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); // Deprecated :/
lock.disableKeyguard();
而在你的清单:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
XML方式:
只需使用keepScreenOn
属性,在父布局:
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
编程方式:
您可以通过添加标志编程设置:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
这还没有提到一个有趣的选择是
View#setKeepScreenOn(boolean onOff)
方法。 这实际上可以被动态地在任意点应用程序的运行时期间使用,例如,用于设定根据该应用状态屏幕模式
用钥匙防护代码的工作完美去,
在Android清单文件的mainactivity文件和权限在onCreate方法的代码只需粘贴