Android中apk中息屏、亮屏新思路

备注:

1.【项目的apk是跑在自己Android6.0主板设备上,上层是拥有Root权限的】
2.【本文中提到息屏是指在BroadcastReceiver中接收到ACTION_SCREEN_ON的操作;
亮屏是接收到Intent.ACTION_SCREEN_OFF操作】;

业务需求

  • 公司的设备是一个带显示屏Android(6.0 Root)板的智能终端,有人体感应头,现在需要在apk上层做逻辑是:感应到人就点亮屏(这个easy),默认2分钟后如果没感应到人就息屏
  • 先说说我的最终息屏解决方式是利用Runtime调用Linux-shell发送ADB命令"input keyevent 223"模拟电源按键息屏;【项目的apk是跑在自己Android6.0主板设备上,拥有Root权限】

开工

  • 先想到是直接用PowerManager.WakeLock的acquire()和release()配合一下就搞定了(当初就是这么天真),结果是点屏幕是没问题的,但是就是不能息屏;

  • 本人是菜鸡直接就是百度了,结果网上就是一波PowerManager应用反射goToSleep(long time)
    如获至宝,然而goToSleep需要Requires signature permission系统签名【Android权限等级见下表】,还是很折腾的,自己搞不定继续百度希望有大佬贴出实现代码;

  • 在网上逛一圈发现关于PowerManager息屏基本上都是讲理论,没有发现贴出来代码的,有些贴出来的可能是低版本系统上编译的吧,在我的AS上buildToolsVersion:"26.0.1"编译不过

  • 后来看到用DevicePolicyManager实现的就是代码量有点大,而且还要申请k系统管理权限,有点烦,但是在网上copy了一个demo,在设备上run一下功能是Ok的,于是学习一下API就开始往工程里塞了;

  • 当然期间在网上看到各种“奇葩的”实现方式,例如:广播或者设置设置windows的flag等许多方式,总之在实践中全部都没有效果

Android权限等级protectio

  • 12
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值