高通平台 android 12 定时开关机

news/2024/10/22 6:16:57/

高通平台 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


http://www.ppmy.cn/news/353853.html

相关文章

电脑定时开关机

一、设置电脑准时开机。 1.开机按Del键&#xff0c;进入BIOS设置程序画面。 3 2.选择“PowerManagementSetup”(电源管理设置)选项。 4 3.将“MousePowerOn”的值改为“Enabled” 5 4.设置定时开机时间 6 5.按键盘上的F10键保存并退出BIOS,设置完成 END 方法/步骤…

小米手机开机自启动软件及定时开关机

定时开关机 开发者模式 设置->我的设备 全部参数 连击MIUI版本七次 屏幕锁屏 解除屏幕上滑解锁 设置->更多设置 开发者选项 选择直接进入系统 开机自启动软件 AndroidManifest.xml中添加监听权限和后台弹出的权限 <uses-permission android:name"android.per…

定时开关机的八种方法

http://blog.sina.com.cn/s/blog_4e11110b0100e1z6.html “你会开机吗&#xff1f;”如果笔者问大家这样的问题&#xff0c;想必会引来一大堆的臭鸡蛋。不过笔者现在是要问“你知道有几种开机方法&#xff1f;”想必没有多少人能完全回答上来。因为除了接上电源&#xff0c;按…

电脑怎么设置计算机系统,电脑定时开关机如何设置?

有时候我们需要电脑自动关机&#xff0c;以防看着电影或电视呼呼睡着了。就不用麻烦再起来一次关电脑了&#xff0c;电脑定时开机&#xff0c;对于那些上班经常迟到的用户来说&#xff0c;也是很方便的。那么要如何设置电脑定时开关机呢&#xff1f;相信很多用户还不知道吧&…

win10系统 如何设置定时开关机?

感谢有一位帅哥或美女大驾光临&#xff0c;给你倒茶水了。 电脑是可以设置自动定时关机的&#xff0c;这样比较适用于电脑正在下载或者更新系统的时候&#xff0c;不过Windows系统不同&#xff0c;设置定时关机的代码也是不一样的&#xff0c;那么最新版的win10系统应该如何设…

定时开关机-Android4.4/6.0

一、寄存器介绍——RTCSA & RTCSAR 1.RTC是Real Time Clock的简称&#xff0c;是一个时钟芯片。它在硬件电路上单独供电&#xff0c;当系统关机时&#xff0c;CPU和其他外部硬件设备全部掉电&#xff0c;但是RTC仍然继续工作. RTC可以读取到RTCSR和RTCSAR寄存器中的数据。…

windows系统设置定时开关机的方法

windows系统设置定时开关机的方法文章目录&#xff1a; 一、windows设置定时开机1、windows7 设置定时开机2、windows10 定时开机 二、 windows定时关机 你是否想启动懒人模式&#xff0c;你是否想每天人还没有到公司&#xff0c;电脑已经悄悄打开&#xff0c;其实只要设置固定…

Windows系统中设置定时开关机方法

编写不易&#xff0c;如有转载&#xff0c;请声明出处&#xff1a;http://blog.csdn.net/zxc514257857/article/details/72858312 前言 使用系统自带的任务计划及Bios方式设置Windows系统的定时开关机 定时关机 通过系统自带的任务计划实现定时关机 “开始”—>“附件”—&…