android 4.2以上版本永不休眠

android4.2以上版本比android4.2以前的版本framework层框架部分有了很大的改变,androd4.2以前版本framework层给上的接口函数与android4.2以上版本的接口函数也有了些变化,以前让机器永不休眠的方法用在android4.2以上版本已经不起作用了。现将android4.2以上版本修改永不休眠的方法记录下来。

首先还是要修改defaults.xml文件里def_screen_off_timeout的值。

1.  修改default值,不自动休眠

      /frameworks/base/packages/SettingsProvider/res/values/defaults.xml

      修改def_screen_off_timeout为-1

2.修改PowerManagerService.java文件getScreenOffTimeoutLocked()函数

  修改前:

[html] view plain copy
  1. private int getScreenOffTimeoutLocked() {  
  2.         int timeout = mScreenOffTimeoutSetting;  
  3.         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {  
  4.             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);  
  5.         }  
  6.         if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {  
  7.             timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);  
  8.         }  
  9.          
  10.         return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);  
  11.     }  
修改后:

[html] view plain copy
  1. int nosleep;  
  2. int timeout = mScreenOffTimeoutSetting;  
  3. if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {  
  4.     timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);  
  5. }  
  6. if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {  
  7.     timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);  
  8. }  
  9. nosleep = mScreenOffTimeoutSetting;  
  10. if(nosleep  < 0)  
  11. {  
  12.     nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin ;  
  13.     return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);  
  14. }  
  15. return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);  
修改后就不会休眠了。可能还有其它方法让其用不休眠,有兴趣的人可以在看看源码找着看。

你可能感兴趣的:(A20)