高通平台 android 12 定时开关机

  • 关机
    • 关机实现
    • 开机实现
  • 总结

关机

AlarmManager取消了RTC_POWEROFF_WAKEUP 不支持通过AlarmManager设置关机唤醒设备。
只有AlarmManager.RTC_WAKEUP 可用

关机实现

    /*** 设备关机. <br/>* 需要系统APP:android:sharedUserId="android.uid.system" <br/>* 需要权限:uses-permission android:name="android.permission.SHUTDOWN" <br/>*/public void setPowerOFF(Long time) {Log.d("Request","powe off intent time:"+time);Intent intent = new Intent(ACTION_REQUEST_SHUTDOWN);//是否显示关机提示dialog,true显示false不显示直接关机intent.putExtra(EXTRA_KEY_CONFIRM, false);intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//获取闹钟的id,给定时设置一个随机id,这样可以设置多个定时器,否则会被覆盖掉int alarmId = getIntRandom();long intervalMillis = 24 * 3600 * 1000;Log.d("Request","powe off alarmId:"+alarmId);PendingIntent pi = PendingIntent.getActivity(mContext, alarmId, intent,  PendingIntent.FLAG_IMMUTABLE);AlarmManager manager = (AlarmManager)mContext.getSystemService(ALARM_SERVICE);//设置重复定时,intervalMillis重复定时的间隔时间。根据自己的需求来设置定时//manager.setRepeating(AlarmManager.RTC_WAKEUP, time, intervalMillis, pi);//设置一次定时,根据自己的需求来设置定时manager.set(AlarmManager.RTC_WAKEUP, time, pi);}

开机实现

高通平台提供了PoweroffAlarm 功能 通过调用此系统组件来实现开机

<manifest xmlns:android="http://schemas.android.com/apk/res/android"android:shareUserId="android.uid.system"><uses-permission android:name="org.codeaurora.permission.POWER_OFF_ALARM">

在app端发送广播

    public void setPowerON(Long time) {//发送广播Intent powerOnIntent = new Intent(ACTION_SET_POWEROFF_ALARM);powerOnIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);powerOnIntent.setPackage(POWER_OFF_ALARM_PACKAGE);powerOnIntent.putExtra(TIME, time);mContext.sendBroadcast(powerOnIntent);}

具体实现有如下分析

高通提供的关机闹钟实现

 //PowerOffAlarmUtils.javapublic static long setAlarmToRtc(long alarmTime){long currentTime = System.currentTimeMillis();long alarmInRtc = getAlarmFromRtc();long rtcTime = getRtcTime();// calculate the alarm to rtclong timeDelta = alarmTime - currentTime - MS_IN_ONE_MIN;if(timeDelta <= 0){Log.d(TAG, "setAlarmToRtc failed: alarm time is in one miunute");return FAILURE;}long alarmTimeToRtc = timeDelta/SEC_TO_MS + rtcTime;try{IAlarm mProxy = IAlarm.getService(true);int ret = mProxy.setAlarm(alarmTimeToRtc);if(ret == SUCCESS){return alarmTimeToRtc;}else{return FAILURE;}}catch{return FAILURE;}}

IAlarm

Return<int32_t> Alarm::setAlarm(int64_t time){int fd, rc;struct tm alarm_tm;struct rtc_wkalrm rtc_alarm;time_t alarm_secs = 0;ALOGD("alarm hal setAlarm time");// #define DEFAULT_RTC_DEV_PATH = "dev/rtc0"fd = open(DEFAULT_RTC_DEV_PATH, O_RDONLY);if(fd < 0){ALOGE("Open rtc dev failed when set alarm!");return fd;}alarm_secs = time;gmtime_r(&alarm_secs, &alarm_tm);rtc_alarm.time.tm_sec = alarm_tm.tm_secrtc_alarm.time.tm_min = alarm_tm.tm_minrtc_alarm.time.tm_hour = alarm_tm.tm_hourrtc_alarm.time.tm_mday = alarm_tm.tm_mdayrtc_alarm.time.tm_mon = alarm_tm.tm_monrtc_alarm.time.tm_year = alarm_tm.tm_yearrtc_alarm.time.tm_wday = alarm_tm.tm_wdayrtc_alarm.time.tm_yday = alarm_tm.tm_ydayrtc_alarm.time.tm_isdst = alarm_tm.tm_isdstrtc_alarm.enabled = 1;// 设置定时时间rc = ioctl(fd, RTC_WKALM_SET, &rtc_alarm);close(fd);if(rc < 0){ALOGE("Set alarm to rtc failed!");return rc;}return 0;
}

总结

高通平台 实现此功能 就是发送广播
一个开机广播
一个关机广播
处理好对应的权限 根据Android版本与log日志 排除bug即可

BR

高通平台 android 12 定时开关机相关推荐

  1. MTK平台Android 12自定义开关机动画铃声

    完整的patch见 https://download.csdn.net/download/a785722173/87036230 修改文件和Q平台大同小异 Android Q自定义开关机动画_a785 ...

  2. 高通平台android开发总结

    http://www.cnblogs.com/yuzaipiaofei/archive/2012/07/24/4124179.html 1.高通平台android开发总结 1.1 搭建高通平台环境开发 ...

  3. 高通平台android 环境配置编译及开发经验总结

    完全转自:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...

  4. 高通平台android开发总结 .

    http://blog.csdn.net/mirkerson/article/details/7691029 http://blog.csdn.net/mirkerson/article/detail ...

  5. 高通平台android 环境配置编译及开发经验总结【转】

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  6. 高通android开源代码下载,高通平台Android源码bootloader分析之sbl1(三)

    前两篇博文分析了启动流程.代码流程.cdt,接下来就分析另外几个需要格外关注的部分. ##log系统 sbl1中的log系统也是sbl1部分调试会经常接触得部分高通平台在sbl中做的log系统并不是很 ...

  7. 高通平台android开发总结 MSM平台上的AMSS

    http://blog.csdn.net/mirkerson/article/details/7691029 MSM平台上的AMSS REX启动分析--基于Qualcomm平台 1.高通平台andro ...

  8. Android系统定时开关机实现简述

    本实验基于Android6.0 一 概述: Android系统的定时开关机的实现分为定时开机和定时关机两部分,其中定时关机比较容易,因为不需要底层驱动的配合,只需要发特定广播就可以完成,而定时开机的实 ...

  9. 高通平台Android源码bootloader分析之sbl1(一)

    高通8k平台的boot过程搞得比较复杂, 我也是前段时间遇到一些问题深入研究了一下才搞明白.不过虽然弄得很复杂,我们需要动的东西其实很少,modem侧基本就sbl1(全称:Secondary boot ...

最新文章

  1. 抽象类可用于创建对象吗_野芝麻,见过吗?可用于肺热咳血、血淋、跌打损伤...
  2. 事件驱动数据管理 微服务和分布式数据管理问题
  3. 机房布线的最高境界 | 最后的暗黑系,真是亮瞎眼 ​
  4. 《机器学习实战》学习总结(三)朴素贝叶斯在文本分类的应用
  5. python动态属性_Python进阶之@property动态属性的实现
  6. java中json数组如何转为对象
  7. 最新服装零售软件管理排名
  8. 2018_7_5 自撰imrotate和bwlabel的matlab代码实现
  9. msg1500说明书_拆解电信定制 瑞斯达康MSG1500 双频路由器
  10. Linux安装Redis
  11. Git工具的基本使用(一)
  12. Kubernetes哪一点最打动你?或者,它发布过的哪一项特性让你认为最厉害?
  13. 赴日技术签证全攻略!
  14. Windows和Linux VPS/GDrive之间文件夹的实时单向/双向同步教程
  15. 实现图的邻接矩阵和邻接表存储
  16. 网页-如何控制台调试网页
  17. python收益风险点图_使用python matploblib库绘制准确率,损失率折线图
  18. 基于thinkjs 3.x 转发下载图片 示例
  19. distinct mysql性能_MySQL中distinct与group by之间的性能进行比较
  20. Redis核心技术-高可靠-集群方案(客户端分片、代理分片、Redis Cluster)

热门文章

  1. uiautomation函数讲解(下)
  2. Android artoolkitx渲染3D模型
  3. Photoshop实例教程:打造Apple光芒…
  4. 国内各大互联网公司技术团队站点
  5. bitcomet端口阻塞,黄灯,解决方案
  6. 手机中电容屏和电阻屏有什么区别?
  7. Word 宏代码:将〖〗内的文本作为脚注加在页下
  8. 夏曹俊FFmpeg 4.3 音视频基础到工程应用
  9. 高度塌陷问题及解决方法
  10. 何为高度塌陷,如何解决?