博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中监听锁屏变化和防止锁屏
阅读量:6353 次
发布时间:2019-06-22

本文共 1822 字,大约阅读时间需要 6 分钟。

hot3.png

Android app中可能存在某些可视化耗时操作,需要防止锁屏。

一、监听锁屏

添加权限

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

首先来看如何监听锁屏,使用BroadcastReceivercaset来监听

1.锁屏监听

public class ScreenBroadcastReceiver extends BroadcastReceiver {     private static final String TAG = "ScreenBroadcastReceiver";     @Override    public void onReceive(Context context, Intent intent) {         Log.i(context.getClass().getSimpleName(), intent.getAction());                 if(Intent.ACTION_USER_PRESENT.equals(intent.getAction())){  // 解锁时                                  }else if(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())){ // 锁屏时                     }    } }

从上得知,注册锁屏状态监听广播需要2个Action,

Intent.ACTION_USER_PRESENT 和 Intent.ACTION_SCREEN_OFF.

 

二、阻止锁屏

方法一,修改window的flag

getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

 

方式二,使用SDK 电源管理器PowerMangerKeyguardManager工具

参考:

//onResume  中启用  wakeLock = ((PowerManager) getSystemService(POWER_SERVICE))                .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK                        | PowerManager.ON_AFTER_RELEASE, TAG);  wakeLock.acquire();//onPause 中禁用  if (wakeLock != null) {    wakeLock.release();  }

此方法需要添加如下权限

方法三,修改系统settings(不推荐,开启后屏幕一直保持开启,还得手动修改settings)

ContentResolver mContentResolver = getContentResolver();  android.provider.Settings.Secure.putInt(mContentResolver, android.provider.Settings.Secure.LOCK_PATTERN_ENABLED,false);

 //但注意要加权限AndroidManifest.xml文件中加入 ,因此,系统需要root才行

  //
      //还要特别注意的是要加入 android:sharedUserId="android.uid.system",但有一个问题,      //如果加入了sharedUserId后就不能使用eclipse编译了,一定要手动通过 mm -B进行编译,然后把apk install到模拟器或设备中

方法四、配置keepScreenOn

在某些android高版本的View的中,有这样的属性(强烈推荐),可以进行配置

android:keepScreenOn="true"

try doing it

 

3.参考文章

 

 

转载于:https://my.oschina.net/ososchina/blog/347436

你可能感兴趣的文章
数据对象映射模式(通过工厂模式和注册树模式)v2
查看>>
4939 欧拉函数[一中数论随堂练]
查看>>
MySQL笔记(一)
查看>>
spring boot 包jar运行
查看>>
18年秋季学习总结
查看>>
Effective前端1:能使用html/css解决的问题就不要使用JS
查看>>
网络攻防 实验一
查看>>
由莫名其妙的错误开始---浅谈jquery的dom节点创建
查看>>
磨刀-CodeWarrior11生成的Makefile解析
查看>>
String StringBuffer StringBuilder对比
查看>>
bootstrap随笔点击增加
查看>>
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
面试题目3:智能指针
查看>>
取消凭证分解 (取消公司下的多个利润中心)
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>