summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/voicemail
diff options
context:
space:
mode:
authorAndrew Lee <anwlee@google.com>2015-06-01 18:51:03 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-06-01 18:51:03 +0000
commitb49d8cda7502782408e7a2434584f2d9377ae2cb (patch)
treed91ba65abaff705d7949febf5a7c615124c86a2b /src/com/android/dialer/voicemail
parente3470c6eb95fced8140b201314e1400a64af145e (diff)
parent42be85d8a976c049ea237a48a35beada80638b85 (diff)
Merge "Fix CallDetailActivity tests." into mnc-dev
Diffstat (limited to 'src/com/android/dialer/voicemail')
-rw-r--r--src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
index 1ab87fd24..1ee376582 100644
--- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
+++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java
@@ -43,6 +43,7 @@ import com.android.common.io.MoreCloseables;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import java.io.IOException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.RejectedExecutionException;
@@ -124,6 +125,7 @@ public class VoicemailPlaybackPresenter
private Uri mVoicemailUri;
private int mPosition;
+ private boolean mIsPrepared;
private boolean mIsPlaying;
private boolean mShouldResumePlaybackAfterSeeking;
@@ -172,6 +174,7 @@ public class VoicemailPlaybackPresenter
mView.setPresenter(this);
+ mIsPrepared = false;
checkForContent();
}
@@ -184,6 +187,11 @@ public class VoicemailPlaybackPresenter
}
public void onDestroy() {
+ if (mIsPrepared) {
+ mMediaPlayer.release();
+ mIsPrepared = false;
+ }
+
if (mScheduledExecutorService != null) {
mScheduledExecutorService.shutdown();
mScheduledExecutorService = null;
@@ -350,7 +358,7 @@ public class VoicemailPlaybackPresenter
mMediaPlayer.setDataSource(mContext, mVoicemailUri);
mMediaPlayer.setAudioStreamType(PLAYBACK_STREAM);
mMediaPlayer.prepareAsync();
- } catch (Exception e) {
+ } catch (IOException e) {
handleError(e);
}
}
@@ -360,6 +368,8 @@ public class VoicemailPlaybackPresenter
*/
@Override
public void onPrepared(MediaPlayer mp) {
+ mIsPrepared = true;
+
mView.enableUiElements();
if (mIsPlaying) {
@@ -380,7 +390,11 @@ public class VoicemailPlaybackPresenter
}
private void handleError(Exception e) {
- mMediaPlayer.release();
+ if (mIsPrepared) {
+ mMediaPlayer.release();
+ mIsPrepared = false;
+ }
+
mView.onPlaybackError(e);
setPosition(0, false);
}