DO NOT MERGE - Merge pie-platform-release (PPRL.190705.004) into master

Bug: 136196576
Change-Id: I0b0162857a7b81f93c24a28a2e636bc19a20d3b1
diff --git a/content/ShareActionProvider/Application/src/main/assets/photo_1.jpg b/content/ShareActionProvider/Application/src/main/assets/photo_1.jpg
index cd365c7..73ff1d7 100644
--- a/content/ShareActionProvider/Application/src/main/assets/photo_1.jpg
+++ b/content/ShareActionProvider/Application/src/main/assets/photo_1.jpg
Binary files differ
diff --git a/content/ShareActionProvider/Application/src/main/assets/photo_2.jpg b/content/ShareActionProvider/Application/src/main/assets/photo_2.jpg
index f088c11..9859532 100644
--- a/content/ShareActionProvider/Application/src/main/assets/photo_2.jpg
+++ b/content/ShareActionProvider/Application/src/main/assets/photo_2.jpg
Binary files differ
diff --git a/content/ShareActionProvider/Application/src/main/assets/photo_3.jpg b/content/ShareActionProvider/Application/src/main/assets/photo_3.jpg
index d4cff6a..cb6d0c2 100644
--- a/content/ShareActionProvider/Application/src/main/assets/photo_3.jpg
+++ b/content/ShareActionProvider/Application/src/main/assets/photo_3.jpg
Binary files differ
diff --git a/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/MusicService.java b/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/MusicService.java
index df4b736..1ac0243 100644
--- a/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/MusicService.java
+++ b/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/MusicService.java
@@ -18,6 +18,7 @@
 
 import android.app.Notification;
 import android.content.Intent;
+import android.net.Uri;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.v4.content.ContextCompat;
@@ -50,6 +51,8 @@
     public void onCreate() {
         super.onCreate();
 
+        MusicLibrary.createAllMedia(this);
+
         // Create a new MediaSession.
         mSession = new MediaSessionCompat(this, "MusicService");
         mCallback = new MediaSessionCallback();
@@ -94,6 +97,35 @@
         result.sendResult(MusicLibrary.getMediaItems());
     }
 
+    @Override
+    public void onLoadItem(String itemId, @NonNull Result<MediaBrowserCompat.MediaItem> result) {
+        for (MediaBrowserCompat.MediaItem item : MusicLibrary.getMediaItems()) {
+            if (item.getDescription().getMediaId().equals(itemId)) {
+                result.sendResult(item);
+                return;
+            }
+        }
+        result.sendResult(null);
+    }
+
+    @Override
+    public void onSearch(
+            @NonNull String query,
+            Bundle extras,
+            @NonNull Result<List<MediaBrowserCompat.MediaItem>> result) {
+        final List<MediaBrowserCompat.MediaItem> searchResults = new ArrayList<>();
+        for (MediaBrowserCompat.MediaItem item : MusicLibrary.getMediaItems()) {
+            final MediaDescriptionCompat description = item.getDescription();
+            final String mediaTitle = description.getTitle().toString().toLowerCase();
+            final String mediaArtist = description.getSubtitle().toString().toLowerCase();
+            query = query.toLowerCase();
+            if (mediaTitle.contains(query) || mediaArtist.contains(query)) {
+                searchResults.add(item);
+            }
+        }
+        result.sendResult(searchResults);
+    }
+
     // MediaSession Callback: Transport Controls -> MediaPlayerAdapter
     public class MediaSessionCallback extends MediaSessionCompat.Callback {
         private final List<MediaSessionCompat.QueueItem> mPlaylist = new ArrayList<>();
@@ -146,6 +178,17 @@
         }
 
         @Override
+        public void onPlayFromMediaId(String mediaId, Bundle extras) {
+            mPreparedMedia = MusicLibrary.getMetadata(MusicService.this, mediaId);
+            mPlayback.playFromMedia(mPreparedMedia);
+        }
+
+        @Override
+        public void onPlayFromUri(Uri uri, Bundle extras) {
+            onPlayFromMediaId(uri.toString(), extras);
+        }
+
+        @Override
         public void onPause() {
             mPlayback.pause();
         }
diff --git a/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/contentcatalogs/MusicLibrary.java b/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/contentcatalogs/MusicLibrary.java
index dacb009..6c30579 100644
--- a/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/contentcatalogs/MusicLibrary.java
+++ b/media/MediaBrowserService/Application/src/main/java/com/example/android/mediasession/service/contentcatalogs/MusicLibrary.java
@@ -39,8 +39,9 @@
     private static final HashMap<String, Integer> albumRes = new HashMap<>();
     private static final HashMap<String, String> musicFileName = new HashMap<>();
 
-    static {
+    public static void createAllMedia(Context context) {
         createMediaMetadataCompat(
+                context,
                 "Jazz_In_Paris",
                 "Jazz in Paris",
                 "Media Right Productions",
@@ -52,6 +53,7 @@
                 R.drawable.album_jazz_blues,
                 "album_jazz_blues");
         createMediaMetadataCompat(
+                context,
                 "The_Coldest_Shoulder",
                 "The Coldest Shoulder",
                 "The 126ers",
@@ -121,6 +123,7 @@
     }
 
     private static void createMediaMetadataCompat(
+            Context context,
             String mediaId,
             String title,
             String artist,
@@ -135,10 +138,11 @@
                 mediaId,
                 new MediaMetadataCompat.Builder()
                         .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, mediaId)
+                        .putString(MediaMetadataCompat.METADATA_KEY_MEDIA_URI, mediaId)
                         .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, album)
                         .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
                         .putLong(MediaMetadataCompat.METADATA_KEY_DURATION,
-                                 TimeUnit.MILLISECONDS.convert(duration, durationUnit))
+                                TimeUnit.MILLISECONDS.convert(duration, durationUnit))
                         .putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
                         .putString(
                                 MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
@@ -147,6 +151,9 @@
                                 MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON_URI,
                                 getAlbumArtUri(albumArtResName))
                         .putString(MediaMetadataCompat.METADATA_KEY_TITLE, title)
+                        .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART,
+                                BitmapFactory.decodeResource(context.getResources(),
+                                albumArtResId))
                         .build());
         albumRes.put(mediaId, albumArtResId);
         musicFileName.put(mediaId, musicFilename);
diff --git a/renderScript/BasicRenderScript/Application/src/main/res/drawable-nodpi/data.jpg b/renderScript/BasicRenderScript/Application/src/main/res/drawable-nodpi/data.jpg
index 81a87b1..b7a0cbd 100644
--- a/renderScript/BasicRenderScript/Application/src/main/res/drawable-nodpi/data.jpg
+++ b/renderScript/BasicRenderScript/Application/src/main/res/drawable-nodpi/data.jpg
Binary files differ