Updating VideoPlayer as per androidx.media library changes
am: 08320e11d6

Change-Id: I4b6c4cc2857196b5f8e07a0a7608f31d2eba4ed0
diff --git a/Android.bp b/Android.bp
index 3c7f1e2..b12b53c 100644
--- a/Android.bp
+++ b/Android.bp
@@ -25,6 +25,7 @@
     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 @@
 
 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.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 @@
     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 @@
         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 @@
             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.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 @@
     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 @@
                     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 @@
             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) { }
     }
 }