1、系统定时开关机需要系统权限,所以需要apk做系统签名。

2、在AndroidManifest.xml文件的头部的 标记中添加系统权限。
android:sharedUserId=“android.uid.system”

注意:设置定时开机后,如果改设置没有到时间,无法更改定时开机时间。

定时开机控制代码:(time 相对与当前时间的秒数,时间单位秒)
public fun timedSetAlarm(time: Int) {
val cmd = “echo $time > sys/class/rtc/rtc0/setalarm \n”
try {
val exeEcho = Runtime.getRuntime().exec(“sh”)
exeEcho.outputStream.write(cmd.toByteArray())
exeEcho.outputStream.flush()
} catch (e: Exception) {
Log.e(“Exception”, e.message)
}
}

    public fun timedWakeAlarm(time: Int) {val cmd = "echo $time  > sys/class/rtc/rtc0/wakealarm \n"try {val exeEcho = Runtime.getRuntime().exec("sh")exeEcho.outputStream.write(cmd.toByteArray())exeEcho.outputStream.flush()} catch (e: Exception) {Log.e("Exception", e.message)}}

定时关机:
自定义一个服务,在服务中定义一个线程,10秒循环判断定时时间的小时和分钟是否等于设定时间,等于目标时间就调用下面方法关机。
// 关机
public fun shutdown() {
val cmd = “reboot -p \n”
try {
val exeEcho = Runtime.getRuntime().exec(“sh”)
exeEcho.outputStream.write(cmd.toByteArray())
exeEcho.outputStream.flush()
} catch (e: Exception) {
Log.e(“Exception”, e.message)
}
}

使用RTC_WAKEUP方式定时关机,但是亲测发现关机时间偏差太大,不建议使用该方案。
// public void timedShutdown(Context context, long time) {
// log(“====timedCloseMachine()”);
// AlarmManager mAlarmManager = (AlarmManager)context.getSystemService(ALARM_SERVICE);
// Intent intent = new Intent(“eloam.intent.action.ACTION_SHUTDOWN”);
// PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1002, intent, PendingIntent.FLAG_CANCEL_CURRENT);
// mAlarmManager.set(AlarmManager.RTC_WAKEUP, time, pendingIntent);
// }

RTC 使用

AIO-3568J开发板采用HYM8563作为RTC(Real Time Clock),HYM8563是一款低功耗CMOS实时时钟/日历芯片,它提供一个可编程的时钟输出,一个中断 输出和一个掉电检测器,所有的地址和数据都通过I2C总线接口串行传递。最大总线速度为 400Kbits/s,每次读写数据后,内嵌的字地址寄存器会自动递增

可计时基于 32.768kHz 晶体的秒,分,小时,星期,天,月和年

宽工作电压范围:1.0~5.5V

低休眠电流:典型值为 0.25μA(VDD =3.0V, TA =25°C)

内部集成振荡电容

漏极开路中断引脚

RTC驱动
Android SDK中的DTS配置参考: kernel/arch/arm64/boot/dts/rockchip/rk3568-firefly-port.dtsi

