Android PowerManager goToSleepなどの使い方


このAPIは穴が多くて、何度も頭を悩ませてやっとどのように使うかを研究しました.
最初のピット
android.permission.DEVICE_POWER権限はシステムアプリケーションのみが宣言できます.
一般的なアプリケーションは宣言しても機能しないので、PowerManagerにはandroidが必要です.permission.DEVICE_POWER権限のインタフェースは呼び出す権利がありません!goToSleep()weakUp()userActivity()を含む
2番目のピット
やっとシステムアプリケーションができたので、goToSleep()を呼び出しても機能しない(goToSleep()効果は電源キーを押すことに対して)パラメータint timeを持っていて、公式に説明しています.
Parameters
time 	The time when the request to go to sleep was issued, in the uptimeMillis() time base. This timestamp is used to correctly order the go to sleep request with other power management functions. It should be set to the timestamp of the input event that caused the request to go to sleep.

彼の意味ではSystemClockですuptimeMillis()時間に基づいて、私の理解ではSystemClockです.uptimeMillis()+1000は1 s後に携帯電話が休眠に入った結果、彼は私に異常を投げて、time must not be in the futureと言った!それからSystemClockだけを伝えます.uptimeMillis()は呼び出すことができて、すぐにスクリーンをロックして、fuck、あなたはこのように設計する以上どうしてこのパラメータを残して何をしなければならなくて、中で直接SystemClockを使います.uptimeMillis()じゃないですか.
WeakUp()効果は、電源キーを押して画面を開くのに対し、ロックを解除せず、呼び出し方法はgoToSleep()と同じです.
これらのインタフェースは一般の人に無視することをお勧めします.あなたは呼び出す権利がないからです.