AndroidのPowerManagerとPowerManager.WakeLock

2916 ワード

  

privatevoid acquireWakeLock() {
         if (wakeLock ==null) {
                Logger.d("Acquiring wake lock");
                PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
                wakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, this.getClass().getCanonicalName());
                wakeLock.acquire();
            }
        
    }


privatevoid releaseWakeLock() {
        if (wakeLock !=null&& wakeLock.isHeld()) {
            wakeLock.release();
            wakeLock =null;
        }

    }

acquireWakeLock()メソッドでSCREEN_を取得しましたDIM_WAKE_ロックロックロックは、CPUを動作させ、画面の明るさを保つ(グレーに変更可能).この関数はActivityのonResumeで呼び出されます.releaseWakeLock()メソッドは、ロックを解放することです.ActivityのonPauseで呼び出されます.Activityのライフサイクルを利用して、acquire()とrelease()を巧みにペアで出現させる.
@Override
    protectedvoid onResume()
    {
        super.onResume();
                //   ,      
        acquireWakeLock();
        startTimer();
    }

PowerManagerとWakeLockの操作手順
  PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);Context.getSystemService()を通過する.方法PowerManagerインスタンスを取得します.
次に、PowerManagerのnewWakeLock(int flags,String tag)を使用してWakeLockインスタンスを生成します.int FlagsはどのWakeLockを取得するかを示し、異なるLockはcpu、スクリーン、キーボードランプに異なる影響を与える.
WakeLockインスタンスを取得した後、acquire()を使用して対応するロックを取得し、他のビジネスロジックの操作を行い、release()を使用してリリースします(リリースは必須).
int flagsについて
各種ロックの種類がCPU、スクリーン、キーボードに与える影響:
PARTIAL_WAKE_LOCK:CPUの動作を維持し、画面とキーボードランプがオフになっている可能性があります.
SCREEN_DIM_WAKE_LOCK:CPUの運転を維持し、画面表示を維持できるが灰色である可能性があり、キーボードランプの消灯を許可する
SCREEN_BRIGHT_WAKE_LOCK:CPUの運転を保持し、画面のハイライト表示を保持し、キーボードランプのオフを許可する
FULL_WAKE_LOCK:CPUの運転を保持し、画面のハイライト表示を保持し、キーボードランプも明るさを保持する
ACQUIRE_CAUSES_WAKEUP:Normal wake locks don't actually turn on the illumination. Instead, they cause the illumination to remain on once it turns on (e.g. from user activity). This flag will force the screen and/or keyboard to turn on immediately, when the WakeLock is acquired. A typical use would be for notifications which are important for the user to see immediately.
ON_AFTER_RELEASE:f this flag is set, the user activity timer will be reset when the WakeLock is released, causing the illumination to remain on a bit longer. This can be used to reduce flicker if you are cycling between wake lock conditions.
アクセス権の取得
電源の操作を行うにはAndroidManifestが必要です.xmlでは、アプリケーションに電源管理を設定する権限があることを宣言します.
<
uses-permission 
android:name
="android.permission.WAKE_LOCK"
/>
君はまだ必要かもしれない
<
uses-permission 
android:name
="android.permission.DEVICE_POWER"
/>
またWakeLockの設定はActivityレベルであり、Applicationアプリケーション全体ではありません.
原文住所:http://www.cnblogs.com/keyindex/articles/1819504.html   
参照ソース:https://github.com/jwood/standup-timer