summaryrefslogtreecommitdiffstats
path: root/packages/SystemUI/src/com/android/systemui/statusbar/powerwidget/SoundButton.java
diff options
context:
space:
mode:
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.java65
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);
}
}