以下這段code可以讓系統直接進入休眠狀態(前提是沒有wakelock被其他process取得)
主要是呼叫PowerManager的goToSleep()這個method,
並且呼叫之前設定一個alarm intent, 以便可以達到定時休眠和醒來的功能
private void doSleep() {
PowerManager pm = (PowerManager)ctx.getSystemService(Context.POWER_SERVICE);
AlarmManager am = (AlarmManager)ctx.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent();
intent.setAction("action.suspend.resume.wakeup");
PendingIntent pending = PendingIntent.getBroadcast(ctx, 0, intent, 0);
am.cancel(pending);
am.set(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis() + (5 * 1000), pending);
pm.goToSleep(SystemClock.uptimeMillis());
}
還要在AndroidManifest.xml增加權限
<uses-permission android:name="android.permission.DEVICE_POWER" />
恩, 不過這個權限也是要系統層級的權限才能取得
一般app應該也是做不到這件事...