java - 安卓实现熄屏功能。
问题描述
在APP中定义一个时间(假设为5分钟),记录两次操作APP之间的时间间隔,如果大于之前定义的时间,则APP端实现发出命令,手机屏幕熄灭。该功能要如何实现?
问题解答
回答1:第一点是锁屏这个功能吧,可以参考:https://github.com/chniccs/Lo...这个小项目就是锁屏功能的实现,代码量很少。
另外一点就是看你怎么定义每次操作,这里将把一个activity显示到前台当作一次操作,你也可以重写触摸监听去定义一些触摸操作为一次操作。1、写个BaseActivity,在onResume(这里用这个代表一次操作)中发出一个延时消息(广播或者其它handler),并记录当前时间(存储在自定义Application中或者一个全局单例或者持久化存储)2、根据前面发送延时消息的方式,如广播,在收到发出的广播消息后,取当前时间值与 1 步中记录的时间值进行比较,如果小于定义的时间值,则再次取两次时间值(存储的与当前的)的差值作为延时再发出一个广播。当下次再收到广播时,再进行判断,如果大于等于时间值,就调用锁屏。
说明:第 2 步中为什么要取差值而不是重新发一个固定延时的广播,这是因为在第一次发送广播后,可能你会进行一些操作,这些操作就后续的,也就是说当你收到延时广播时,最后一次操作的时间并不是发送广播时记录的时间,而是真实最后一次操作的时间。所以在每次操作后都需要对记录的时间值进行更新操作。
差值计算:定义的无操作固定最大时间 - (当前时间 - 最后一次操作时间)
回答2:采用Handler的postDelayed(Runnable, long)方法1.定义一个Handler类
Handler handler=new Handler(); Runnable runnable=new Runnable() { @Override public void run() { // TODO Auto-generated method stub //要做的事情 handler.postDelayed(this, 2000); } };
2.启动计时器
handler.postDelayed(runnable, 2000);
3.停止计时器
handler.removeCallbacks(runnable);
大概就是这么一个路数吧,时间自己决定咯
相关文章:
1. $fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题2. python - 求一个在def中可以实现调用本def满足特定条件continue效果的方法(标题说不太清楚,请见题内描述)3. java - mybatis怎么实现在数据库中有就修改,没有就添加4. javascript - 用表单提交两个时间段请求后台返回对应数据时出现的一些问题!5. MYSQL新建用户设置可以远程访问的问题6. angular.js - angularjs的自定义过滤器如何给文字加颜色?7. mysql - SQL操作时间的函数?8. docker api 开发的端口怎么获取?9. docker内创建jenkins访问另一个容器下的服务器问题10. node.js - nodejs和前端JavaScript 字符串处理结果不一样是什么原因?
![$fields = $values = [];这条代码一直定义不了,一直报错,老师的源码也是被报错的,执行不了,请问该怎么解决这个问题](http://www.haobala.com/attached/image/news/202205/093622cb60.png)