Merge "Use the correct stream for playback."
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java b/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
index 80f7862..8d549a7 100644
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
+++ b/src/com/android/contacts/voicemail/VoicemailPlaybackFragment.java
@@ -395,7 +395,6 @@
 
         @Override
         public void setSpeakerPhoneOn(boolean on) {
-            getAudioManager().setMode(AudioManager.MODE_IN_CALL);
             getAudioManager().setSpeakerphoneOn(on);
             if (on) {
                 mPlaybackSpeakerphone.setImageResource(R.drawable.ic_sound_holo_dark);
@@ -403,6 +402,14 @@
                 mPlaybackSpeakerphone.setImageResource(R.drawable.ic_sound_holo_dark);
             }
         }
+
+        @Override
+        public void setVolumeControlStream(int streamType) {
+            Activity activity = mActivityReference.get();
+            if (activity != null) {
+                activity.setVolumeControlStream(streamType);
+            }
+        }
     }
 
     /**
diff --git a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
index 6eb541d..f8e497d 100644
--- a/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/contacts/voicemail/VoicemailPlaybackPresenter.java
@@ -27,6 +27,7 @@
 
 import android.content.Context;
 import android.database.ContentObserver;
+import android.media.AudioManager;
 import android.media.MediaPlayer;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -60,6 +61,9 @@
 @NotThreadSafe
 @VisibleForTesting
 public class VoicemailPlaybackPresenter {
+    /** The stream used to playback voicemail. */
+    private static final int PLAYBACK_STREAM = AudioManager.STREAM_VOICE_CALL;
+
     /** Contract describing the behaviour we need from the ui we are controlling. */
     public interface PlaybackView {
         Context getDataSourceContext();
@@ -89,6 +93,7 @@
         void unregisterContentObserver(ContentObserver observer);
         void enableProximitySensor();
         void disableProximitySensor();
+        void setVolumeControlStream(int streamType);
     }
 
     /** The enumeration of {@link AsyncTask} objects we use in this class. */
@@ -179,6 +184,7 @@
     }
 
     public void onCreate(Bundle bundle) {
+        mView.setVolumeControlStream(PLAYBACK_STREAM);
         checkThatWeHaveContent();
     }
 
@@ -304,6 +310,7 @@
                         try {
                             mPlayer.reset();
                             mPlayer.setDataSource(mView.getDataSourceContext(), mVoicemailUri);
+                            mPlayer.setAudioStreamType(PLAYBACK_STREAM);
                             mPlayer.prepare();
                             return null;
                         } catch (IOException e) {
@@ -428,6 +435,7 @@
         try {
             mPlayer.reset();
             mPlayer.setDataSource(mView.getDataSourceContext(), mVoicemailUri);
+            mPlayer.setAudioStreamType(PLAYBACK_STREAM);
             mPlayer.prepare();
             mDuration.set(mPlayer.getDuration());
             int startPosition = constrain(clipPositionInMillis, 0, mDuration.get());