OSDN Git Service

Add Settings item to select sound effects control panel.
authorMarco Nelissen <marcone@google.com>
Fri, 15 Jul 2011 22:02:03 +0000 (15:02 -0700)
committerMarco Nelissen <marcone@google.com>
Fri, 15 Jul 2011 22:59:41 +0000 (15:59 -0700)
Change-Id: I7952aad3afbc9dea8ea54be9afcad7969a0f23bc

res/values/strings.xml
res/xml/sound_settings.xml
src/com/android/settings/SoundSettings.java

index 90f3c3f..8e73839 100644 (file)
     <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 -->
index 5e87793..ecc4af2 100644 (file)
             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"/>
index 4ca7d4a..f6090c2 100644 (file)
@@ -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;