&i2c5 {
status = “okay”;

    hym8563: hym8563@51 {status = "okay";compatible = "haoyu,hym8563";reg = <0x51>;#clock-cells = <0>;rtc-irq-gpio = <&gpio0 RK_PD3 IRQ_TYPE_EDGE_FALLING>;clock-frequency = <32768>;};

};
驱动参考:kernel/drivers/rtc/rtc-hym8563.c

接口使用
Linux 提供了三种用户空间调用接口。在 AIO-3568J开发板中对应的路径为:

SYSFS接口:/sys/class/rtc/rtc0/

PROCFS接口: /proc/driver/rtc

IOCTL接口: /dev/rtc0

SYSFS接口
可以直接使用 cat 和 echo 操作 /sys/class/rtc/rtc0/ 下面的接口。

比如查看当前 RTC 的日期和时间:

#cat /sys/class/rtc/rtc0/date
#cat /sys/class/rtc/rtc0/time
03:35:01
设置开机时间,如设置 120 秒后开机:

#120秒后定时开机
echo +120 > /sys/class/rtc/rtc0/wakealarm

查看开机时间
cat /sys/class/rtc/rtc0/wakealarm

#关机
reboot -p

PROCFS 接口
打印 RTC 相关的信息:

#cat /proc/driver/rtc
rtc_time : 03:36:05
rtc_date : 2021-03-10
alrm_time : 03:37:59
alrm_date : 2021-03-10
alarm_IRQ : yes
alrm_pending : no
update IRQ enabled : no
periodic IRQ enabled : no
periodic IRQ frequency : 1
max user IRQ frequency : 64
24hr : yes

IOCTL接口
可以使用 ioctl 控制 /dev/rtc0。

详细使用说明请参考文档 rtc.txt 。

Q1: 开发板上电后时间不同步?
A1: 检查一下 RTC 电池是否正确接入。

Android系统定时开关机相关推荐

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

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

  2. 高通平台 android 12 定时开关机

    高通平台 android 12 定时开关机 关机 关机实现 开机实现 总结 关机 AlarmManager取消了RTC_POWEROFF_WAKEUP 不支持通过AlarmManager设置关机唤醒设 ...

  3. Android 8.1 第三方apk通过数据库调用系统定时开关机功能

    由于客户需要我们提供API给到他们实现定时开关机功能 做的是展锐的方案,简单看下原厂如何实现该功能 1.展锐创建了一个sqlite数据库用来存放定时开关机相关数据 vendor\sprd\platfo ...

  4. android中定时开关机的实现

    关于android自动关机,网上有很多应用程序和例子. 相对于自动开机来说,自动关机可以在应用层通过设置alarm来实现.而自动开机,它需要底层rtc时钟的支持.我自己也没做过这个,不过在网上查到一个 ...

  5. Android 实现定时开关机另类实现--BSP级

    前言: 条件,定时关机不能关机,只能待机:要能定时"开机"(唤醒) 1.定时"关机"(待机) 众所周知android 有wakelock 在有wakelock ...

  6. windows无法访问指定设备_万能的Windows定时开关机设置方法详解,不需要BIOS支持...

    前面写了一篇文章[Windows定时开关机,让你告别开机烦恼,也不用担心忘关电脑了 ]来为电脑设置定时开关的功能,但是定时开机需要主板和BIOS的支持才能实现.在没有硬件支持的情况下我们该如何实现定时 ...

  7. Android:android定时开关机

    android定时关机 (记住一定要在源码下编译生成apk,也就是放在源码的package/app下编译!!!) 先看一下简单的图形界面吧,比较简单的实现定时关机!!!(我的上传资源中有整个工程:注: ...

  8. Android 10 Settings应用如何去掉一级菜单定时开关机

    代码路径: packages/apps/Settingssrc/com/android/settings/core/gateway/SettingsGateway.java packages/apps ...

  9. 魅蓝e android无限重启,魅蓝E手机怎么设置定时开关机 魅蓝E定时开关机设置图文教程...

    上手魅蓝E手机之后,整体感觉还不错,尤其是外观工艺良好,日常使用流畅度很高.此外,小编还发现魅蓝E有一个比较赞的功能,支持定时开关机,这是目前iPhone都没有的功能.话不多说,本文主要分享一下魅蓝E ...

  10. 定时开关机实现原理-Android4.4/6.0

    原址 一.寄存器介绍--RTCSA & RTCSAR 1.RTC是Real Time Clock的简称,它在硬件电路上单独供电,当系统关机时,CPU和其他外部硬件设备全部掉电,但是RTC仍然继 ...

最新文章

  1. python 对象真假值的实例(哪些视为False)
  2. 配置java ee_Java EE中的配置管理
  3. Python 查看pip安装的包的位置(查看pip安装包的路径)
  4. 专访uPlane陈宏强:手机遥控固定翼飞机还是蓝海
  5. linux下使用过的命令总结(未整理完)
  6. 并发编程(进程与线程)
  7. HDU2006 求奇数的乘积【入门】
  8. ubuntu下vlc-android编译
  9. jdbc增删改查_JDBC和MyBaits之争,Debug告诉你谁更胜一筹
  10. php旧物交易开源代码_二手市场交易网站PHP
  11. STM32——FLASH闪存编程原理与步骤
  12. 谷歌学术镜像mark
  13. vs2019控件灰化无法使用怎么解决
  14. Macbook Pro M1(macOS 12.0)读取NTFS移动硬盘方法
  15. 《计算机工程》期刊投稿经验分享
  16. Windows 7使用宝典安装技巧篇之——如何在Win7桌面上显示“我的电脑”
  17. epic如何修改着色器缓存路径
  18. visitor 模式
  19. 色色的互联网名词解释整理
  20. 大家常见的以ESP32为代表的WIFI、蓝牙双模模块,今天启明云端带来了一款低功耗、距离远的LoRa+蓝牙无线通讯模块WT5105-L1,我们一起看看这款模块在功能上有哪些优势?

热门文章

  1. python报时功能_Python(PyS60)做的简单语音整点报时的实现
  2. 小白重装系统步骤总结
  3. html m3u8 flash,m3u8插件-支持在pc端(flashplayer)播放m3u8格式文件-ckplayer使用方法...
  4. 家用电器行业十二月行业动态报告:11月冰洗表现亮眼,空调价格回升持续(20201231).PDF
  5. 【智能安防监控补光灯调光芯片方案】单节锂电降压恒流驱动芯片FP8013 最大输出3A体积小/静态功耗低/效率高/支持无频闪调光
  6. 如何将Excel表格随机打乱顺序
  7. MOFs/COFs单体 COFs单体 光电材料中间体的应用
  8. 如何使用计算机文件共享,两台电脑如何共享文件?【步骤图解】
  9. 4.1 Python图像的图像恢复-空域噪声滤波器
  10. java玫瑰花代码_给爱人的玫瑰花表白程序代码–Java版 | 学步园