近期做了一个铃声和震动的开关需求,本来原生的设置应该支持这两种开关,但是我们的开关却没有效果,因此,我自己加了一套设置的键值,来自己做控制。
直接上代码:
diff --git a/api/current.txt b/api/current.txt
index 887da6aa3..4b2b9d473 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -35185,6 +35185,8 @@ package android.provider {
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
field public static final deprecated java.lang.String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+ field public static final java.lang.String XF_NOTIFICATION_TONE_ON = "xf_notification_tone_on";
+ field public static final java.lang.String XF_NOTIFICATION_VIBRATOR_ON = "xf_notification_vibrator_on";
}
public class SyncStateContract {
diff --git a/api/system-current.txt b/api/system-current.txt
index a4532f3f1..cf1046375 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -38246,6 +38246,8 @@ package android.provider {
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
field public static final deprecated java.lang.String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+ field public static final java.lang.String XF_NOTIFICATION_TONE_ON = "xf_notification_tone_on";
+ field public static final java.lang.String XF_NOTIFICATION_VIBRATOR_ON = "xf_notification_vibrator_on";
}
public class SyncStateContract {
diff --git a/api/test-current.txt b/api/test-current.txt
index 15ff25191..bc5917afe 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -35381,6 +35381,8 @@ package android.provider {
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_DELAY_MS = "wifi_watchdog_ping_delay_ms";
field public static final deprecated java.lang.String WIFI_WATCHDOG_PING_TIMEOUT_MS = "wifi_watchdog_ping_timeout_ms";
field public static final deprecated java.lang.String WINDOW_ANIMATION_SCALE = "window_animation_scale";
+ field public static final java.lang.String XF_NOTIFICATION_TONE_ON = "xf_notification_tone_on";
+ field public static final java.lang.String XF_NOTIFICATION_VIBRATOR_ON = "xf_notification_vibrator_on";
}
public class SyncStateContract {
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 2c0ca4e7c..c349e603a 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3089,7 +3089,21 @@ public final class Settings {
private static final Validator SCREEN_BRIGHTNESS_MODE_VALIDATOR = sBooleanValidator;
- /**
+ /**
+ * kongbo add for xf vibrator control.
+ */
+ public static final String XF_NOTIFICATION_VIBRATOR_ON = "xf_notification_vibrator_on";
+
+ private static final Validator XF_NOTIFICATION_VIBRATOR_ON_VALIDATOR = sBooleanValidator;
+
+ /**
+ * kongbo add for xf notification tone control.
+ */
+ public static final String XF_NOTIFICATION_TONE_ON = "xf_notification_tone_on";
+
+ private static final Validator XF_NOTIFICATION_TONE_ON_VALIDATOR = sBooleanValidator;
+
+ /**
* the timeout last for touch light
* @hide
*/
@@ -3970,6 +3984,8 @@ public final class Settings {
SCREEN_BRIGHTNESS_MODE,
SCREEN_AUTO_BRIGHTNESS_ADJ,
SCREEN_BRIGHTNESS_FOR_VR,
+ XF_NOTIFICATION_VIBRATOR_ON,
+ XF_NOTIFICATION_TONE_ON,
VIBRATE_INPUT_DEVICES,
MODE_RINGER_STREAMS_AFFECTED,
TEXT_AUTO_REPLACE,
@@ -4033,6 +4049,8 @@ public final class Settings {
PUBLIC_SETTINGS.add(SCREEN_OFF_TIMEOUT);
PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS);
PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_MODE);
+ PUBLIC_SETTINGS.add(XF_NOTIFICATION_VIBRATOR_ON);
+ PUBLIC_SETTINGS.add(XF_NOTIFICATION_TONE_ON);
PUBLIC_SETTINGS.add(MODE_RINGER_STREAMS_AFFECTED);
PUBLIC_SETTINGS.add(MUTE_STREAMS_AFFECTED);
PUBLIC_SETTINGS.add(VIBRATE_ON);
@@ -4139,6 +4157,8 @@ public final class Settings {
VALIDATORS.put(SCREEN_BRIGHTNESS, SCREEN_BRIGHTNESS_VALIDATOR);
VALIDATORS.put(SCREEN_BRIGHTNESS_FOR_VR, SCREEN_BRIGHTNESS_FOR_VR_VALIDATOR);
VALIDATORS.put(SCREEN_BRIGHTNESS_MODE, SCREEN_BRIGHTNESS_MODE_VALIDATOR);
+ VALIDATORS.put(XF_NOTIFICATION_VIBRATOR_ON, XF_NOTIFICATION_VIBRATOR_ON_VALIDATOR);
+ VALIDATORS.put(XF_NOTIFICATION_TONE_ON, XF_NOTIFICATION_TONE_ON_VALIDATOR);
VALIDATORS.put(MODE_RINGER_STREAMS_AFFECTED, MODE_RINGER_STREAMS_AFFECTED_VALIDATOR);
VALIDATORS.put(MUTE_STREAMS_AFFECTED, MUTE_STREAMS_AFFECTED_VALIDATOR);
VALIDATORS.put(VIBRATE_ON, VIBRATE_ON_VALIDATOR);
diff --git a/packages/SettingsProvider/res/values/defaults.xml b/packages/SettingsProvider/res/values/defaults.xml
index 5d62162cb..b3fe45217 100755
--- a/packages/SettingsProvider/res/values/defaults.xml
+++ b/packages/SettingsProvider/res/values/defaults.xml
@@ -200,6 +200,12 @@
<!-- SPRD: bug739620 Default for Settings.Secure.CAMERA_GESTURE_DISABLED -->
<integer name="camera_gesture_disabled">1</integer>
+ <!-- kongbo add for notification vibrator enable default -->
+ <integer name="xf_notification_vibrator_on">1</integer>
+
+ <!-- kongbo add for notification tone enable default -->
+ <integer name="xf_notification_tone_on">1</integer>
+
<!--SPRD:861465 recreate settingsprovider xml -->
<bool name="provision_disabled">true</bool>
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
index b956b74fa..b6e6b544b 100755
--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2369,6 +2369,12 @@ class DatabaseHelper extends SQLiteOpenHelper {
loadIntegerSetting(stmt, Settings.System.POINTER_SPEED,
R.integer.def_pointer_speed);
+ loadIntegerSetting(stmt, Settings.System.XF_NOTIFICATION_VIBRATOR_ON,
+ R.integer.xf_notification_vibrator_on);
+
+ loadIntegerSetting(stmt, Settings.System.XF_NOTIFICATION_TONE_ON,
+ R.integer.xf_notification_tone_on);
+
// set default button light timeout.
loadIntegerSetting(stmt, Settings.System.BUTTON_LIGHT_OFF_TIMEOUT,
R.integer.def_button_light_off_timeout);
用Settings.System.putInt();Settings.System.getInt()来设置和取得设置的值。
大功告成~~~~欢迎同仁交流!