在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    Android 發(fā)送進(jìn)入休眠廣播,實(shí)現(xiàn)自定義屏保功能

  • 關(guān)閉系統(tǒng)屏保功能frameworksbasecoreresresvaluesconfig.xml
  • false

    2.檢測(cè)系統(tǒng)在即將進(jìn)入休眠時(shí),發(fā)送進(jìn)入屏保廣播frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

    — a/alps/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java+++ b/alps/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java@@ -136,6 +136,12 @@ import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import android.app.ActivityManager;+import android.app.ActivityManager.RunningTaskInfo;+import android.os.BatteryManager; import static android.view.WindowManager.LayoutParams.*; import static android.view.WindowManagerPolicy.WindowManagerFuncs.LID_ABSENT; import static android.view.WindowManagerPolicy.WindowManagerFuncs.LID_OPEN;@@ -210,6 +216,16 @@ public class PhoneWindowManager implements WindowManagerPolicy { static public final String SYSTEM_DIALOG_REASON_HOME_KEY = “homekey”; static public final String SYSTEM_DIALOG_REASON_ASSIST = “assist”; ++ private String GOTO_SCREEN_SAVER = “com.intent.gotoScreenSaver”;//自定義屏保廣播+ private int batteryStatus = -1; /// M: for build type check static final boolean IS_USER_BUILD = (“user”.equals(Build.TYPE) || “userdebug”.equals(Build.TYPE));@@ -1443,6 +1459,13 @@ public class PhoneWindowManager implements WindowManagerPolicy { filter = new IntentFilter(Intent.ACTION_USER_SWITCHED); context.registerReceiver(mMultiuserReceiver, filter); + filter = new IntentFilter();+ filter.addAction(Intent.ACTION_BATTERY_CHANGED);//接收電池狀態(tài)廣播+ mContext.registerReceiver(new BatteryChangedReceiver (), filter, null, mHandler);+ // monitor for system gestures mSystemGestures = new SystemGesturesPointerEventListener(context, new SystemGesturesPointerEventListener.Callbacks() {@@ -5449,6 +5472,37 @@ public class PhoneWindowManager implements WindowManagerPolicy { } }; + private final class BatteryChangedReceiver extends BroadcastReceiver {+ @Override+ public void onReceive(Context context, Intent intent) { + String action = intent.getAction();+ if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {+ batteryStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, -1);+ } + }+ }+ BroadcastReceiver mMultiuserReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) {@@ -5502,6 +5556,17 @@ public class PhoneWindowManager implements WindowManagerPolicy { // Called on the PowerManager’s Notifier thread. @Override public void goingToSleep(int why) {+ Log.d(TAG,” goingToSleep batteryStatust = ” + batteryStatus + ” why = ” + why);+ if(why == 3 && (batteryStatus == BatteryManager.BATTERY_STATUS_CHARGING || batteryStatus == BatteryManager.BATTERY_STATUS_FULL)){+ PowerManager pm = (PowerManager)mContext.getSystemService(Context.POWER_SERVICE);+ PowerManager.WakeLock wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, “screensaver”);+ wakeLock.acquire(5000);+ Log.d(TAG,”send goto screen saver broadcast!”);+ Intent dreamIntent = new Intent(GOTO_SCREEN_SAVER);+ mContext.sendBroadcast(dreamIntent);+ } EventLog.writeEvent(70000, 0); if (DEBUG_WAKEUP) Slog.i(TAG, “Going to sleep…”);

    在goingToSleep方法中判斷系統(tǒng)是否進(jìn)入休眠,其中why =2 表示按power鍵進(jìn)入休眠,why = 3 表示系統(tǒng)自動(dòng)進(jìn)入休眠。因此發(fā)送屏保廣播的條件是:why=3并且當(dāng)前設(shè)備是充電狀態(tài)或是充滿狀態(tài)時(shí)才發(fā)送屏保廣播。

    需要注意的是里面還加了wakeLock.acquire(5000);這個(gè)語(yǔ)句,是為了防止系統(tǒng)CPU直接進(jìn)入休眠,而沒有把屏保廣播發(fā)送出去。

    3.實(shí)現(xiàn)自定義屏保功能在檢測(cè)接收到”com.intent.gotoScreenSaver”屏保廣播后,即可以調(diào)起自己要實(shí)現(xiàn)的屏保。注:接收到屏保廣播后,要喚醒屏幕,具體實(shí)現(xiàn)方法如下:

    private void wake_up_screen(){ if(!pm.isScreenOn()){ wakeLock=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, “bright”); wakeLock.acquire(); if (wakeLock != null && wakeLock.isHeld()) { wakeLock.release(); wakeLock = null; } }}

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場(chǎng),版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年8月7日 12:20
    下一篇 2022年8月7日 12:20

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息