2015年5月4日 星期一

在Setting裡增加永不睡眠選項

packages/apps/Settings/res/values/arrays.xml, 加個 Nerver
<string-array name="screen_timeout_entries">
    <item>15 seconds</item>
    <item>30 seconds</item>
    <item>1 minute</item>
    <item>2 minutes</item>
    <item>10 minutes</item>
    <item>30 minutes</item>
    <item>Never</item>
</string-array>
frameworks/base/packages/SettingsProvider/res/values/defaults.xml,加個 -1
(這裡有很多預設值可以看一下)
<string-array  name="screen_timeout_values" translatable="false">
    <item>15000</item>        
    <item>30000</item>        
    <item>60000</item>       
    <item>120000</item>       
    <item>600000</item>        
    <item>1800000</item>
    <item>-1</item>
</string-array>
frameworks/base/services/java/com/android/server/power/PowerManagerService.java 加個mScreenOffTimeoutSetting > 0
private void updateUserActivitySummaryLocked(long now, int dirty) 
{ 
    ...
    if (mUserActivitySummary != 0 && mScreenOffTimeoutSetting  > 0) 
    {
        Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
        msg.setAsynchronous(true);
        mHandler.sendMessageAtTime(msg, nextTimeout);
    }
    ...
}
這樣就可以讓系統永不睡眠
ref : Here




mScreenOffTimeoutSetting定義:
private void updateSettingsLocked() 
{
    ...
    mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver,
           Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT,
           UserHandle.USER_CURRENT);
    ...
}
Settings.System.SCREEN_OFF_TIMEOUT定義:
frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
private void loadSystemSettings(SQLiteDatabase db) 
{
    ...
    loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,  
        R.integer.def_screen_off_timeout);
    ...
}
def_screen_off_timeout的預設值,就是一開始改的 -1
如果一開機希望讓Screen Lork啟重動話,就順手改def_dim_screen

沒有留言:

張貼留言