首先,我前面有一篇寫的是Android消除屏幕鎖http://www.linuxidc.com/Linux/2013-03/81233.htm,這裡想加以改進,因為在我們所使用的手機中已經在“設置”的“輔助功能”中有選擇是否“解除屏幕鎖”(也就開機時和按power鍵亮屏時是否有屏幕鎖)。
這裡我想做的就是在原生的android源碼上添加這一功能,主要還是以學習為主去實現這一功能。
看這個之前我希望你們看一下android消除屏幕鎖這篇http://www.linuxidc.com/Linux/2013-03/81233.htm。
首先我是在做好了桌面循環之後去做在“設置”中的“輔助功能”中添加這一項:
先看一張圖片:
這裡的解除屏幕鎖就是咱們要添加的項。
先講一下思路吧:先把界面做出來,再將是否選擇的值存到系統的(adb shell進入)data/data/com.android.providers.settings/databases/settings.db數據庫中的system表中,
然後在framework/base/policy/src/com/android/internal/policy/impl/KeyguardViewMediator.java的源碼中取得數據庫中是否選擇循環桌面來執行相關代碼。
先做UI:
在settings源碼中的accessibility_settings.xml文件中添加一個checkbox:
<!-- add by xxnan -->
<CheckBoxPreference
android:key="lock_screen"
android:title="@string/lock_screen_title"
android:persistent="false"/>
在settings源碼的res中添加相關的代碼:
在values/string.xml中添加(英文顯示):
<string name="lock_screen_title">Lock_Screen</string>
在values-zh-rCN/string.xml中添加(中文顯示):
<string name="lock_screen_title" msgid="4676390750360727396">"循環桌面"</string>
在settings源碼的AccessibilitySettings.java中的OnCreate中添加:
/*****************************************/
mLockScreen=(CheckBoxPreference) findPreference(
LOCK_SCREEN);
int LockScreen=Settings.System.getInt(this.getContentResolver(),
"lock_screen",0);//取出是否被選擇
if( LockScreen==1)
mLockScreen.setChecked(true);//如果被選擇,那麼下次打開setting時就勾選
else
mLockScreen.setChecked(false);//如果沒被選擇,那麼下次打開setting時就不勾選
/*****************************************/