Android72JB平臺預設開啟GPS
1. 在alps/mediatek/config/mp3_natgas/sagereal_copy/defaults.xml檔案中,設定is_first_boot_to_open_gps為true
<bool name="is_first_boot_to_open_gps">true</bool>
2. 在alps/mediatek/config/mp3_natgas/sagereal_copy/frameworks/base/core/java/android/provider/Settings.java的SETTINGS_TO_BACKUP陣列中新增IS_FIRST_BOOT_TO_OPEN_GPS變數
public static final String[] SETTINGS_TO_BACKUP = {
......
,IS_FIRST_BOOT_TO_OPEN_GPS
}
3. 在alps/mediatek/config/mp3_natgas/sagereal_copy/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java檔案的loadSystemSettings方法中,把is_first_boot_to_open_gps和IS_FIRST_BOOT_TO_OPEN_GPS設定成對映關係
loadBooleanSetting(stmt, Settings.System.IS_FIRST_BOOT_TO_OPEN_GPS,R.bool.is_first_boot_to_open_gps);
其中loadBooleanSetting方法為:
private void loadBooleanSetting(SQLiteStatement stmt, String key, int resid) { loadSetting(stmt, key, mContext.getResources().getBoolean(resid) ? "1" : "0"); } private void loadSetting(SQLiteStatement stmt, String key, Object value) { stmt.bindString(1, key); stmt.bindString(2, value.toString()); stmt.execute(); }
4. 在alps/mediatek/config/mp3_natgas/sagereal_copy/Launcher.java的onResume()方法中,若符合要求,則開啟GPS。
boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(
getContentResolver(), LocationManager.GPS_PROVIDER);
boolean isFirstBoot = Settings.System.getInt(getContentResolver(),
Settings.System.IS_FIRST_BOOT_TO_OPEN_GPS, 1) != 0;
if (gpsEnabled && isFirstBoot) {
Settings.Secure.setLocationProviderEnabled(getContentResolver(),
LocationManager.GPS_PROVIDER, false);//工廠模式下可能搜不到星,重啟一次GPS
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(2*1000);//sleep 2s is good for search star about factory test
Settings.Secure.setLocationProviderEnabled(getContentResolver(),
LocationManager.GPS_PROVIDER, true);
Settings.System.putInt(getContentResolver(),Settings.System.IS_FIRST_BOOT_TO_OPEN_GPS, 0) ;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
5. 在alps/packages/apps/Settings/src/com/android/settings/LocationSettings.java的updateLocationToggles方法中,會讀取GPS的開關狀態,並設定。
private void updateLocationToggles() {
ContentResolver res = getContentResolver();
boolean gpsEnabled = Settings.Secure.isLocationProviderEnabled(res, LocationManager.GPS_PROVIDER);
mGps.setChecked(gpsEnabled);
}
注:此時只會針對mp3_natgas專案進行修改,不會影響其他專案。[參考Android80go平臺的桌面佈局(帶gms)的主幹修改和專案拷貝路徑修改]