Merge "Continue voicemail playback during rotation." into mnc-dev
diff --git a/src/com/android/dialer/CallDetailActivity.java b/src/com/android/dialer/CallDetailActivity.java
index 7fa3750..ce29049 100644
--- a/src/com/android/dialer/CallDetailActivity.java
+++ b/src/com/android/dialer/CallDetailActivity.java
@@ -272,7 +272,7 @@
     @Override
     public void onPause() {
         if (mVoicemailPlaybackPresenter != null) {
-            mVoicemailPlaybackPresenter.onPause();
+            mVoicemailPlaybackPresenter.onPause(isFinishing());
         }
         super.onPause();
     }
@@ -280,7 +280,7 @@
     @Override
     public void onDestroy() {
         if (mVoicemailPlaybackPresenter != null) {
-            mVoicemailPlaybackPresenter.onDestroy();
+            mVoicemailPlaybackPresenter.onDestroy(isFinishing());
         }
         super.onDestroy();
     }
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 1ee3765..e8b0460 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -170,24 +170,28 @@
             PlaybackView view, Uri voicemailUri, boolean startPlayingImmediately) {
         mView = view;
         mVoicemailUri = voicemailUri;
-        setPosition(0, startPlayingImmediately);
 
         mView.setPresenter(this);
 
-        mIsPrepared = false;
+        if (!mMediaPlayer.isPlaying()) {
+            setPosition(0, startPlayingImmediately);
+            mIsPrepared = false;
+        }
         checkForContent();
     }
 
-    public void onPause() {
-        if (mMediaPlayer.isPlaying()) {
+    public void onPause(boolean isFinishing) {
+        // Do not pause for orientation changes.
+        if (mMediaPlayer.isPlaying() && isFinishing) {
             pausePlayback(mMediaPlayer.getCurrentPosition(), mIsPlaying);
         }
 
         disableProximitySensor(false /* waitForFarState */);
     }
 
-    public void onDestroy() {
-        if (mIsPrepared) {
+    public void onDestroy(boolean isFinishing) {
+        // Do not release for orientation changes.
+        if (mIsPrepared && isFinishing) {
             mMediaPlayer.release();
             mIsPrepared = false;
         }