am 69e431c4: am f2ef3b51: Add a menu item to enable the audio effects panel, if one is present on the device.

Merge commit '69e431c461dc2c669839b1b5eb696c706f84620d'

* commit '69e431c461dc2c669839b1b5eb696c706f84620d':
  Add a menu item to enable the audio effects panel, if one is present
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 21928c6..d95a2ce 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -296,5 +296,8 @@
 
     <!-- Text shown on widget when first loaded -->
     <string name="widget_initial_text">Touch to select music.</string>
+
+    <!-- Menu text for the item controlling the audio effects panel [CHAR LIMIT=15] -->
+    <string name="effectspanel">Sound effects</string>
 </resources>
 
diff --git a/src/com/android/music/IMediaPlaybackService.aidl b/src/com/android/music/IMediaPlaybackService.aidl
index 7b069e7..232abf2 100644
--- a/src/com/android/music/IMediaPlaybackService.aidl
+++ b/src/com/android/music/IMediaPlaybackService.aidl
@@ -51,7 +51,6 @@
     void setRepeatMode(int repeatmode);
     int getRepeatMode();
     int getMediaMountedCount();
-    void setAudioSessionId(int sessionId);
     int getAudioSessionId();
 }
 
diff --git a/src/com/android/music/MediaPlaybackActivity.java b/src/com/android/music/MediaPlaybackActivity.java
index 782b116..c90c49b 100644
--- a/src/com/android/music/MediaPlaybackActivity.java
+++ b/src/com/android/music/MediaPlaybackActivity.java
@@ -31,9 +31,11 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.ServiceConnection;
+import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
 import android.database.Cursor;
 import android.graphics.Bitmap;
+import android.media.audiofx.AudioEffect;
 import android.media.AudioManager;
 import android.net.Uri;
 import android.os.Bundle;
@@ -525,6 +527,12 @@
                     .setIcon(R.drawable.ic_menu_set_as_ringtone);
             menu.add(1, DELETE_ITEM, 0, R.string.delete_item)
                     .setIcon(R.drawable.ic_menu_delete);
+
+            Intent i = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL);
+            if (getPackageManager().resolveActivity(i, 0) != null) {
+                menu.add(0, EFFECTS_PANEL, 0, R.string.effectspanel);
+            }
+
             return true;
         }
         return false;
@@ -611,6 +619,13 @@
                     }
                     return true;
                 }
+
+                case EFFECTS_PANEL: {
+                    Intent i = new Intent(AudioEffect.ACTION_DISPLAY_AUDIO_EFFECT_CONTROL_PANEL);
+                    i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, mService.getAudioSessionId());
+                    startActivityForResult(i, EFFECTS_PANEL);
+                    return true;
+                }
             }
         } catch (RemoteException ex) {
         }
diff --git a/src/com/android/music/MediaPlaybackService.java b/src/com/android/music/MediaPlaybackService.java
index eabd80d..e43af1f 100644
--- a/src/com/android/music/MediaPlaybackService.java
+++ b/src/com/android/music/MediaPlaybackService.java
@@ -32,6 +32,7 @@
 import android.content.SharedPreferences.Editor;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteException;
+import android.media.audiofx.AudioEffect;
 import android.media.AudioManager;
 import android.media.AudioManager.OnAudioFocusChangeListener;
 import android.media.MediaPlayer;
@@ -43,8 +44,6 @@
 import android.os.SystemClock;
 import android.os.PowerManager.WakeLock;
 import android.provider.MediaStore;
-import android.telephony.PhoneStateListener;
-import android.telephony.TelephonyManager;
 import android.util.Log;
 import android.widget.RemoteViews;
 import android.widget.Toast;
@@ -318,6 +317,10 @@
             Log.e(LOGTAG, "Service being destroyed while still playing.");
         }
         // release all MediaPlayer resources, including the native player and wakelocks
+        Intent i = new Intent(AudioEffect.ACTION_CLOSE_AUDIO_EFFECT_CONTROL_SESSION);
+        i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, getAudioSessionId());
+        i.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName());
+        sendBroadcast(i);
         mPlayer.release();
         mPlayer = null;
 
@@ -663,7 +666,7 @@
             stopSelf(mServiceStartId);
         }
     };
-    
+
     /**
      * Called when we receive a ACTION_MEDIA_EJECT notification.
      *
@@ -1687,27 +1690,6 @@
             mMediaPlayer.setWakeMode(MediaPlaybackService.this, PowerManager.PARTIAL_WAKE_LOCK);
         }
 
-        public void setDataSourceAsync(String path) {
-            try {
-                mMediaPlayer.reset();
-                mMediaPlayer.setDataSource(path);
-                mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
-                mMediaPlayer.prepareAsync();
-            } catch (IOException ex) {
-                // TODO: notify the user why the file couldn't be opened
-                mIsInitialized = false;
-                return;
-            } catch (IllegalArgumentException ex) {
-                // TODO: notify the user why the file couldn't be opened
-                mIsInitialized = false;
-                return;
-            }
-            mMediaPlayer.setOnCompletionListener(listener);
-            mMediaPlayer.setOnErrorListener(errorListener);
-            
-            mIsInitialized = true;
-        }
-        
         public void setDataSource(String path) {
             try {
                 mMediaPlayer.reset();
@@ -1730,7 +1712,10 @@
             }
             mMediaPlayer.setOnCompletionListener(listener);
             mMediaPlayer.setOnErrorListener(errorListener);
-            
+            Intent i = new Intent(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION);
+            i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, getAudioSessionId());
+            i.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName());
+            sendBroadcast(i);
             mIsInitialized = true;
         }
         
@@ -1927,9 +1912,6 @@
         public int getMediaMountedCount() {
             return mService.get().getMediaMountedCount();
         }
-        public void setAudioSessionId(int sessionId) {
-            mService.get().setAudioSessionId(sessionId);
-        }
         public int getAudioSessionId() {
             return mService.get().getAudioSessionId();
         }
diff --git a/src/com/android/music/MusicUtils.java b/src/com/android/music/MusicUtils.java
index b81b24b..b770557 100644
--- a/src/com/android/music/MusicUtils.java
+++ b/src/com/android/music/MusicUtils.java
@@ -87,7 +87,8 @@
         public final static int DELETE_ITEM = 10;
         public final static int SCAN_DONE = 11;
         public final static int QUEUE = 12;
-        public final static int CHILD_MENU_BASE = 13; // this should be the last item
+        public final static int EFFECTS_PANEL = 13;
+        public final static int CHILD_MENU_BASE = 14; // this should be the last item
     }
 
     public static String makeAlbumsLabel(Context context, int numalbums, int numsongs, boolean isUnknown) {