aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Garnes <matt@cyngn.com>2015-07-29 17:19:03 -0700
committerMatt Garnes <matt@cyngn.com>2015-08-06 16:18:50 -0700
commit51c39ba2d7487a305d9f6fc8724d254bce687e7d (patch)
tree75cb5eaa08cbe817f47ff6a1099b708329d548d2 /src
parent9e6ec9e8ba2b880d0d005a01090aa6ca3ca3e465 (diff)
downloadvendor_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.aidl1
-rw-r--r--src/java/cyanogenmod/app/SettingsManager.java56
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}