1. 下載並安裝 pythonbrew
curl -kL0 http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install > ./pythonup.sh
chmod 777 pythonup.sh
./pythonup.sh
2. 安裝 python 2.6.6 與 python 2.7.3
pythonbrew install 2.6.6
pythonbrew install 2.7.3
3. 切換python 版本 (需重登, relogin)
pythonbrew switch 2.6.6
pythonbrew switch 2.7.3
4. 測試目前使用版本
python --version
註1: 安裝會使用到以下網域, 留意是否有被防火牆擋掉
github.com
www.python.org
raw.githubuserontent.com
pypi.python.org
註2: pythonbrew 安裝目錄
用 root 安裝, 會安裝到 /usr/local/pythonbrew
用其它帳號, 會安裝到 $HOME/.pythonbrew
所以需要export PATH
如: export PATH=$PATH:/usr/local/pythonbrew/bin
或 export PATH=$PATH:$HOME/.pythonbrew/bin
2015年1月22日 星期四
2014年12月16日 星期二
JAVA 6/JAVA7 切換
上次有說到 怎麼安裝 Java6與 Java7
http://esmondjhchang.blogspot.tw/2014/11/ubuntu-12-java67.html
因為我常常要在 JAVA6與JAVA7之間切換...
因此, 本篇只是分享一個個人的切換script
請先到 https://code.google.com/p/webupd8/downloads/detail?name=update-java-0.5b
下載一個 update-java-0.5b的script (這個直接使用就可以了, 不過需要在GUI環境)
因為我不知我的PC被我怎麼搞的, 所以上面的 update-java-0.5b 居然只能切換部份環境
所以...
使用時, 直接在GUI裡的 console 輸入 java_swap後,
若輸入 Y, 則系統會切換成JAVA6 (compile Android 4.4.4-)
若輸入 N, 則系統會切換成 JAVA7 (compile Android 5+)
接著會出現一個對話框, 再選擇 JAVA的位置即可
如: JAVA6 就選 java-6-oracle (小心選, 不然會只切一半)
java_swap 的 Script 如下 (小弟是把兩個檔, update-java-0.5b 與 此script 放到 /bin 裡)
記得要 chmod 成可執行狀態唷~
#!/bin/bash
JAVA6_PATH=/usr/lib/jvm/java-6-oracle
JAVA7_PATH=/usr/lib/jvm/java-7-openjdk-amd64
read -t 30 -n 3 -p "Set Environment to JAVA6? (Y for 6/N for 7) " ANS_YN
sudo /bin/update-java-0.5b
case $ANS_YN in
"NO"|"No"|"no"|"nO"|"N"|"n")
echo "Set to JAVA7 ..."
sudo update-alternatives --set java $JAVA7_PATH/jre/bin/java
sudo update-alternatives --set javac $JAVA7_PATH/bin/javac
sudo update-alternatives --set javadoc $JAVA7_PATH/bin/javadoc
sudo update-alternatives --set javah $JAVA7_PATH/bin/javah
sudo update-alternatives --set javap $JAVA7_PATH/bin/javap
sudo update-alternatives --set javaws $JAVA7_PATH/jre/bin/javaws
# sudo echo "export J2SDKDIR=/usr/lib/jvm/java-7-openjdk-amd64" > /etc/profile.d/jdk.sh
# sudo echo "export J2REDIR=/usr/lib/jvm/java-7-openjdk-amd64/jre" >> /etc/profile.d/jdk.sh
sudo echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64">> /etc/profile.d/jdk.sh
# sudo echo "export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-7-openjdk-amd64/bin:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:/usr/lib/jvm/java-6-oracle/db">> /etc/profile.d/jdk.sh
sudo echo "export DERBY_HOME=/usr/lib/jvm/java-6-oracle/db" >> /etc/profile.d/jdk.sh
echo "Set to JAVA7 completed... Please REBOOT manually..."
;;
*)
echo "Set to JAVA6..."
sudo update-alternatives --set java $JAVA6_PATH/jre/bin/java
sudo update-alternatives --set javac $JAVA6_PATH/bin/javac
sudo update-alternatives --set javadoc $JAVA6_PATH/bin/javadoc
sudo update-alternatives --set javah $JAVA6_PATH/bin/javah
sudo update-alternatives --set javap $JAVA6_PATH/bin/javap
sudo update-alternatives --set javaws $JAVA6_PATH/jre/bin/javaws
# sudo echo "export J2SDKDIR=/usr/lib/jvm/java-6-openjdk-amd64" > /etc/profile.d/jdk.sh
# sudo echo "export J2REDIR=/usr/lib/jvm/java-6-openjdk-amd64/jre" >> /etc/profile.d/jdk.sh
sudo echo "export JAVA_HOME=/usr/lib/jvm/java-6-oracle">> /etc/profile.d/jdk.sh
# sudo echo "export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-6-openjdk-amd64/bin:/usr/lib/jvm/java-6-openjdk-amd64/jre/bin:/usr/lib/jvm/java-6-oracle/db">> /etc/profile.d/jdk.sh
# sudo echo "export DERBY_HOME=/usr/lib/jvm/java-6-oracle/db" >> /etc/profile.d/jdk.sh
echo "Set to JAVA6 completed... Please REBOOT manually..."
;;
esac
http://esmondjhchang.blogspot.tw/2014/11/ubuntu-12-java67.html
因為我常常要在 JAVA6與JAVA7之間切換...
因此, 本篇只是分享一個個人的切換script
請先到 https://code.google.com/p/webupd8/downloads/detail?name=update-java-0.5b
下載一個 update-java-0.5b的script (這個直接使用就可以了, 不過需要在GUI環境)
因為我不知我的PC被我怎麼搞的, 所以上面的 update-java-0.5b 居然只能切換部份環境
所以...
使用時, 直接在GUI裡的 console 輸入 java_swap後,
若輸入 Y, 則系統會切換成JAVA6 (compile Android 4.4.4-)
若輸入 N, 則系統會切換成 JAVA7 (compile Android 5+)
接著會出現一個對話框, 再選擇 JAVA的位置即可
如: JAVA6 就選 java-6-oracle (小心選, 不然會只切一半)
java_swap 的 Script 如下 (小弟是把兩個檔, update-java-0.5b 與 此script 放到 /bin 裡)
記得要 chmod 成可執行狀態唷~
#!/bin/bash
JAVA6_PATH=/usr/lib/jvm/java-6-oracle
JAVA7_PATH=/usr/lib/jvm/java-7-openjdk-amd64
read -t 30 -n 3 -p "Set Environment to JAVA6? (Y for 6/N for 7) " ANS_YN
sudo /bin/update-java-0.5b
case $ANS_YN in
"NO"|"No"|"no"|"nO"|"N"|"n")
echo "Set to JAVA7 ..."
sudo update-alternatives --set java $JAVA7_PATH/jre/bin/java
sudo update-alternatives --set javac $JAVA7_PATH/bin/javac
sudo update-alternatives --set javadoc $JAVA7_PATH/bin/javadoc
sudo update-alternatives --set javah $JAVA7_PATH/bin/javah
sudo update-alternatives --set javap $JAVA7_PATH/bin/javap
sudo update-alternatives --set javaws $JAVA7_PATH/jre/bin/javaws
# sudo echo "export J2SDKDIR=/usr/lib/jvm/java-7-openjdk-amd64" > /etc/profile.d/jdk.sh
# sudo echo "export J2REDIR=/usr/lib/jvm/java-7-openjdk-amd64/jre" >> /etc/profile.d/jdk.sh
sudo echo "export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64">> /etc/profile.d/jdk.sh
# sudo echo "export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-7-openjdk-amd64/bin:/usr/lib/jvm/java-7-openjdk-amd64/jre/bin:/usr/lib/jvm/java-6-oracle/db">> /etc/profile.d/jdk.sh
sudo echo "export DERBY_HOME=/usr/lib/jvm/java-6-oracle/db" >> /etc/profile.d/jdk.sh
echo "Set to JAVA7 completed... Please REBOOT manually..."
;;
*)
echo "Set to JAVA6..."
sudo update-alternatives --set java $JAVA6_PATH/jre/bin/java
sudo update-alternatives --set javac $JAVA6_PATH/bin/javac
sudo update-alternatives --set javadoc $JAVA6_PATH/bin/javadoc
sudo update-alternatives --set javah $JAVA6_PATH/bin/javah
sudo update-alternatives --set javap $JAVA6_PATH/bin/javap
sudo update-alternatives --set javaws $JAVA6_PATH/jre/bin/javaws
# sudo echo "export J2SDKDIR=/usr/lib/jvm/java-6-openjdk-amd64" > /etc/profile.d/jdk.sh
# sudo echo "export J2REDIR=/usr/lib/jvm/java-6-openjdk-amd64/jre" >> /etc/profile.d/jdk.sh
sudo echo "export JAVA_HOME=/usr/lib/jvm/java-6-oracle">> /etc/profile.d/jdk.sh
# sudo echo "export PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/usr/games:/usr/lib/jvm/java-6-openjdk-amd64/bin:/usr/lib/jvm/java-6-openjdk-amd64/jre/bin:/usr/lib/jvm/java-6-oracle/db">> /etc/profile.d/jdk.sh
# sudo echo "export DERBY_HOME=/usr/lib/jvm/java-6-oracle/db" >> /etc/profile.d/jdk.sh
echo "Set to JAVA6 completed... Please REBOOT manually..."
;;
esac
2014年11月27日 星期四
Ubuntu 12 安裝 Java6/7
文章來源:
https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get
全程只需用 apt-get 安裝即可, 便利且穩定。
指令:
sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk
sudo apt-get install openjdk-7-jre
sudo apt-get install openjdk-7-jdk
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
安裝Oracle JDK 6:
sudo apt-get install oracle-java-6-installer
安裝Oracle JDK 7:
sudo apt-get install oracle-java-7-installer
安裝Oracle JDK 8:
sudo apt-get install oracle-java-8-installer
sudo update-alternatives --config java
sudo update-alternatives --config javac
設定 JAVA_HOME
vi /etc/environment
修改 JAVA_HOME="想採用的java path"
如: JAVA_HOME="/usr/lib/jvm/java-7-oracle"
Installing Java with
All other steps are optional and must only be executed when needed.
You can still install it using apt-get. To install any version, first execute the following commands:
文章來源:
https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get
https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get
安裝原生 default 的 JRE/JDK
這是較佳且容義的選擇,在 Ubuntu 12.04~ 會安裝 OpenJDK 6,而 Ubuntu 12.10+ 則會安裝 OpenJDK 7全程只需用 apt-get 安裝即可, 便利且穩定。
指令:
sudo apt-get update
sudo apt-get install default-jre
sudo apt-get install default-jdk
安裝 OpenJDK 7
指令:sudo apt-get install openjdk-7-jre
sudo apt-get install openjdk-7-jdk
安裝 Oracle JDK
前置工作:sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
安裝Oracle JDK 6:
sudo apt-get install oracle-java-6-installer
安裝Oracle JDK 7:
sudo apt-get install oracle-java-7-installer
安裝Oracle JDK 8:
sudo apt-get install oracle-java-8-installer
管理 JAVA使用版本
設定 java 與 javacsudo update-alternatives --config java
sudo update-alternatives --config javac
設定 JAVA_HOME
vi /etc/environment
修改 JAVA_HOME="想採用的java path"
如: JAVA_HOME="/usr/lib/jvm/java-7-oracle"
原文如下:
This is the recommended and easiest option. This will install OpenJDK 6 on Ubuntu 12.04 and earlier and on 12.10+ it will install OpenJDK 7.Installing Java with
apt-get is easy. First, update the package index:sudo apt-get update
Then, check if Java is not already installed:java -version
If it returns "The program java can be found in the following
packages", Java hasn't been installed yet, so execute the following
command:sudo apt-get install default-jre
This will install the Java Runtime Environment (JRE). If you instead
need the Java Development Kit (JDK), which is usually needed to compile
Java applications (for example Apache Ant, Apache Maven, Eclipse and IntelliJ IDEA execute the following command:sudo apt-get install default-jdk
That is everything that is needed to install Java. All other steps are optional and must only be executed when needed.
Installing OpenJDK 7 (optional)
To install OpenJDK 7, execute the following command:sudo apt-get install openjdk-7-jre
This will install the Java Runtime Environment (JRE). If you instead
need the Java Development Kit (JDK), execute the following command:sudo apt-get install openjdk-7-jdk
Installing Oracle JDK (optional)
The Oracle JDK is the official JDK; however, it is no longer provided by Oracle as a default installation for Ubuntu.You can still install it using apt-get. To install any version, first execute the following commands:
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
Then, depending on the version you want to install, execute one of the following commands:Oracle JDK 6
This is an old version but still in use.sudo apt-get install oracle-java6-installer
Oracle JDK 7
This is the latest stable version.sudo apt-get install oracle-java7-installer
Oracle JDK 8
This is a developer preview, the general release is scheduled for March 2014. This external article about Java 8 may help you to understand what it's all about.sudo apt-get install oracle-java8-installer
Managing Java (optional)
When there are multiple Java installations on your Droplet, the Java version to use as default can be chosen. To do this, execute the following command:sudo update-alternatives --config java
It will usually return something like this if you have 2 installations (if you have more, it will of course return more):There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 manual mode
Press enter to keep the current choice[*], or type selection number:
You can now choose the number to use as default. This can also be done for the Java compiler (javac):sudo update-alternatives --config javac
It is the same selection screen as the previous command and should be
used in the same way. This command can be executed for all other
commands which have different installations. In Java, this includes but
is not limited to: keytool, javadoc and jarsigner.Setting the "JAVA_HOME" environment variable
To set theJAVA_HOME environment variable, which is needed for some programs, first find out the path of your Java installation:sudo update-alternatives --config java
It returns something like:There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 auto mode
1 /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java 1061 manual mode
2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 manual mode
Press enter to keep the current choice[*], or type selection number:
The path of the installation is for each:/usr/lib/jvm/java-7-oracle/usr/lib/jvm/java-6-openjdk-amd64/usr/lib/jvm/java-7-oracle
/etc/environment:sudo nano /etc/environment
In this file, add the following line (replacing YOUR_PATH by the just copied path):JAVA_HOME="YOUR_PATH"
That should be enough to set the environment variable. Now reload this file:source /etc/environment
Test it by executing:echo $JAVA_HOME
If it returns the just set path, the environment variable has been
set successfully. If it doesn't, please make sure you followed all steps
correctly.文章來源:
https://www.digitalocean.com/community/tutorials/how-to-install-java-on-ubuntu-with-apt-get
2014年9月10日 星期三
Android 4.4 在選單增加 Display Never Timeout
Android 4.4.x 在選單增加 Display Never Timeout
本文源自: http://ansonlai.iteye.com/blog/1899764
剛抓下來的 android 4.4.x 裡面的 設定--> 顯示 --> 休眠
只有 30 sec, 1 min, 2 min, 5 min, 10 min, 30 min項目,
可是有些情況我們並不想讓 Display 因為省電保護或... 因而關閉顯示(黑畫面)
可是一開始卻並無此項目可選....
Step 1: 改packages/apps/Settings/res/values/arrays.xml
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
<string-array name="screen_timeout_entries">
<item>15 seconds</item>
<item>30 seconds</item>
<item>1 minute</item>
<item>2 minutes</item>
<item>5 minutes</item>
<item>10 minutes</item>
<item>30 minutes</item>
<item>Never</item>
</string-array>
<!-- Do not translate. -->
<string-array name="screen_timeout_values" translatable="false">
<!-- Do not translate. -->
<item>15000</item>
<!-- Do not translate. -->
<item>30000</item>
<!-- Do not translate. -->
<item>60000</item>
<!-- Do not translate. -->
<item>120000</item>
<!-- Do not translate. -->
<item>300000</item>
<!-- Do not translate. -->
<item>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
<item>-1</item>
</string-array>
Step 2: 修改所有 packages/apps/Settings/res/values-xxxx/array.xml (各語系的顯示)
以英文為例: packages/apps/Settings/res/values-en-rGB/arrays.xml
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 seconds"</item>
<item msgid="8881760709354815449">"30 seconds"</item>
<item msgid="7589406073232279088">"1 minute"</item>
<item msgid="7001195990902244174">"2 minutes"</item>
<item msgid="7489864775127957179">"5 minutes"</item>
<item msgid="2314124409517439288">"10 minutes"</item>
<item msgid="6864027152847611413">"30 minutes"</item>
<item msgid="9989898989898989898">"Never"</item>
</string-array>
Step 3: 修改code: packages/apps/Settings/src/com/android/settings/DisplaySettings.java
private void updateTimeoutPreferenceDescription(long currentTimeout) {
ListPreference preference = mScreenTimeoutPreference;
String summary;
if (currentTimeout < -1) {
// Unsupported value
summary = "";
} else {
final CharSequence[] entries = preference.getEntries();
final CharSequence[] values = preference.getEntryValues();
if (entries == null || entries.length == 0) {
summary = "";
} else {
int best = 0;
for (int i = 0; i < values.length; i++) {
long timeout = Long.parseLong(values[i].toString());
if (currentTimeout == timeout) {
best = i;
}
}
summary = preference.getContext().getString(R.string.screen_timeout_summary,
entries[best]);
if(currentTimeout < 0) summary = entries[best].toString();
}
}
preference.setSummary(summary);
}
Step 4: 修改code: frameworks/base/services/java/com/android/server/power/PowerManagerService.java
private void updateUserActivitySummaryLocked(long now, int dirty) {
// Update the status of the user activity timeout timer.
if ((dirty & (DIRTY_USER_ACTIVITY | DIRTY_WAKEFULNESS | DIRTY_SETTINGS)) != 0) {
mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);
long nextTimeout = 0;
if (mWakefulness != WAKEFULNESS_ASLEEP) {
final int screenOffTimeout = getScreenOffTimeoutLocked();
final int screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
mUserActivitySummary = 0;
if (mLastUserActivityTime >= mLastWakeTime) {
nextTimeout = mLastUserActivityTime
+ screenOffTimeout - screenDimDuration;
if (now < nextTimeout) {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
} else {
nextTimeout = mLastUserActivityTime + screenOffTimeout;
if (now < nextTimeout) {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_DIM;
}
}
}
if (mUserActivitySummary == 0
&& mLastUserActivityTimeNoChangeLights >= mLastWakeTime) {
nextTimeout = mLastUserActivityTimeNoChangeLights + screenOffTimeout;
if (now < nextTimeout
&& mDisplayPowerRequest.screenState
!= DisplayPowerRequest.SCREEN_STATE_OFF) {
mUserActivitySummary = mDisplayPowerRequest.screenState
== DisplayPowerRequest.SCREEN_STATE_BRIGHT ?
USER_ACTIVITY_SCREEN_BRIGHT : USER_ACTIVITY_SCREEN_DIM;
}
}
////if (mUserActivitySummary != 0) {
if (mUserActivitySummary != 0 && mScreenOffTimeoutSetting > 0) {
Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
msg.setAsynchronous(true);
mHandler.sendMessageAtTime(msg, nextTimeout);
}
} else {
mUserActivitySummary = 0;
}
if (DEBUG_SPEW) {
Slog.d(TAG, "updateUserActivitySummaryLocked: mWakefulness="
+ wakefulnessToString(mWakefulness)
+ ", mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary)
+ ", nextTimeout=" + TimeUtils.formatUptime(nextTimeout));
}
}
}
源自: http://ansonlai.iteye.com/blog/1899764
本文源自: http://ansonlai.iteye.com/blog/1899764
剛抓下來的 android 4.4.x 裡面的 設定--> 顯示 --> 休眠
只有 30 sec, 1 min, 2 min, 5 min, 10 min, 30 min項目,
可是有些情況我們並不想讓 Display 因為省電保護或... 因而關閉顯示(黑畫面)
可是一開始卻並無此項目可選....
Step 1: 改packages/apps/Settings/res/values/arrays.xml
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
<string-array name="screen_timeout_entries">
<item>15 seconds</item>
<item>30 seconds</item>
<item>1 minute</item>
<item>2 minutes</item>
<item>5 minutes</item>
<item>10 minutes</item>
<item>30 minutes</item>
<item>Never</item>
</string-array>
<!-- Do not translate. -->
<string-array name="screen_timeout_values" translatable="false">
<!-- Do not translate. -->
<item>15000</item>
<!-- Do not translate. -->
<item>30000</item>
<!-- Do not translate. -->
<item>60000</item>
<!-- Do not translate. -->
<item>120000</item>
<!-- Do not translate. -->
<item>300000</item>
<!-- Do not translate. -->
<item>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
<item>-1</item>
</string-array>
Step 2: 修改所有 packages/apps/Settings/res/values-xxxx/array.xml (各語系的顯示)
以英文為例: packages/apps/Settings/res/values-en-rGB/arrays.xml
<string-array name="screen_timeout_entries">
<item msgid="3342301044271143016">"15 seconds"</item>
<item msgid="8881760709354815449">"30 seconds"</item>
<item msgid="7589406073232279088">"1 minute"</item>
<item msgid="7001195990902244174">"2 minutes"</item>
<item msgid="7489864775127957179">"5 minutes"</item>
<item msgid="2314124409517439288">"10 minutes"</item>
<item msgid="6864027152847611413">"30 minutes"</item>
<item msgid="9989898989898989898">"Never"</item>
</string-array>
Step 3: 修改code: packages/apps/Settings/src/com/android/settings/DisplaySettings.java
private void updateTimeoutPreferenceDescription(long currentTimeout) {
ListPreference preference = mScreenTimeoutPreference;
String summary;
if (currentTimeout < -1) {
// Unsupported value
summary = "";
} else {
final CharSequence[] entries = preference.getEntries();
final CharSequence[] values = preference.getEntryValues();
if (entries == null || entries.length == 0) {
summary = "";
} else {
int best = 0;
for (int i = 0; i < values.length; i++) {
long timeout = Long.parseLong(values[i].toString());
if (currentTimeout == timeout) {
best = i;
}
}
summary = preference.getContext().getString(R.string.screen_timeout_summary,
entries[best]);
if(currentTimeout < 0) summary = entries[best].toString();
}
}
preference.setSummary(summary);
}
Step 4: 修改code: frameworks/base/services/java/com/android/server/power/PowerManagerService.java
private void updateUserActivitySummaryLocked(long now, int dirty) {
// Update the status of the user activity timeout timer.
if ((dirty & (DIRTY_USER_ACTIVITY | DIRTY_WAKEFULNESS | DIRTY_SETTINGS)) != 0) {
mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);
long nextTimeout = 0;
if (mWakefulness != WAKEFULNESS_ASLEEP) {
final int screenOffTimeout = getScreenOffTimeoutLocked();
final int screenDimDuration = getScreenDimDurationLocked(screenOffTimeout);
mUserActivitySummary = 0;
if (mLastUserActivityTime >= mLastWakeTime) {
nextTimeout = mLastUserActivityTime
+ screenOffTimeout - screenDimDuration;
if (now < nextTimeout) {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
} else {
nextTimeout = mLastUserActivityTime + screenOffTimeout;
if (now < nextTimeout) {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_DIM;
}
}
}
if (mUserActivitySummary == 0
&& mLastUserActivityTimeNoChangeLights >= mLastWakeTime) {
nextTimeout = mLastUserActivityTimeNoChangeLights + screenOffTimeout;
if (now < nextTimeout
&& mDisplayPowerRequest.screenState
!= DisplayPowerRequest.SCREEN_STATE_OFF) {
mUserActivitySummary = mDisplayPowerRequest.screenState
== DisplayPowerRequest.SCREEN_STATE_BRIGHT ?
USER_ACTIVITY_SCREEN_BRIGHT : USER_ACTIVITY_SCREEN_DIM;
}
}
////if (mUserActivitySummary != 0) {
if (mUserActivitySummary != 0 && mScreenOffTimeoutSetting > 0) {
Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
msg.setAsynchronous(true);
mHandler.sendMessageAtTime(msg, nextTimeout);
}
} else {
mUserActivitySummary = 0;
}
if (DEBUG_SPEW) {
Slog.d(TAG, "updateUserActivitySummaryLocked: mWakefulness="
+ wakefulnessToString(mWakefulness)
+ ", mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary)
+ ", nextTimeout=" + TimeUtils.formatUptime(nextTimeout));
}
}
}
源自: http://ansonlai.iteye.com/blog/1899764
訂閱:
文章 (Atom)