android 12 apk运行期间防止息屏

这段时间做android 应用开发需要软件运行期间,禁止休眠的需求,在网上查找了一些资料并且自己尝试之后也确实有效果,在这边自己记录一下,以防止需要的时候另外去找。

一、持有WakeLock

  添加休眠锁,休眠锁的话必须要成对的出现。并且需要在AndroidMainfest.xml文件中添加权限,官方并不推荐使用这种方式亮屏,所以不过多得去说了直接亮代码就好。

 .class类中:

复制代码
 1 private WakeLock mWakeLock = null;
 2   
 3 private void acquireWakeLock() {
 4   if(mWakeLock == null) {
 5    
 6     PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
 7      
 8     mWakeLock = pm.newWakeLock(
 9       PowerManager.PARTIAL_WAKE_LOCK | 
10       PowerManager.ACQUIRE_CAUSES_WAKEUP, 
11        this.getClass().getCanonicalName());
12         
13     mWakeLock.acquire();
14   }
15   
16 }
17  @Override
18  protected void onResume() {
19    super.onResume();
20    acquireWakeLock();
21  }
22  
23  @Override
24  protected void onPause() {
25    super.onPause();
26    releaseWakeLock();
27  }
28  
29 private void acquireWakeLock(){
30  if(mWakeLock != null) {
31  mWakeLock.acquire();
32  }
33 }
34 private void releaseWakeLock() {
35   if(mWakeLock != null) {
36     mWakeLock.release();
37     ///mWakeLock = null;
38   }
39 }
复制代码

 在AndroidManifest.xml文件中添加权限:

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DEVICE_POWER" />

  WakeLock 获取时相关的flag如下所示:

  • PARTIAL_WAKE_LOCK :保持CPU 运转,屏幕和键盘灯有可能是关闭的。
  • SCREEN_DIM_WAKE_LOCK :保持CPU 运转,允许保持屏幕显示但有可能是灰的,允许关闭键盘灯
  • SCREEN_BRIGHT_WAKE_LOCK :保持CPU 运转,允许保持屏幕高亮显示,允许关闭键盘灯
  • FULL_WAKE_LOCK :保持CPU 运转,保持屏幕高亮显示,键盘灯也保持亮度

二、在Window设置flag

  在Activity布局中设置Window属性进行控制,但是一定要在加载布局之前执行,这个方法也同样的有局限性,只有在Activity类中有效,退出了Activity就会失效。优点在于不需要申请权限,也不需要考虑没有释放未使用的资源,代码如下:

复制代码

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在Activity布局中设置Windows属性进行控制,但是一定要在加载布局之前执行,
// 此种方法的局限性是只有在Activity类中有效,Activity退出时失效。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//或者设置下面的也一样 //getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
复制代码

三、在界面布局xml中顶层添加属性

  在View布局中添加属性,这个方法的好处是不一定非要在Activity界面运行时屏幕常亮才有效果,View启动之后可以根据需要自主设置。

<relativelayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
 ...
</relativelayout>

这个设置 android:keepScreenOn=“true” 等同于FLAG_KEEP_SCREEN_ON

代码中执行是否保持屏幕常亮:

View.setKeepScreenOn(true);
View.setKeepScreenOn(false);

以上内容除去第一种方法自己没有去测试,其它的方法都是可以的。

posted @   是小杰哦  阅读(596)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示