android PowerManager goToSleep 等用法

这个API很多坑,搞得我头疼好几次才研究出如何使用


第一个坑

android.permission.DEVICE_POWER 权限只有系统应用才可以声明,

    普通应用即使你声明了也不起作用,所以 PowerManager 需要 android.permission.DEVICE_POWER 权限的接口你都无权调用!包括 goToSleep() weakUp() userActivity()


第二个坑

好不容易搞定了系统应用,调用 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 在1s后手机进入休眠结果他给我抛一个异常,说 time must not be in the future!  然后只传 SystemClock.uptimeMillis() 可以调用,立即锁屏, fuck 啊,你既然这样设计为何还要留这个参数作甚,在里面直接使用 SystemClock.uptimeMillis() 不就是么?


weakUp() 效果相对于再按电源键开启屏幕,不解锁,调用方法同 goToSleep()


这几个接口建议一般人忽略,因为你无权调用



你可能感兴趣的:(android,powermanager,goToSleep)