diff options
author | Barnaby James <bjames@google.com> | 2015-05-10 16:24:05 -0700 |
---|---|---|
committer | Barnaby James <bjames@google.com> | 2015-05-11 09:20:54 -0700 |
commit | 0474b723e1118fe99a26cd1d1452f181a4d74ba7 (patch) | |
tree | c46bbde9f8ba2c34e84fa1f2e1f9047f40586b72 /src/com/android/settings/notification/ZenModeVoiceActivity.java | |
parent | 69a03f75171c9f21ee4517f8e6d02cfa955c6a84 (diff) | |
download | packages_apps_Settings-0474b723e1118fe99a26cd1d1452f181a4d74ba7.zip packages_apps_Settings-0474b723e1118fe99a26cd1d1452f181a4d74ba7.tar.gz packages_apps_Settings-0474b723e1118fe99a26cd1d1452f181a4d74ba7.tar.bz2 |
Simplify Zen mode voice activity.
Zen mode voice activity now only sets the notification mode to alarms mode
or off. A duration may be specified if it was in the original intent.
Change-Id: Ica472ca9c6dcbce473832f4f922baf225df4951b
Bug: 21024455
Diffstat (limited to 'src/com/android/settings/notification/ZenModeVoiceActivity.java')
-rw-r--r-- | src/com/android/settings/notification/ZenModeVoiceActivity.java | 182 |
1 files changed, 31 insertions, 151 deletions
diff --git a/src/com/android/settings/notification/ZenModeVoiceActivity.java b/src/com/android/settings/notification/ZenModeVoiceActivity.java index 2994ed1..71e56b0 100644 --- a/src/com/android/settings/notification/ZenModeVoiceActivity.java +++ b/src/com/android/settings/notification/ZenModeVoiceActivity.java @@ -20,24 +20,20 @@ import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_MINUTES; import static android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_ENABLED; import com.android.settings.R; -import com.android.settings.utils.VoiceSelectionAdapter; -import com.android.settings.utils.VoiceSelection; -import com.android.settings.utils.VoiceSelectionFragment; import com.android.settings.utils.VoiceSettingsActivity; -import android.app.Fragment; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.content.res.Resources; import android.os.UserHandle; +import android.media.AudioManager; import android.provider.Settings.Global; import android.service.notification.Condition; import android.service.notification.ZenModeConfig; import android.text.format.DateFormat; +import android.util.Log; -import java.util.ArrayList; -import java.util.List; import java.util.Locale; /** @@ -50,97 +46,31 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity { @Override protected boolean onVoiceSettingInteraction(Intent intent) { - setContentView(R.layout.voice_interaction); - pickNotificationMode(intent); - return false; - } - - /** - * Start a voice interaction to ask what kind of interruptions should - * be permitted. The intent can optionally include extra information about the type - * of interruptions desired or how long interruptions should be limited to that are - * used as hints. - */ - private void pickNotificationMode(final Intent intent) { - boolean enabled = intent.getBooleanExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, false); - boolean specified = intent.hasExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED); - - setHeader(getString(R.string.zen_mode_interruptions_voice_header)); - - List<VoiceSelection> states = new ArrayList<VoiceSelection>(); - if (!specified || enabled) { - states.add(new ModeSelection(this, Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS, - R.string.zen_mode_option_voice_important_interruptions, - R.string.zen_mode_option_voice_important_synonyms)); - states.add(new ModeSelection(this, Global.ZEN_MODE_ALARMS, - R.string.zen_mode_option_voice_alarms, - R.string.zen_mode_option_voice_alarms_synonyms)); - states.add(new ModeSelection(this, Global.ZEN_MODE_NO_INTERRUPTIONS, - R.string.zen_mode_option_voice_no_interruptions, - R.string.zen_mode_option_voice_no_interruptions_synonyms)); - } - if (!specified || !enabled) { - states.add(new ModeSelection(this, Global.ZEN_MODE_OFF, - R.string.zen_mode_option_voice_all_interruptions, - R.string.zen_mode_option_voice_all_interruptions_synonyms)); - } - VoiceSelectionFragment fragment = new VoiceSelectionFragment(); - fragment.setArguments(VoiceSelectionFragment.createArguments( - getString(R.string.zen_mode_interruptions_voice_prompt))); - fragment.setListAdapter( - new VoiceSelectionAdapter(this, R.layout.voice_item_row, states)); - fragment.setOnItemSelectedHandler(new VoiceSelection.OnItemSelectedListener() { - @Override - public void onItemSelected(int index, VoiceSelection selection) { - int mode = ((ModeSelection) selection).mMode; - ConditionSelection conditionSelection = getConditionSelection( - intent.getIntExtra(EXTRA_DO_NOT_DISTURB_MODE_MINUTES, 0)); - if (mode != Global.ZEN_MODE_OFF) { - if (conditionSelection == null) { - pickDuration(selection.getLabel(), mode); - return; - } - setZenModeConfig(mode, conditionSelection.mCondition); - } else { - setZenModeConfig(Global.ZEN_MODE_OFF, null); + if (intent.hasExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED)) { + int minutes = intent.getIntExtra(EXTRA_DO_NOT_DISTURB_MODE_MINUTES, -1); + Condition condition = null; + int mode = Global.ZEN_MODE_OFF; + + if (intent.getBooleanExtra(EXTRA_DO_NOT_DISTURB_MODE_ENABLED, false)) { + if (minutes > 0) { + condition = ZenModeConfig.toTimeCondition(this, minutes, UserHandle.myUserId()); } - notifySuccess(getChangeSummary(mode, conditionSelection)); - finish(); + mode = Global.ZEN_MODE_ALARMS; } - }); - showFragment(fragment, "pick_mode_fragment"); - } - - /** - * Start a voice interaction to ask for the zen mode duration. - */ - private void pickDuration(CharSequence label, final int mode) { - setTitle(label.toString()); - setHeader(null); - - List<VoiceSelection> states = new ArrayList<VoiceSelection>(); - states.add(new ConditionSelection(null, -1, - getString(R.string.zen_mode_duration_indefinte_voice_label), - getString(R.string.zen_mode_duration_indefinite_voice_synonyms))); - for (int i = ZenModeConfig.MINUTE_BUCKETS.length - 1; i >= 0; --i) { - states.add(getConditionSelection(ZenModeConfig.MINUTE_BUCKETS[i])); - } - - VoiceSelectionFragment fragment = new VoiceSelectionFragment(); - fragment.setArguments(VoiceSelectionFragment.createArguments( - getString(R.string.zen_mode_duration_voice_prompt))); - fragment.setListAdapter( - new VoiceSelectionAdapter(this, R.layout.voice_item_row, states)); - fragment.setOnItemSelectedHandler(new VoiceSelection.OnItemSelectedListener() { - @Override - public void onItemSelected(int index, VoiceSelection item) { - ConditionSelection selection = ((ConditionSelection) item); - setZenModeConfig(mode, selection.mCondition); - notifySuccess(getChangeSummary(mode, selection)); - finish(); + setZenModeConfig(mode, condition); + notifySuccess(getChangeSummary(mode, minutes)); + + AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + if (audioManager != null) { + // Show the current Zen Mode setting. + audioManager.adjustStreamVolume(AudioManager.STREAM_NOTIFICATION, + AudioManager.ADJUST_SAME, + AudioManager.FLAG_SHOW_UI); } - }); - showFragment(fragment, "pick_duration_fragment"); + } else { + Log.v(TAG, "Missing extra android.provider.Settings.EXTRA_DO_NOT_DISTURB_MODE_ENABLED"); + } + return true; } private void setZenModeConfig(int mode, Condition condition) { @@ -149,12 +79,12 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity { } else { NotificationManager.from(this).setZenMode(mode, null, TAG); } - } + } /** * Produce a summary of the Zen mode change to be read aloud as TTS. */ - private CharSequence getChangeSummary(int mode, ConditionSelection duration) { + private CharSequence getChangeSummary(int mode, int minutes) { int indefinite = -1; int byMinute = -1; int byHour = -1; @@ -165,76 +95,26 @@ public class ZenModeVoiceActivity extends VoiceSettingsActivity { byMinute = R.plurals.zen_mode_summary_alarms_only_by_minute; byHour = R.plurals.zen_mode_summary_alarms_only_by_hour; break; - case Global.ZEN_MODE_NO_INTERRUPTIONS: - indefinite = R.string.zen_mode_summary_no_interruptions_indefinite; - byMinute = R.plurals.zen_mode_summary_no_interruptions_by_minute; - byHour = R.plurals.zen_mode_summary_no_interruptions_by_hour; - break; - case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: - indefinite = R.string.zen_mode_summary_priority_indefinitely; - byMinute = R.plurals.zen_mode_summary_priority_by_minute; - byHour = R.plurals.zen_mode_summary_priority_by_hour; - break; - default: case Global.ZEN_MODE_OFF: indefinite = R.string.zen_mode_summary_always; break; }; - if (duration == null || duration.mCondition == null) { + if (minutes < 0 || mode == Global.ZEN_MODE_OFF) { return getString(indefinite); } - long time = System.currentTimeMillis() + duration.mMinutes * MINUTES_MS; + long time = System.currentTimeMillis() + minutes * MINUTES_MS; String skeleton = DateFormat.is24HourFormat(this, UserHandle.myUserId()) ? "Hm" : "hma"; String pattern = DateFormat.getBestDateTimePattern(Locale.getDefault(), skeleton); CharSequence formattedTime = DateFormat.format(pattern, time); Resources res = getResources(); - if (duration.mMinutes < 60) { - return res.getQuantityString(byMinute, - duration.mMinutes, duration.mMinutes, formattedTime); - } else { - int hours = duration.mMinutes / 60; - return res.getQuantityString(byHour, hours, hours, formattedTime); - } - } - - private ConditionSelection getConditionSelection(int minutes) { - Condition condition = ZenModeConfig.toTimeCondition(this, minutes, UserHandle.myUserId()); - Resources res = getResources(); - if (minutes <= 0) { - return null; - } else if (minutes < 60) { - String label = res.getQuantityString(R.plurals.zen_mode_duration_minutes_voice_label, - minutes, minutes); - return new ConditionSelection(condition, minutes, label, Integer.toString(minutes)); + if (minutes < 60) { + return res.getQuantityString(byMinute, minutes, minutes, formattedTime); } else { int hours = minutes / 60; - String label = res.getQuantityString(R.plurals.zen_mode_duration_hours_voice_label, - hours, hours); - return new ConditionSelection(condition, minutes, label, Integer.toString(hours)); - } - } - - private static class ConditionSelection extends VoiceSelection { - Condition mCondition; - int mMinutes; - - public ConditionSelection(Condition condition, int minutes, CharSequence label, - CharSequence synonyms) { - super(label, synonyms); - mMinutes = minutes; - mCondition = condition; - } - } - - private static class ModeSelection extends VoiceSelection { - int mMode; - - public ModeSelection(Context context, int mode, int label, int synonyms) { - super(context.getString(label), context.getString(synonyms)); - mMode = mode; + return res.getQuantityString(byHour, hours, hours, formattedTime); } } } |