使用PowerManager.WakeLock来保证程序运行时保持手机屏幕的恒亮。

  1. public class WakeLockDemo extends Activity {
  2. private PowerManager.WakeLock wakeLock = null;
  3. //获取锁
  4. public void acquireWakeLock(Context context) {
  5. if (wakeLock == null) {
  6. PowerManager powerManager = (PowerManager)(context.getSystemService(Context.POWER_SERVICE));
  7. wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
  8. wakeLock.acquire();
  9. }
  10. }
  11. //释放锁
  12. public void releaseWakeLock() {
  13. if(wakeLock != null && wakeLock.isHeld()){
  14. wakeLock.release();
  15. wakeLock = null;
  16. }
  17. }
  18. @Override
  19. public void onCreate() {
  20. super.onCreate();
  21. //初始化
  22. }
  23. @Override
  24. public void onResume() {
  25. acquireWakeLock(this);
  26. super.onResume();
  27. }
  28. @Override
  29. public void onPause() {
  30. releaseWakeLock();
  31. super.onPause();
  32. }
  33. }

各种锁的类型对CPU 、屏幕、键盘的影响:

PARTIAL_WAKE_LOCK:       保持CPU 运转,屏幕和键盘灯可以关闭。

SCREEN_DIM_WAKE_LOCK:   保持CPU 运转,保持屏幕显示,但可以变暗,允许键盘灯关闭。

SCREEN_BRIGHT_WAKE_LOCK:保持CPU 运转,允许保持屏幕高亮显示,允许键盘灯关闭。

FULL_WAKE_LOCK:         保持CPU 运转,保持屏幕和键盘灯都高亮显示。

ACQUIRE_CAUSES_WAKEUP:  当获取锁后,立刻亮屏,典型地使用在通知中,以让用户立刻查看。

ON_AFTER_RELEASE:       在释放锁(release())后,手机屏幕仍会继续亮一会儿。\

 

要进行电源的操作需要在AndroidManifest.xml中声明该应用有设置电源管理的权限。

<uses-permission android:name=”android.permission.WAKE_LOCK” />
你可能还需要
<uses-permission android:name=”android.permission.DEVICE_POWER” />

另外WakeLock的设置是 Activiy 级别的,不是针对整个Application应用的。

可以在activity的onResume方法里面操作WakeLock,  在onPause方法里面释放。

 

另外WakeLock的设置是 Activiy 级别的,不是针对整个Application应用的。

可以在activity的onResume方法里面操作WakeLock,  在onPause方法里面释放。

 

转: http://chenfeng0104.iteye.com/blog/1164675

版权声明:本文为622698abc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/622698abc/p/3222333.html