diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-12-14 02:11:15 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-12-14 02:11:15 +0000 |
commit | 48e8bfbaa90007f1353657a6b7c313eb72a80f63 (patch) | |
tree | 18dfa28936acde79019be9360c8d0f6c007226ce | |
parent | 1748d119ea80c9a86a3b75a3442fe4f4016e4b50 (diff) | |
parent | 80342195da90a2322123ef5cb215607b6c062c31 (diff) | |
download | tests-android-10.0.0_r45.tar.gz |
Snap for 6072863 from 80342195da90a2322123ef5cb215607b6c062c31 to qt-d4-releaseandroid-10.0.0_r45android-10.0.0_r44android-10.0.0_r43android-10.0.0_r42android10-d4-s1-releaseandroid10-d4-release
Change-Id: Icb09984fb597520b5d1613644149f80312b0e660
-rw-r--r-- | TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java | 43 |
1 files changed, 34 insertions, 9 deletions
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); + } + } } |