Android系統定時開關機實現簡述
阿新 • • 發佈:2018-12-27
本實驗基於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 接收到指定廣播後,控制定時開機 或者 控制定時關機
程式碼有時間貼。