diff options
author | Matt Garnes <matt@cyngn.com> | 2015-07-29 17:19:03 -0700 |
---|---|---|
committer | Matt Garnes <matt@cyngn.com> | 2015-08-06 16:18:50 -0700 |
commit | 51c39ba2d7487a305d9f6fc8724d254bce687e7d (patch) | |
tree | 75cb5eaa08cbe817f47ff6a1099b708329d548d2 /src | |
parent | 9e6ec9e8ba2b880d0d005a01090aa6ca3ca3e465 (diff) | |
download | vendor_cmsdk-51c39ba2d7487a305d9f6fc8724d254bce687e7d.zip vendor_cmsdk-51c39ba2d7487a305d9f6fc8724d254bce687e7d.tar.gz vendor_cmsdk-51c39ba2d7487a305d9f6fc8724d254bce687e7d.tar.bz2 |
Add API to SettingsManager to set zen mode.
- Add a new permission cyanogenmod.permission.MODIFY_SOUND_SETTINGS.
- Only allowed when the caller holds
cyanogenmod.permission.MODIFY_SOUND_SETTINGS.
- Allows the user to set zen mode to the off, priority interruptions
only, or no interruptions modes.
- For each mode change, the end condition will be set to null so that
the mode remains active indefinitely.
Change-Id: Id465509a8cc8d98953bf8cbe06cacff02b9f75a0
Diffstat (limited to 'src')
-rw-r--r-- | src/java/cyanogenmod/app/ISettingsManager.aidl | 1 | ||||
-rw-r--r-- | src/java/cyanogenmod/app/SettingsManager.java | 56 |
2 files changed, 57 insertions, 0 deletions
diff --git a/src/java/cyanogenmod/app/ISettingsManager.aidl b/src/java/cyanogenmod/app/ISettingsManager.aidl index 83d7bf0..86fa36c 100644 --- a/src/java/cyanogenmod/app/ISettingsManager.aidl +++ b/src/java/cyanogenmod/app/ISettingsManager.aidl @@ -22,6 +22,7 @@ interface ISettingsManager { void setAirplaneModeEnabled(boolean enabled); void setMobileDataEnabled(boolean enabled); + boolean setZenMode(int mode); void shutdown(); void reboot(); } diff --git a/src/java/cyanogenmod/app/SettingsManager.java b/src/java/cyanogenmod/app/SettingsManager.java index 2ab871b..b8a5802 100644 --- a/src/java/cyanogenmod/app/SettingsManager.java +++ b/src/java/cyanogenmod/app/SettingsManager.java @@ -28,6 +28,30 @@ import android.util.Log; * </p> */ public class SettingsManager { + /** + * Turn off zen mode. This restores the original ring and interruption + * settings that the user had set before zen mode was enabled. + * + * @see #setZenMode + */ + public static final int ZEN_MODE_OFF = 0; + /** + * Sets zen mode to important interruptions mode, so that + * only notifications that the user has chosen in Settings + * to be of high importance will cause the user's device to notify them. + * + * This condition is held indefinitely until changed again. + * + * @see #setZenMode + */ + public static final int ZEN_MODE_IMPORTANT_INTERRUPTIONS = 1; + /** + * Sets zen mode so that no interruptions will be allowed. The device is + * effectively silenced indefinitely, until the mode is changed again. + * + * @see #setZenMode + */ + public static final int ZEN_MODE_NO_INTERRUPTIONS = 2; private static ISettingsManager sService; @@ -40,6 +64,12 @@ public class SettingsManager { public static final String MODIFY_NETWORK_SETTINGS_PERMISSION = "cyanogenmod.permission.MODIFY_NETWORK_SETTINGS"; + /** + * Allows an application to change system sound settings, such as the zen mode. + */ + public static final String MODIFY_SOUND_SETTINGS_PERMISSION = + "cyanogenmod.permission.MODIFY_SOUND_SETTINGS"; + private static final String TAG = "SettingsManager"; private static SettingsManager sSettingsManagerInstance; @@ -117,6 +147,32 @@ public class SettingsManager { } /** + * Set the zen mode for the device. + * + * You will need {@link #MODIFY_SOUND_SETTINGS_PERMISSION} + * to utilize this functionality. + * + * @see #ZEN_MODE_IMPORTANT_INTERRUPTIONS + * @see #ZEN_MODE_NO_INTERRUPTIONS + * @see #ZEN_MODE_OFF + * @param mode The zen mode to set the device to. + * One of {@link #ZEN_MODE_IMPORTANT_INTERRUPTIONS}, + * {@link #ZEN_MODE_NO_INTERRUPTIONS} or + * {@link #ZEN_MODE_OFF}. + */ + public boolean setZenMode(int mode) { + if (sService == null) { + return false; + } + try { + return getService().setZenMode(mode); + } catch (RemoteException e) { + Log.e(TAG, e.getLocalizedMessage(), e); + } + return false; + } + + /** * Shuts down the device, immediately. * * You will need {@link android.Manifest.permission.REBOOT} |