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)主干修改和项目拷贝路径修改]

猜你喜欢

转载自blog.csdn.net/lyl0530/article/details/82219988