diff options
author | Arnaud Berry <arnaudberry@google.com> | 2019-09-18 13:49:30 -0700 |
---|---|---|
committer | Arnaud Berry <arnaudberry@google.com> | 2019-09-18 13:49:30 -0700 |
commit | 5c03d5cdb6f55fc566adce0584ace596e9494f39 (patch) | |
tree | b868f20d19c00268eed78a58bdf84fd6ac3457ec /TestMediaApp/src | |
parent | 2ec931a38a6f953de6c637e7b83fdb6f206afd27 (diff) | |
download | tests-5c03d5cdb6f55fc566adce0584ace596e9494f39.tar.gz |
Simulate blutooth case of having a playable queue without browse items
Test: manual
Change-Id: Ib47544cb340c0a17fc2bfea3f527a6fd51d93f16
Diffstat (limited to 'TestMediaApp/src')
4 files changed, 39 insertions, 0 deletions
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java index a51e623..9cf1e7c 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java @@ -15,6 +15,9 @@ */ package com.android.car.media.testmediaapp; +import static com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType.LEAF_CHILDREN; +import static com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType.QUEUE_ONLY; + import android.content.Context; import android.media.AudioManager; import android.os.Bundle; @@ -31,6 +34,7 @@ import com.android.car.media.testmediaapp.loader.TmaLoader; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType; import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay; import com.android.car.media.testmediaapp.prefs.TmaPrefs; +import com.android.internal.util.Preconditions; import java.util.ArrayList; import java.util.List; @@ -128,6 +132,17 @@ public class TmaBrowser extends MediaBrowserServiceCompat { public void onLoadChildren(@NonNull String parentId, @NonNull Result<List<MediaItem>> result) { mLastLoadedNodeId = parentId; getMediaItemsWithDelay(parentId, result, null); + + if (QUEUE_ONLY.equals(mPrefs.mRootNodeType.getValue()) && ROOT_ID.equals(parentId)) { + TmaMediaItem queue = mLibrary.getRoot(LEAF_CHILDREN); + Preconditions.checkNotNull(queue); + mSession.setQueue(queue.buildQueue()); + + TmaMediaItem firstItem = queue.getPlayableByIndex(0); + if (firstItem != null) { + mPlayer.onPrepareFromMediaId(firstItem.getMediaId(), null); + } + } } @Override diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java index eb77019..27b8a7a 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaLibrary.java @@ -48,6 +48,7 @@ class TmaLibrary { mLoader = loader; mRootAssetPaths.put(TmaBrowseNodeType.NULL, null); mRootAssetPaths.put(TmaBrowseNodeType.EMPTY, "media_items/empty.json"); + mRootAssetPaths.put(TmaBrowseNodeType.QUEUE_ONLY, "media_items/empty.json"); mRootAssetPaths.put(TmaBrowseNodeType.NODE_CHILDREN, "media_items/only_nodes.json"); mRootAssetPaths.put(TmaBrowseNodeType.LEAF_CHILDREN, "media_items/simple_leaves.json"); mRootAssetPaths.put(TmaBrowseNodeType.MIXED_CHILDREN, "media_items/mixed.json"); diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java index dc368ea..cd6eee0 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java @@ -145,6 +145,28 @@ public class TmaPlayer extends MediaSessionCompat.Callback { } @Override + public void onPrepareFromMediaId(String mediaId, Bundle extras) { + super.onPrepareFromMediaId(mediaId, extras); + + TmaMediaItem item = mLibrary.getMediaItemById(mediaId); + if (item != null && item.getParent() != null) { + if (mIsPlaying) { + stopPlayback(); + } + mActiveItem = item; + mActiveItem.updateSessionMetadata(mSession); + mSession.setQueue(item.getParent().buildQueue()); + + PlaybackStateCompat.Builder state = new PlaybackStateCompat.Builder() + .setState(PlaybackStateCompat.STATE_PAUSED, mCurrentPositionMs, mPlaybackSpeed) + .setActions(addActions(ACTION_PLAY)); + setActiveItemState(state); + mSession.setPlaybackState(state.build()); + } + } + + + @Override public void onSkipToQueueItem(long id) { super.onSkipToQueueItem(id); if (mActiveItem != null && mActiveItem.getParent() != null) { diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java index ad870b6..3da4209 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaEnumPrefs.java @@ -83,6 +83,7 @@ public class TmaEnumPrefs { public enum TmaBrowseNodeType implements EnumPrefValue { NULL("Null (error)", "null"), EMPTY("Empty", "empty"), + QUEUE_ONLY("Queue only", "queue-only"), NODE_CHILDREN("Only browse-able content", "nodes"), LEAF_CHILDREN("Only playable content (basic working and error cases)", "leaves"), MIXED_CHILDREN("Mixed content (apps are not supposed to do that)", "mixed"); |