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

本实验基于Android6.0

一 概述:

Android系统的定时开关机的实现分为定时开机和定时关机两部分,其中定时关机比较容易,因为不需要底层驱动的配合,只需要发特定广播就可以完成,而定时开机的实现稍微麻烦一些,因为需要底层RTC驱动的配合。

二 定时关机

定时关机实现核心代码:

XML文件: 提升apk系统权限,增加关机权限。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="xxxxxxxxxxxxx"
          android:versionName="1.0"
          android:sharedUserId="android.uid.system"> //与系统一样的uid,将apk提升为系统权限

<uses-permission android:name="android.permission.SHUTDOWN"/> //该权限只有系统级apk才能使用

JAVA 核心代码

	// 创建Intent,如果要重启,则使用 Intent.ACTION_REBOOT
    Intent shutdownIntent = new Intent(Intent.ACTION_REQUEST_SHUTDOWN);
	
	// 这里设置的是:是否需要用户确认,若不需要,可以不设置或设置为false 
    shutdownIntent.putExtra(Intent.EXTRA_KEY_CONFIRM, false);
	
	// 当作新任务执行 
    shutdownIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
	
	//启动Activity
    mcontext.startActivity(shutdownIntent);

三 定时开机

本人用的主板rtc驱动用的是HYM8563.c ,注册RTC驱动设备接口在:/sys/class/rtc/rtc0/device/alarm ,所以定时开机的逻辑便是上层向/sys/class/rtc/rtc0/device/alarm设备节点写入定时开机的时间给 rtc驱动即可。

四 验证

可以通过 adb shell 的发送广播指令来验证,或者麻烦一点自己写一个app界面,其实道理很简单,就是发送广播给定时开关机BroadcastReceiver,定时开关机BroadcastReceiver 接收到指定广播后,控制定时开机 或者 控制定时关机

代码有时间贴。

猜你喜欢

转载自blog.csdn.net/LinuxArmbiggod/article/details/85254263