From 4b43c451a7215ef05622fb9bdb6cb7d84e70efec Mon Sep 17 00:00:00 2001 From: uabdullah Date: Tue, 12 Dec 2017 11:41:57 -0800 Subject: Download and play voicemails from server when not locally available. Test: Unit tests PiperOrigin-RevId: 178791213 Change-Id: I9e68c561285988cc1def894f5c7ecf9715ecf6b6 --- .../voicemail/listui/NewVoicemailMediaPlayer.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java') diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java index 2d59b241b..48062a87d 100644 --- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java +++ b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayer.java @@ -23,6 +23,7 @@ import android.media.MediaPlayer.OnErrorListener; import android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import com.android.dialer.common.Assert; import com.android.dialer.common.LogUtil; import java.io.IOException; @@ -38,6 +39,7 @@ public class NewVoicemailMediaPlayer { private OnPreparedListener newVoicemailMediaPlayerOnPreparedListener; private OnCompletionListener newVoicemailMediaPlayerOnCompletionListener; private Uri pausedUri; + @Nullable private Uri voicemailRequestedToDownload; public NewVoicemailMediaPlayer(@NonNull MediaPlayer player) { mediaPlayer = Assert.isNotNull(player); @@ -94,6 +96,7 @@ public class NewVoicemailMediaPlayer { mediaPlayer.start(); voicemailLastPlayedOrPlayingUri = startPlayingVoicemailUri; pausedUri = null; + voicemailRequestedToDownload = null; } public void reset() { @@ -102,6 +105,7 @@ public class NewVoicemailMediaPlayer { voicemailLastPlayedOrPlayingUri = null; voicemailUriLastPreparedOrPreparingToPlay = null; pausedUri = null; + voicemailRequestedToDownload = null; } public void pauseMediaPlayer(Uri voicemailUri) { @@ -134,6 +138,11 @@ public class NewVoicemailMediaPlayer { newVoicemailMediaPlayerOnCompletionListener = onCompletionListener; } + public void setVoicemailRequestedToDownload(@NonNull Uri uri) { + Assert.isNotNull(uri, "cannot download a null voicemail"); + voicemailRequestedToDownload = uri; + } + /** * Note: In some cases it's possible mediaPlayer.isPlaying() can return true, but * mediaPlayer.getCurrentPosition() can be greater than mediaPlayer.getDuration(), after which @@ -182,6 +191,17 @@ public class NewVoicemailMediaPlayer { return mediaPlayer.getDuration(); } + /** + * A null v/s non-value is important for the {@link NewVoicemailAdapter} to differentiate between + * a underlying table change due to a voicemail being downloaded or something else (e.g delete). + * + * @return if there was a Uri that was requested to be downloaded from the server, null otherwise. + */ + @Nullable + public Uri getVoicemailRequestedToDownload() { + return voicemailRequestedToDownload; + } + public boolean isPaused() { return pausedUri != null; } -- cgit v1.2.3