diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2020-04-28 20:24:19 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2020-04-28 20:24:19 +0000 |
commit | 24b0f498408380aa87b2ea6595854acf9902aa36 (patch) | |
tree | 18dfa28936acde79019be9360c8d0f6c007226ce | |
parent | f5ff55cb9afda0e649fb6dd8b0afe67e4d667313 (diff) | |
parent | 80342195da90a2322123ef5cb215607b6c062c31 (diff) | |
download | tests-android12-mainline-tzdata-release.tar.gz |
Snap for 6439596 from 80342195da90a2322123ef5cb215607b6c062c31 to qt-aml-tzdata-releaseq_tzdata_aml_297100400q_tzdata_aml_297100300q_tzdata_aml_297100000q_tzdata_aml_296200000q_tzdata_aml_295600118q_tzdata_aml_295600110q_tzdata_aml_295500002q_tzdata_aml_295500001q_tzdata_aml_294400310android-mainline-12.0.0_r54android-mainline-12.0.0_r111android-mainline-10.0.0_r13android-mainline-10.0.0_r12android-mainline-10.0.0_r11q_tzdata_aml_297100000android12-mainline-tzdata-releaseandroid10-mainline-tzdata-releaseandroid10-android13-mainline-tzdata-release
Change-Id: I3df9f0b23b3bde9d47e66bbe2699691872aee626
7 files changed, 55 insertions, 14 deletions
diff --git a/TestMediaApp/assets/media_items/advanced.json b/TestMediaApp/assets/media_items/advanced.json index a6befa3..45a18ef 100644 --- a/TestMediaApp/assets/media_items/advanced.json +++ b/TestMediaApp/assets/media_items/advanced.json @@ -39,7 +39,7 @@ }, { "FLAGS": "browsable", - "PLAYABLE_HINT": "GRID", + "BROWSABLE_HINT": "GRID_CATEGORY", "METADATA": { "MEDIA_ID": "advanced art nodes", "DISPLAY_TITLE": "Album Art" diff --git a/TestMediaApp/assets/media_items/album_art/art_nodes.json b/TestMediaApp/assets/media_items/album_art/art_nodes.json index 974268b..692809f 100644 --- a/TestMediaApp/assets/media_items/album_art/art_nodes.json +++ b/TestMediaApp/assets/media_items/album_art/art_nodes.json @@ -1,6 +1,6 @@ { "FLAGS": "browsable", - "BROWSABLE_HINT": "LIST", + "BROWSABLE_HINT": "GRID_CATEGORY", "METADATA": { "MEDIA_ID": "album_art/art_nodes", diff --git a/TestMediaApp/assets/media_items/mixed.json b/TestMediaApp/assets/media_items/mixed.json index 7e04e85..34da9c9 100644 --- a/TestMediaApp/assets/media_items/mixed.json +++ b/TestMediaApp/assets/media_items/mixed.json @@ -1,7 +1,7 @@ { "FLAGS": "browsable", "PLAYABLE_HINT": "GRID", - "BROWSABLE_HINT": "LIST", + "BROWSABLE_HINT": "LIST_CATEGORY", "METADATA": { "MEDIA_ID": "mixed", diff --git a/TestMediaApp/assets/media_items/only_nodes.json b/TestMediaApp/assets/media_items/only_nodes.json index a020abd..26f998e 100644 --- a/TestMediaApp/assets/media_items/only_nodes.json +++ b/TestMediaApp/assets/media_items/only_nodes.json @@ -32,7 +32,7 @@ { "FLAGS": "browsable", "PLAYABLE_HINT": "GRID", - "BROWSABLE_HINT": "LIST", + "BROWSABLE_HINT": "LIST_CATEGORY", "METADATA": { "MEDIA_ID": "only_nodes rabbit hole", "DISPLAY_TITLE": "Rabbit hole 2" diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/MediaKeys.java b/TestMediaApp/src/com/android/car/media/testmediaapp/MediaKeys.java index 9c58483..9fba1a8 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/MediaKeys.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/MediaKeys.java @@ -65,4 +65,18 @@ public class MediaKeys { * hints the corresponding items should be presented as grids. */ static final int CONTENT_STYLE_GRID_ITEM_HINT_VALUE = 2; + + /** + * Value for {@link #CONTENT_STYLE_BROWSABLE_HINT} that hints the corresponding items should be + * presented as a "category" list, where media items are browsable and represented by a + * meaningful icon. + */ + public static final int CONTENT_STYLE_CATEGORY_LIST_ITEM_HINT_VALUE = 3; + + /** + * Value for {@link #CONTENT_STYLE_BROWSABLE_HINT} that hints the corresponding items should be + * presented as a "category" grid, where media items are browsable and represented by a + * meaningful icon. + */ + public static final int CONTENT_STYLE_CATEGORY_GRID_ITEM_HINT_VALUE = 4; } diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java index 079ab3b..7a62137 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java @@ -39,6 +39,8 @@ import com.android.car.media.testmediaapp.prefs.TmaPrefs; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; /** @@ -52,6 +54,7 @@ import java.util.List; public class TmaBrowser extends MediaBrowserServiceCompat { private static final String TAG = "TmaBrowser"; + private static final int MAX_SEARCH_DEPTH = 4; private static final String MEDIA_SESSION_TAG = "TEST_MEDIA_SESSION"; private static final String ROOT_ID = "_ROOT_ID_"; private static final String SEARCH_SUPPORTED = "android.media.browse.SEARCH_SUPPORTED"; @@ -68,7 +71,6 @@ public class TmaBrowser extends MediaBrowserServiceCompat { private TmaPlayer mPlayer; private BrowserRoot mRoot; - private String mLastLoadedNodeId; @Override public void onCreate() { @@ -163,7 +165,6 @@ public class TmaBrowser extends MediaBrowserServiceCompat { @Override 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)) { @@ -176,8 +177,9 @@ public class TmaBrowser extends MediaBrowserServiceCompat { } @Override - public void onSearch(final String query, final Bundle extras, Result<List<MediaItem>> result) { - getMediaItemsWithDelay(mLastLoadedNodeId, result, query); + public void onSearch(@NonNull String query, Bundle extras, + @NonNull Result<List<MediaItem>> result) { + getMediaItemsWithDelay(ROOT_ID, result, query); } private void getMediaItemsWithDelay(@NonNull String parentId, @@ -196,14 +198,15 @@ public class TmaBrowser extends MediaBrowserServiceCompat { if (node == null) { result.sendResult(null); + } else if (filter != null) { + List<MediaItem> hits = new ArrayList<>(50); + Pattern pat = Pattern.compile(Pattern.quote(filter), Pattern.CASE_INSENSITIVE); + addSearchResults(node, pat.matcher(""), hits, MAX_SEARCH_DEPTH); + result.sendResult(hits); } else { List<MediaItem> items = new ArrayList<>(node.mChildren.size()); for (TmaMediaItem child : node.mChildren) { - MediaItem item = child.toMediaItem(); - CharSequence title = item.getDescription().getTitle(); - if (filter == null || (title != null && title.toString().contains(filter))) { - items.add(item); - } + items.add(child.toMediaItem()); } result.sendResult(items); } @@ -215,4 +218,26 @@ public class TmaBrowser extends MediaBrowserServiceCompat { mHandler.postDelayed(task, delay.mReplyDelayMs); } } + + private void addSearchResults(@Nullable TmaMediaItem node, Matcher matcher, + List<MediaItem> hits, int currentDepth) { + if (node == null || currentDepth <= 0) { + return; + } + + for (TmaMediaItem child : node.mChildren) { + MediaItem item = child.toMediaItem(); + CharSequence title = item.getDescription().getTitle(); + if (title != null) { + matcher.reset(title); + if (matcher.find()) { + hits.add(item); + } + } + + // Ask the library to load the grand children + child = mLibrary.getMediaItemById(child.getMediaId()); + addSearchResults(child, matcher, hits, currentDepth - 1); + } + } } diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java index f79e273..af1b2e3 100644 --- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java +++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java @@ -42,7 +42,9 @@ public class TmaMediaItem { public enum ContentStyle { NONE (0), LIST (MediaKeys.CONTENT_STYLE_LIST_ITEM_HINT_VALUE), - GRID (MediaKeys.CONTENT_STYLE_GRID_ITEM_HINT_VALUE); + GRID (MediaKeys.CONTENT_STYLE_GRID_ITEM_HINT_VALUE), + LIST_CATEGORY(MediaKeys.CONTENT_STYLE_CATEGORY_LIST_ITEM_HINT_VALUE), + GRID_CATEGORY(MediaKeys.CONTENT_STYLE_CATEGORY_GRID_ITEM_HINT_VALUE); final int mBundleValue; ContentStyle(int value) { mBundleValue = value; |