diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2019-11-18 16:26:25 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-11-18 16:26:25 -0800 |
commit | 73aa04b4639688674712d18b65b3121a7f49e20a (patch) | |
tree | 0e94120d86edc047b734b6ef2ece78cbb569202c | |
parent | ff85df5bebc600f844d162fcefc01713141c28ec (diff) | |
parent | 287097108b913837ba76565ab07cbcb7ceb6ea1c (diff) | |
download | UniversalMediaPlayer-73aa04b4639688674712d18b65b3121a7f49e20a.tar.gz |
Updating VideoPlayer as per androidx.media library changes am: 08320e11d6android-r-preview-4android-r-preview-3android-r-preview-2
am: 287097108b
Change-Id: Ie3139884815b51f5c45f504ded4358e91fb44d5e
-rw-r--r-- | Android.bp | 1 | ||||
-rw-r--r-- | build.gradle | 3 | ||||
-rw-r--r-- | java/com/android/pump/activity/AudioPlayerActivity.java | 23 | ||||
-rw-r--r-- | java/com/android/pump/activity/VideoPlayerActivity.java | 69 |
4 files changed, 56 insertions, 40 deletions
@@ -25,6 +25,7 @@ android_app { static_libs: [ "androidx-constraintlayout_constraintlayout", "androidx.media2_media2-widget", + "androidx.media2_media2-player", "com.google.android.material_material" ], optimize: { diff --git a/build.gradle b/build.gradle index cf219d4..2f87314 100644 --- a/build.gradle +++ b/build.gradle @@ -63,6 +63,7 @@ repositories { dependencies { implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'androidx.media2:media2-widget:1.0.0-alpha07' + implementation 'androidx.media2:media2-widget:+' + implementation 'androidx.media2:media2-player:+' implementation 'com.google.android.material:material:1.0.0' } diff --git a/java/com/android/pump/activity/AudioPlayerActivity.java b/java/com/android/pump/activity/AudioPlayerActivity.java index d55d286..cfdb651 100644 --- a/java/com/android/pump/activity/AudioPlayerActivity.java +++ b/java/com/android/pump/activity/AudioPlayerActivity.java @@ -27,7 +27,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.UiThread; import androidx.appcompat.app.AppCompatActivity; +import androidx.media.AudioAttributesCompat; import androidx.media2.common.UriMediaItem; +import androidx.media2.player.MediaPlayer; import androidx.media2.widget.VideoView; import com.android.pump.R; @@ -44,6 +46,7 @@ public class AudioPlayerActivity extends AppCompatActivity { private static final String TAG = Clog.tag(AudioPlayerActivity.class); private VideoView mVideoView; + private MediaPlayer mMediaPlayer; public static void start(@NonNull Context context, @NonNull Audio audio) { // TODO(b/123702587) Find a better URI (audio.getUri()?) @@ -118,6 +121,14 @@ public class AudioPlayerActivity extends AppCompatActivity { setContentView(R.layout.activity_audio_player); mVideoView = findViewById(R.id.video_view); + mMediaPlayer = new MediaPlayer(AudioPlayerActivity.this); + AudioAttributesCompat audioAttributes = new AudioAttributesCompat.Builder() + .setUsage(AudioAttributesCompat.USAGE_MEDIA) + .setContentType(AudioAttributesCompat.CONTENT_TYPE_MOVIE).build(); + + mMediaPlayer.setAudioAttributes(audioAttributes); + mVideoView.setPlayer(mMediaPlayer); + handleIntent(); } @@ -138,6 +149,16 @@ public class AudioPlayerActivity extends AppCompatActivity { return; } UriMediaItem mediaItem = new UriMediaItem.Builder(uri).build(); - mVideoView.setMediaItem(mediaItem); + mMediaPlayer.setMediaItem(mediaItem); + } + + @Override + protected void onDestroy() { + super.onDestroy(); + try { + if (mMediaPlayer != null) { + mMediaPlayer.close(); + } + } catch (Exception e) { } } } diff --git a/java/com/android/pump/activity/VideoPlayerActivity.java b/java/com/android/pump/activity/VideoPlayerActivity.java index 1e75c40..1ef7709 100644 --- a/java/com/android/pump/activity/VideoPlayerActivity.java +++ b/java/com/android/pump/activity/VideoPlayerActivity.java @@ -27,15 +27,14 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.UiThread; import androidx.appcompat.app.AppCompatActivity; -import androidx.media2.common.MediaItem; +import androidx.core.content.ContextCompat; +import androidx.media.AudioAttributesCompat; import androidx.media2.common.SessionPlayer; import androidx.media2.common.UriMediaItem; -import androidx.media2.session.MediaController; -import androidx.media2.session.SessionToken; +import androidx.media2.player.MediaPlayer; import androidx.media2.widget.VideoView; import com.android.pump.R; -import com.android.pump.concurrent.Executors; import com.android.pump.db.Video; import com.android.pump.util.Clog; import com.android.pump.util.IntentUtils; @@ -46,7 +45,7 @@ public class VideoPlayerActivity extends AppCompatActivity { private static final String SAVED_POSITION_KEY = "SavedPosition"; private VideoView mVideoView; - private MediaController mMediaController; + private MediaPlayer mMediaPlayer; private long mSavedPosition = SessionPlayer.UNKNOWN_TIME; public static void start(@NonNull Context context, @NonNull Video video) { @@ -70,38 +69,24 @@ public class VideoPlayerActivity extends AppCompatActivity { SessionPlayer.UNKNOWN_TIME); } + mMediaPlayer = new MediaPlayer(VideoPlayerActivity.this); + AudioAttributesCompat audioAttributes = new AudioAttributesCompat.Builder() + .setUsage(AudioAttributesCompat.USAGE_MEDIA) + .setContentType(AudioAttributesCompat.CONTENT_TYPE_MOVIE).build(); + + mMediaPlayer.setAudioAttributes(audioAttributes); + mVideoView.setPlayer(mMediaPlayer); + handleIntent(); } @Override public void onSaveInstanceState(@NonNull Bundle outState) { - if (mMediaController != null) { - outState.putLong(SAVED_POSITION_KEY, mMediaController.getCurrentPosition()); - } - + outState.putLong(SAVED_POSITION_KEY, mMediaPlayer.getCurrentPosition()); super.onSaveInstanceState(outState); } @Override - public void onAttachedToWindow() { - if (mMediaController == null) { - SessionToken token = mVideoView.getSessionToken(); - mMediaController = new MediaController.Builder(this) - .setSessionToken(token) - .setControllerCallback(Executors.uiThreadExecutor(), new ControllerCallback()) - .build(); - } - } - - @Override - public void onDetachedFromWindow() { - if (mMediaController != null) { - mMediaController.close(); - mMediaController = null; - } - } - - @Override protected void onNewIntent(@Nullable Intent intent) { super.onNewIntent(intent); setIntent(intent); @@ -118,18 +103,26 @@ public class VideoPlayerActivity extends AppCompatActivity { return; } UriMediaItem mediaItem = new UriMediaItem.Builder(uri).build(); - mVideoView.setMediaItem(mediaItem); + mMediaPlayer.setMediaItem(mediaItem) + .addListener(new Runnable() { + @Override + public void run() { + if (mSavedPosition != SessionPlayer.UNKNOWN_TIME) { + mMediaPlayer.seekTo(mSavedPosition); + mSavedPosition = SessionPlayer.UNKNOWN_TIME; + } + mMediaPlayer.play(); + } + }, ContextCompat.getMainExecutor(this)); } - private class ControllerCallback extends MediaController.ControllerCallback { - @Override - public void onCurrentMediaItemChanged(@NonNull MediaController controller, - @Nullable MediaItem item) { - if (mSavedPosition != SessionPlayer.UNKNOWN_TIME) { - controller.seekTo(mSavedPosition); - mSavedPosition = SessionPlayer.UNKNOWN_TIME; + @Override + protected void onDestroy() { + super.onDestroy(); + try { + if (mMediaPlayer != null) { + mMediaPlayer.close(); } - controller.play(); - } + } catch (Exception e) { } } } |