diff options
Diffstat (limited to 'packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java')
-rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java | 65 |
1 files changed, 26 insertions, 39 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java index 20b96a6..f248377 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java @@ -9,7 +9,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.net.Uri; -import android.os.Vibrator; import android.preference.ListPreferenceMultiSelect; import android.provider.Settings; import android.view.View; @@ -21,7 +20,7 @@ public class SoundButton extends PowerButton { private static final String TAG = "SoundButton"; - private static final int VIBRATE_DURATION = 500; // 0.5s + private static final int VIBRATE_DURATION = 250; // 0.25s private static final IntentFilter INTENT_FILTER = new IntentFilter(); static { @@ -32,8 +31,6 @@ public class SoundButton extends PowerButton { private static final List<Uri> OBSERVED_URIS = new ArrayList<Uri>(); static { OBSERVED_URIS.add(Settings.System.getUriFor(Settings.System.EXPANDED_RING_MODE)); - OBSERVED_URIS.add(Settings.System.getUriFor(Settings.System.EXPANDED_HAPTIC_FEEDBACK)); - OBSERVED_URIS.add(Settings.System.getUriFor(Settings.System.HAPTIC_FEEDBACK_ENABLED)); } private final Ringer mSilentRinger = new Ringer(false, AudioManager.VIBRATE_SETTING_OFF, @@ -54,10 +51,7 @@ public class SoundButton extends PowerButton { }; private int mRingerValuesIndex = 2; - private boolean mHapticFeedbackEnabled = false; - private AudioManager mAudioManager; - private Vibrator mVibrator; public SoundButton() { mType = BUTTON_SOUND; @@ -68,15 +62,13 @@ public class SoundButton extends PowerButton { super.setupButton(view); if (mView != null) { Context context = mView.getContext(); - mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); - mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); - updateSettings(); + updateSettings(context.getContentResolver()); } } @Override - protected void updateState() { - findCurrentState(); + protected void updateState(Context context) { + findCurrentState(context); switch (mRingersIndex) { case 0: mIcon = R.drawable.stat_silent; @@ -104,7 +96,7 @@ public class SoundButton extends PowerButton { } @Override - protected void toggleState() { + protected void toggleState(Context context) { mRingerValuesIndex++; if (mRingerValuesIndex > mRingerValues.length - 1) { mRingerValuesIndex = 0; @@ -114,21 +106,21 @@ public class SoundButton extends PowerButton { mRingersIndex = 0; } Ringer ringer = mRingers[mRingersIndex]; - ringer.execute(); + ringer.execute(context); } @Override - protected boolean handleLongClick() { + protected boolean handleLongClick(Context context) { Intent intent = new Intent("android.settings.SOUND_SETTINGS"); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - mView.getContext().startActivity(intent); + context.startActivity(intent); return true; } @Override - protected void onChangeUri(Uri uri) { - updateSettings(); + protected void onChangeUri(ContentResolver cr, Uri uri) { + updateSettings(cr); } @Override @@ -141,18 +133,7 @@ public class SoundButton extends PowerButton { return INTENT_FILTER; } - private void updateSettings() { - ContentResolver resolver = mView.getContext().getContentResolver(); - - int expandedHapticFeedback = Settings.System.getInt(resolver, - Settings.System.EXPANDED_HAPTIC_FEEDBACK, 2); - if (expandedHapticFeedback == 2) { - mHapticFeedbackEnabled = (Settings.System.getInt(resolver, - Settings.System.HAPTIC_FEEDBACK_ENABLED, 1) == 1); - } else { - mHapticFeedbackEnabled = (expandedHapticFeedback == 1); - } - + private void updateSettings(ContentResolver resolver) { String[] modes = ListPreferenceMultiSelect.parseStoredValue(Settings.System.getString( resolver, Settings.System.EXPANDED_RING_MODE)); if (modes == null || modes.length == 0) { @@ -165,13 +146,12 @@ public class SoundButton extends PowerButton { mRingerValues[i] = Integer.valueOf(modes[i]); } } - - updateState(); } - private void findCurrentState() { - ContentResolver resolver = mView.getContext().getContentResolver(); - boolean vibrateInSilent = Settings.System.getInt(resolver, + private void findCurrentState(Context context) { + ensureAudioManager(context); + + boolean vibrateInSilent = Settings.System.getInt(context.getContentResolver(), Settings.System.VIBRATE_IN_SILENT, 0) == 1; int vibrateSetting = mAudioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER); int ringerMode = mAudioManager.getRingerMode(); @@ -198,8 +178,13 @@ public class SoundButton extends PowerButton { } } - private class Ringer { + private void ensureAudioManager(Context context) { + if (mAudioManager == null) { + mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); + } + } + private class Ringer { final boolean mVibrateInSilent; final int mVibrateSetting; final int mRingerMode; @@ -212,13 +197,15 @@ public class SoundButton extends PowerButton { mDoHapticFeedback = doHapticFeedback; } - void execute() { - ContentResolver resolver = mView.getContext().getContentResolver(); + void execute(Context context) { + ContentResolver resolver = context.getContentResolver(); Settings.System.putInt(resolver, Settings.System.VIBRATE_IN_SILENT, (mVibrateInSilent ? 1 : 0)); + + ensureAudioManager(context); mAudioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER, mVibrateSetting); mAudioManager.setRingerMode(mRingerMode); - if (mDoHapticFeedback && mHapticFeedbackEnabled) { + if (mDoHapticFeedback && mHapticFeedback) { mVibrator.vibrate(VIBRATE_DURATION); } } |