开发过程中,经常会用到一些系统配置比如添加自动打开蓝牙,自动连接,自动下载等配置项。可以提供默认的配置项,用户也可以修改该配置项,修改后后续读取用户设置的配置项。如果恢复了出厂设置则重新使用默认的配置项。

   1、在Setting.java里面添加配置项

在Setting.java的System里面添加常量

        /**

         * Determines whether auto open bluetooth when system on.

         * * <P>Type: INT</P>

         * 0 -- determines whether Bluetooth open based on the state of last time

         * 1 -- open bluetooth when system on

         * 2 -- always do not automatically open Bluetooth

         */

         public static final String BLUETOOTH_AUTO_OPEN = "bluetooth_auto_open";

2、修改Setting.java Setting数组

 public static final String[] SETTINGS_TO_BACKUP = {

            STAY_ON_WHILE_PLUGGED_IN,   // moved to global

            WIFI_USE_STATIC_IP,

            WIFI_STATIC_IP,

            WIFI_STATIC_GATEWAY,

            WIFI_STATIC_NETMASK,

            WIFI_STATIC_DNS1,

            WIFI_STATIC_DNS2,

            BLUETOOTH_DISCOVERABILITY,

            BLUETOOTH_DISCOVERABILITY_TIMEOUT,

                BLUETOOTH_AUTO_OPEN,

3、修改default.xml默认值

frameworks/base/packages/SettingsProvider/res/values/defaults.xml

 

4、将默认值设置到数据读取DatabaseHelper中

   private void loadSystemSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
            stmt = db.compileStatement("INSERT OR IGNORE INTO system(name,value)"
                    + " VALUES(?,?);");

            loadBooleanSetting(stmt, Settings.System.DIM_SCREEN,
                    R.bool.def_dim_screen);
            loadIntegerSetting(stmt, Settings.System.SCREEN_OFF_TIMEOUT,
                    R.integer.def_screen_off_timeout);

            // Set default cdma DTMF type
            loadSetting(stmt, Settings.System.DTMF_TONE_TYPE_WHEN_DIALING, 0);

            // Set default hearing aid
            loadSetting(stmt, Settings.System.HEARING_AID, 0);

            // Set default tty mode
            loadSetting(stmt, Settings.System.TTY_MODE, 0);

            loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS,
                    R.integer.def_screen_brightness);

            loadIntegerSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_FOR_VR,
                    com.android.internal.R.integer.config_screenBrightnessForVrSettingDefault);

            loadBooleanSetting(stmt, Settings.System.SCREEN_BRIGHTNESS_MODE,
                    R.bool.def_screen_brightness_automatic_mode);

            loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
                    R.bool.def_accelerometer_rotation);

            loadDefaultHapticSettings(stmt);

            loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,
                    R.bool.def_notification_pulse);

            loadUISoundEffectsSettings(stmt);

            loadIntegerSetting(stmt, Settings.System.POINTER_SPEED,
                    R.integer.def_pointer_speed);

            loadIntegerSetting(stmt, Settings.System.BLUETOOTH_AUTO_OPEN,
                    R.integer.def_bluetooth_auto_open);

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