diff options
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | res/xml/sound_settings.xml | 7 | ||||
-rw-r--r-- | src/com/android/settings/SoundSettings.java | 23 |
3 files changed, 32 insertions, 0 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 90f3c3f..8e73839 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1364,6 +1364,8 @@ <string name="ringtone_summary">""</string> <!-- Sound settings screen, volume title --> <string name="all_volume_title">Volume</string> + <!-- Sound settings screen, music effects title [CHAR LIMIT=30]--> + <string name="musicfx_title">Music Effects</string> <!-- Sound settings screen, setting option name --> <string name="ring_volume_title">Ringer volume</string> <!-- Sound settings screen, setting option summary text --> diff --git a/res/xml/sound_settings.xml b/res/xml/sound_settings.xml index 5e87793..ecc4af2 100644 --- a/res/xml/sound_settings.xml +++ b/res/xml/sound_settings.xml @@ -45,6 +45,13 @@ android:persistent="false" android:streamType="ring" /> + <Preference + android:key="musicfx" + android:title="@string/musicfx_title"> + <intent android:targetPackage="com.android.musicfx" + android:targetClass="com.android.musicfx.ControlPanelPicker" /> + </Preference> + <PreferenceCategory android:key="category_calls" android:title="@string/sound_category_calls_title"/> diff --git a/src/com/android/settings/SoundSettings.java b/src/com/android/settings/SoundSettings.java index 4ca7d4a..f6090c2 100644 --- a/src/com/android/settings/SoundSettings.java +++ b/src/com/android/settings/SoundSettings.java @@ -21,7 +21,10 @@ import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.media.AudioManager; +import android.media.audiofx.AudioEffect; import android.os.Bundle; import android.os.Vibrator; import android.preference.CheckBoxPreference; @@ -34,6 +37,8 @@ import android.provider.Settings.SettingNotFoundException; import android.telephony.TelephonyManager; import android.util.Log; +import java.util.List; + public class SoundSettings extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener { private static final String TAG = "SoundAndDisplaysSettings"; @@ -44,6 +49,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements private static final String KEY_SILENT = "silent"; private static final String KEY_VIBRATE = "vibrate"; private static final String KEY_RING_VOLUME = "ring_volume"; + private static final String KEY_MUSICFX = "musicfx"; private static final String KEY_DTMF_TONE = "dtmf_tone"; private static final String KEY_SOUND_EFFECTS = "sound_effects"; private static final String KEY_HAPTIC_FEEDBACK = "haptic_feedback"; @@ -80,6 +86,7 @@ public class SoundSettings extends SettingsPreferenceFragment implements private CheckBoxPreference mSoundEffects; private CheckBoxPreference mHapticFeedback; private CheckBoxPreference mNotificationPulse; + private Preference mMusicFx; private CheckBoxPreference mLockSounds; private AudioManager mAudioManager; @@ -165,6 +172,19 @@ public class SoundSettings extends SettingsPreferenceFragment implements } } + mMusicFx = mSoundSettings.findPreference(KEY_MUSICFX); + Intent i = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL); + PackageManager p = getPackageManager(); + List<ResolveInfo> ris = p.queryIntentActivities(i, PackageManager.GET_DISABLED_COMPONENTS); + if (ris.size() <= 2) { + // no need to show the item if there is no choice for the user to make + // note: the built in musicfx panel has two activities (one being a + // compatibility shim that launches either the other activity, or a + // third party one), hence the check for <=2. If the implementation + // of the compatbility layer changes, this check may need to be updated. + mSoundSettings.removePreference(mMusicFx); + } + if (!Utils.isVoiceCapable(getActivity())) { for (String prefKey : NEED_VOICE_CAPABILITY) { Preference pref = findPreference(prefKey); @@ -335,6 +355,9 @@ public class SoundSettings extends SettingsPreferenceFragment implements boolean value = mNotificationPulse.isChecked(); Settings.System.putInt(getContentResolver(), Settings.System.NOTIFICATION_LIGHT_PULSE, value ? 1 : 0); + } else if (preference == mMusicFx) { + // let the framework fire off the intent + return false; } return true; |