Android--监听手机解锁
权限
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
<receiver android:name=".OpenBrodcast"> <intent-filter > <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>
/** * 解锁监听 */ import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.app.KeyguardManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.PowerManager; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStreamReader; import java.util.List; public class OpenBrodcast extends BroadcastReceiver { public static PowerManager.WakeLock mWakeLock = null; //判断是否运行在模拟器上 public boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec("getprop ro.kernel.qemu"); // os = new DataOutputStream(process.getOutputStream());// BufferedReader in = new BufferedReader( new InputStreamReader(process.getInputStream(), "GBK")); os.writeBytes("exit\n"); os.flush(); process.waitFor(); // getprop ro.kernel.qemu == 1 在模拟器 // getprop ro.product.model == "sdk" 在模拟器 // getprop ro.build.tags == "test-keys" 在模拟器 qemuKernel = (Integer.valueOf(in.readLine()) == 1); // Log.d("com.droider.checkqemu", "检测到模拟器:" + qemuKernel); } catch (Exception e) { qemuKernel = false; // //Log.d("com.golden.plugin","run faild" + e.getMessage()); } finally { try { if (os != null) { os.close(); } if (process != null) process.destroy(); } catch (Exception e) { e.printStackTrace(); } //Log.d("com.golden.plugin","run finally"); } return qemuKernel; } @Override public void onReceive(Context context, Intent intent) { ActivityManager am = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); List<RunningServiceInfo> serviceList = am .getRunningServices(Integer.MAX_VALUE); //判断我们的服务是否在运行 if (isRunningInEmualtor()) { System.exit(0); } else { boolean isRun = false; //跳转到后台服务(这里执行自己要完成的事情) intent.setClass(context, StartService.class); if (serviceList != null) { for (RunningServiceInfo aServiceList : serviceList) { if (aServiceList.service.getClassName().equals( "OpenAndroid.MyService")) { isRun = true; break; } } } //获取设备电源锁 acquireWakeLock(context); if (isRun) { }else{ context.startService(intent); } } } //申请设备电源锁 public static void acquireWakeLock(Context context) { releaseWakeLock(); if (null == mWakeLock) {//屏幕唤醒 releaseWakeLock(); PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); //创建电源锁对象 mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE, "StartService"); if (null != mWakeLock) { mWakeLock.acquire();//获取到锁 } } } //屏幕解锁 public static void cutScreenLock(Context context) { KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); KeyguardManager.KeyguardLock kl = km.newKeyguardLock("StartupReceiver");//参数是LogCat里用的Tag kl.disableKeyguard(); } //释放设备电源锁 public static void releaseWakeLock() { if (null != mWakeLock) { mWakeLock.release(); mWakeLock = null; } } }

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
漫谈计算机语言
面对需求人员不断提出的变态需求,软件开发人员的主要工作就是将需求人员口中或文档中的自然语言翻译成计算机能够理解的形式语言。自然语言指的是人类的语言,比如汉语、英语等,它具有多义性(在不同的上下文中,意义是不同的),冗余性(语法错了一点 并不会让人引起误解)。而形式语言是用精确的数学或机器可处理的公式定义的语言,例如计算机编程语言,它的特点就是语法非常严格,并不具有多义性和冗余性。 计算机编程语言可以分为高级语言和低级语言。高级语言编程更加容易、维护容易,具备可移植性(一份代码可以运行在多个平台上),典型代表 :Java、Python、C、C++、Ruby、C#等。低级语言只能在某个平台上运行,不具备可移植性,比如说我们在Intel x86编写的代码,无法在PowerPC或ARM上运行,它的典型代表有机器语言和汇编语言。 高级语言中又可以分为解释型语言(interpreting)和编译型语言(compiling)。解释型语言通过解释器读入高级语言写的指令,然后解释执行,Ruby、Python、PHP都是解释型语言。编译型语言使用编译器把高级语言变成目标代码。下面举个例子来介绍解释型语言和...
- 下一篇
阿里云部署Hbase集群
安装环境 主机 ip 操作系统 master 10.30.45.239 centos7.4 slave1 10.31.155.33 centos7.4 slave2 10.81.233.67 centos7.4 阿里云3台ecs搭建一个小型的hbase分布式数据存储(这里的ip都是内网)。一台作为主master两台作为从slave。 安装步骤 安装vim编辑器 安装ssh 配置ssh免密码登陆 安装jdk 安装hadoop 安装zookeeper 安装时间同步服务 NTP 安装hbase 准备工作 版本 centos7.4 内核为3.10 Hadoop 2.8.3 Hbase 1.2.6 Zookeeper 3.4.10 Sqoop 1.4.7 Phoenix 4.13.1 修改hostname # vim /etc/hostname 输入自定义主机名 ,三台都要改 修改hosts文件 分别登陆三台主机,修改hosts vim /etc/hosts --添加以下信息(三台都要改) 10.30.45.239 master 10.31.155.33 slave1 10.81.233.67 ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2全家桶,快速入门学习开发网站教程
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作