- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android自动开关机实现
动开机,网上的介绍就比较少了,因为它需要底层rtc时钟的支持。前段时间根据客户需求实现了自动开关机。在这里分享一下。
1. 简介
我的实现是在设置程序里面增加一个接口,让用户设置自动开关机,这个自动开关机的设置可以参照闹钟的设置。关于自动关机,考虑到关机的时候,用户可能正有一些重要的操作,那么应该给用户一个机会去取消当前的关机。
1)一个BroadcastReceiver, 接收如下信息:
a) 自定义的ACTION_REQUEST_POWER_OFF:设置auto power off时,通过AlarmManager设置的一个RTC_WAKEUP时钟。当到设置的关机时间时,之前设置到AlarmManager的这个action会被广播。我们实现的这个BroadcastReceiver接收到这个消息后,就要开始power off流程
b) 自定义的ACTION_REQUEST_POWER_ON:设置auto power on时,通过AlarmManager设置的一个RTC_WAKEUP时钟。我们知道power on的应该设置一个rtc的alarm,那么这个RTC_WAKEUP的alarm是做什么的呢?其实当用户设置自动关机的时候,我设置了2个时钟,一个是RTC时钟,用于关机状态下开机;还有一个就是这个RTC_WAKEUP时钟。之所以设置这个时钟,其实是这样的,比如说你设置了周一到周五每天7点半自动开机,而周四早上你7点就打开了手机,这样到7点半的时候,之前设置的时钟就过期了,如果不重新设置的话,周五早上是不会自动开机的。所以这个时候,之前设置的RTC_WAKEUP就接收到了这样的信息,在重新设置下次自动开机的时钟。
c) BOOT_COMPLETE和TIMEZONE changed, Time set等时间相关的action:当系统开机完成或时间、时区发生改变时,都需要重新设置alarm。
2)一个处理power off 的Service,当BroadcastReceiver接收到ACTION_REQUEST_POWER_OFF,我们给用户一个机会去取消当前的自动关机。这个Service的作用就是启动一个无背景的页面,给用户提示。同时播放之前用户设置的提示音或振动。
3)一个Activity:显示一个dialog提示用户要自动关机,并用一个计时器倒计时。当用户确认关机,或者计时器到时间的时候,就关机。否则取消当前关机,并重设下次自动关机alarm。
2. 自动关机的实现。自动关机的实现比较简单,这里主要说一下怎么设置alarm,和实现关机:
1) 设置自动关机的alarm:
??AlarmManager am = (AlarmManager) context
? ?? ?? ?? ?? ? .getSystemService(Context.ALARM_SERVICE);
? ?? ???Intent intent = new Intent(
? ?? ?? ?? ?? ? com.android.settings.action.REQUEST_POWER_OFF);
? ?? ???PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0,
? ?? ?? ?? ?? ? intent, PendingIntent.FLAG_CANCEL_CURRENT);
? ?? ???am = (AlarmManager) context
? ?? ?? ?? ?? ? .getSystemService(Context.ALARM_SERVICE);
? ?? ???am.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
复制代码
2)自动关机掉的是./frameworks/base/services/java/com/android/server/ShutdownActivity.java:
??Intent newIntent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
? ?? ???newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
? ?? ???startActivity(newIntent);
复制代码
Intent.ACTION_REQUEST_SHUTDOWN是Intent里面一个隐藏的action。 3. 自动开机的实现。一直在做上层应用和framework,对于底层不是很熟悉。正好有同事之前做过关机闹铃,所以把他之前的实现稍加改动就可以了。在系统power off的状态下自动开机
您可能关注的文档
- 4-3-4新设备培训记录.doc
- 4.20 关汉卿散曲二首 课件(粤教版选修之《唐诗宋词元散曲选读》).doc
- 4.2010年全国职业院校技能大赛高职组“汽车维修与故障诊断排除”项目文新的件.doc
- 2016年一建考试《建设工程法规及相关知识》基础学习班讲义.doc
- 4符合性审查申请书-企业监控平台(样例).doc
- 5.7产品安全与危害告知.doc
- 6T锅炉拆除移装施工_secret.doc
- 7月5-10日网商特训营第21期招生简章--广州站.doc
- 240t煤粉炉技术规范书.doc
- 8256+《基础会计学》11春期末复习指导.doc
- 安徽省合肥市望龙中学2024~2025学年九年级上学期化学期中模拟试题(解析版).pdf
- 安徽省淮北市2024-2025学年七年级上学期期末语文试题(解析版).pdf
- 第三单元 课题1 第2课时 分子可以分为原子.ppt.pptx
- 安徽省淮北市部分学校2024-2025学年九年级上学期1月期末数学试题(解析版).pdf
- 安徽省淮北市部分学校2024-2025学年八年级上学期期末语文试题(解析版).pdf
- 安徽省淮北市部分学校2024-2025学年九年级上学期1月期末物理试题(解析版).pdf
- 安徽省淮北市部分学校2024-2025学年七年级上学期期末生物试题(解析版).pdf
- 安徽省淮北市部分学校2024-2025学年九年级上学期11月期中历史试题(解析版).pdf
- 安徽省淮北市部分学校2024-2025学年九年级上学期期末语文试题(解析版).pdf
- 安徽省淮北市2024-2025学年上学期七年级期中考试数学试题卷(解析版).pdf
原创力文档


文档评论(0)