diff options
author | Artur Dryomov <artur.dryomov@gmail.com> | 2013-10-03 21:35:44 +0300 |
---|---|---|
committer | Artur Dryomov <artur.dryomov@gmail.com> | 2013-10-04 01:26:20 +0300 |
commit | 99389390b8c784a3af7f7f0ef1a121b35134bb60 (patch) | |
tree | db8b9c3ee0edfc4dd8363ffbba072e48848a0c2e /android/sdremote/src | |
parent | e5961c6a09b0d1747c36088d1258ad192fa944f9 (diff) |
Add support for setting vibrate mode while showing a slide show.
Change-Id: I8f407fbce3b90b56a0fb24b1143bcd7f2a243020
Diffstat (limited to 'android/sdremote/src')
3 files changed, 50 insertions, 1 deletions
diff --git a/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java b/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java index 3c41eccbd20d..1dbc22f4f17a 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java +++ b/android/sdremote/src/org/libreoffice/impressremote/activity/SlideShowActivity.java @@ -14,6 +14,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; +import android.media.AudioManager; import android.os.Bundle; import android.os.IBinder; import android.support.v4.app.DialogFragment; @@ -46,6 +47,8 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi private Mode mMode; + private int mRingerMode; + private CommunicationService mCommunicationService; private IntentsReceiver mIntentsReceiver; @@ -59,6 +62,9 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi setUpFragment(); setUpKeepingScreenOn(); + saveRingerMode(aSavedInstanceState); + enableQuietMode(); + bindService(); } @@ -104,6 +110,32 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi return aPreferences.getBoolean(Preferences.Keys.KEEP_SCREEN_ON); } + private void saveRingerMode(Bundle aSavedInstanceState) { + if (aSavedInstanceState == null) { + mRingerMode = getAudioManager().getRingerMode(); + } else { + mRingerMode = aSavedInstanceState.getInt(SavedStates.Keys.RINGER_MODE); + } + } + + private AudioManager getAudioManager() { + return (AudioManager) getSystemService(AUDIO_SERVICE); + } + + private void enableQuietMode() { + if (!isQuietModeRequired()) { + return; + } + + getAudioManager().setRingerMode(AudioManager.RINGER_MODE_VIBRATE); + } + + private boolean isQuietModeRequired() { + Preferences aPreferences = Preferences.getSettingsInstance(this); + + return aPreferences.getBoolean(Preferences.Keys.QUIET_MODE); + } + private void bindService() { Intent aIntent = Intents.buildCommunicationServiceIntent(this); bindService(aIntent, this, Context.BIND_AUTO_CREATE); @@ -509,16 +541,23 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi super.onSaveInstanceState(aOutState); saveMode(aOutState); + rememberRingerMode(aOutState); } private void saveMode(Bundle aOutState) { aOutState.putSerializable(SavedStates.Keys.MODE, mMode); } + private void rememberRingerMode(Bundle aOutState) { + aOutState.putInt(SavedStates.Keys.RINGER_MODE, mRingerMode); + } + @Override protected void onDestroy() { super.onDestroy(); + disableQuietMode(); + if (!isServiceBound()) { return; } @@ -526,6 +565,14 @@ public class SlideShowActivity extends SherlockFragmentActivity implements Servi unbindService(); } + private void disableQuietMode() { + if (!isQuietModeRequired()) { + return; + } + + getAudioManager().setRingerMode(mRingerMode); + } + private void unbindService() { unbindService(this); } diff --git a/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java b/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java index 5a9b0c783288..ca5fbaee8a62 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java +++ b/android/sdremote/src/org/libreoffice/impressremote/util/Preferences.java @@ -30,8 +30,9 @@ public final class Preferences { public static final String SELECTED_COMPUTERS_TAB_INDEX = "selected_computers_tab_index"; - public static final String VOLUME_KEYS_ACTIONS = "volume_keys_actions"; public static final String KEEP_SCREEN_ON = "keep_screen_on"; + public static final String VOLUME_KEYS_ACTIONS = "volume_keys_actions"; + public static final String QUIET_MODE = "quiet_mode"; } private static final class Defaults { diff --git a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java index 7bc5dad6a9b0..062462e757af 100644 --- a/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java +++ b/android/sdremote/src/org/libreoffice/impressremote/util/SavedStates.java @@ -22,6 +22,7 @@ public final class SavedStates { public static final String MODE = "MODE"; public static final String PIN = "PIN"; public static final String PROGRESS_MESSAGE = "PROGRESS_MESSAGE"; + public static final String RINGER_MODE = "RINGER_MODE"; } } |