aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2021-06-09 20:52:26 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-06-09 20:52:26 +0000
commitafe26c1274d45c9af73d6a965b28100d9593e3ca (patch)
tree4b097070a4f7f3eafb2b260435589dfb00a052e1
parentab49282dabd2c2866a005ff379f0beb4ac2d4c97 (diff)
parentb6d7bf64a31bd4dfb23e4ab08000722cf7d2fcfc (diff)
downloadtests-android11-gsi.tar.gz
Snap for 7316203 from 33e2df4fc15c6fa805f7b754213068a3d899b593 to rvc-platform-release am: b6d7bf64a3android11-gsi
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Car/tests/+/14427430 Change-Id: If645b08084f539fe05885367df1968333d774def
-rw-r--r--RotaryPlayground/AndroidManifest.xml12
-rw-r--r--RotaryPlayground/res/layout/custom_focus_areas_fragment.xml8
-rw-r--r--TestMediaApp/assets/media_items/GenerateSongsJson.java68
-rw-r--r--TestMediaApp/assets/media_items/advanced.json18
-rw-r--r--TestMediaApp/assets/media_items/hundreds_songs.json1611
-rw-r--r--TestMediaApp/assets/media_items/toggles.json66
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java33
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java6
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java27
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java23
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java8
11 files changed, 1845 insertions, 35 deletions
diff --git a/RotaryPlayground/AndroidManifest.xml b/RotaryPlayground/AndroidManifest.xml
index 4aac33f..be6d847 100644
--- a/RotaryPlayground/AndroidManifest.xml
+++ b/RotaryPlayground/AndroidManifest.xml
@@ -23,11 +23,21 @@
<activity
android:name=".RotaryActivity"
android:label="@string/app_name"
- android:allowEmbedded="true">
+ android:allowEmbedded="true"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
+ <!-- Define app-specific custom off-screen nudge up action:
+ GLOBAL_ACTION_NOTIFICATIONS -->
+ <meta-data android:name="nudge.up.globalAction" android:value="4"/>
+ <!-- Define app-specific custom off-screen nudge left action: KEYCODE_BACK -->
+ <meta-data android:name="nudge.left.keyCode" android:value="4"/>
+ <!-- Define app-specific custom off-screen nudge down action: launch Settings -->
+ <meta-data
+ android:name="nudge.down.intent"
+ android:value="intent:#Intent;action=android.settings.SETTINGS;category=android.intent.category.DEFAULT;end"/>
</activity>
</application>
</manifest> \ No newline at end of file
diff --git a/RotaryPlayground/res/layout/custom_focus_areas_fragment.xml b/RotaryPlayground/res/layout/custom_focus_areas_fragment.xml
index ea6a0b0..2750aab 100644
--- a/RotaryPlayground/res/layout/custom_focus_areas_fragment.xml
+++ b/RotaryPlayground/res/layout/custom_focus_areas_fragment.xml
@@ -34,7 +34,12 @@
android:layout_margin="@dimen/margin"
android:gravity="center"
android:orientation="vertical"
- android:background="@color/card_background_color">
+ android:background="@color/card_background_color"
+ app:wrapAround="true">
+ <TextView
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Wrap-around enabled"/>
<Button
android:layout_width="wrap_content"
android:layout_height="@dimen/button_height"
@@ -47,7 +52,6 @@
android:focusedByDefault="true"
android:text="android:focusedByDefault"/>
<Button
- android:id="@+id/default_focus1"
android:layout_width="wrap_content"
android:layout_height="@dimen/button_height"
android:paddingHorizontal="@dimen/padding"
diff --git a/TestMediaApp/assets/media_items/GenerateSongsJson.java b/TestMediaApp/assets/media_items/GenerateSongsJson.java
new file mode 100644
index 0000000..187af60
--- /dev/null
+++ b/TestMediaApp/assets/media_items/GenerateSongsJson.java
@@ -0,0 +1,68 @@
+import java.io.IOException;
+import java.util.Random;
+import java.io.FileOutputStream;
+
+/*
+ * This class will generate a json file containing 200 songs by default.
+ * Defaults:
+ * 1.) No. of songs - 200
+ * 2.) Seed - 200
+ * 3.) File name - "hundres_songs.json"
+ *
+ * If you want to change any of the default values pass them as arguments in the following:
+ * arg #1 No. of songs (Integer)
+ * arg #2 Seed (Integer)
+ * arg #3 File name (String) e.g <some-name>.json
+ */
+
+public class GenerateSongsJson {
+
+ private static final StringBuilder sb = new StringBuilder();
+
+ public static void main(String []args) throws IOException {
+ int numOfSongs = 200;
+ int seed = 200;
+ String fileName = "hundres_songs.json";
+
+ if (args.length != 0) {
+ try {
+ numOfSongs = Integer.parseInt(args[0]);
+ seed = Integer.parseInt(args[1]);
+ fileName = args[2];
+ } catch (NumberFormatException e) {
+ System.out.println("Please enter the args as mentioned in the comment above.");
+ throw (e);
+ }
+ }
+
+ Random randomNum = new Random(seed);
+ FileOutputStream outputStream = new FileOutputStream(fileName);
+
+ sb.append("{ \n");
+ sb.append(" \"FLAGS\": \"browsable\", \n\n");
+ sb.append(" \"METADATA\": { \n");
+ sb.append(" \"MEDIA_ID\": \"hundreds_songs\", \n");
+ sb.append(" \"DISPLAY_TITLE\": \"More songs\" \n");
+ sb.append(" },\n\n");
+ sb.append(" \"CHILDREN\": [ \n");
+
+ for (int i = 1; i <= numOfSongs; i++) {
+ int num1 = randomNum.nextInt(10000);
+ int num2 = num1/1000;
+ sb.append(" { \n ");
+ sb.append(" \"FLAGS\": \"playable\",\n");
+ sb.append(" \"METADATA\": { \n");
+ sb.append(" \"MEDIA_ID\": \"hundreds_songs normal " + num2 + "s song" + i +"\",\n");
+ sb.append(" \"DISPLAY_TITLE\": \"Normal " + num2 + "s song" + i + "\",\n");
+ sb.append(" \"DURATION\": " + num1 + "\n");
+ sb.append(" } \n");
+ sb.append(" },\n");
+ }
+ sb.deleteCharAt(sb.length() - 2);
+ sb.append(" ]\n");
+ sb.append("}");
+ byte[] strToBytes = sb.toString().getBytes();
+ outputStream.write(strToBytes);
+ outputStream.close();
+ }
+}
diff --git a/TestMediaApp/assets/media_items/advanced.json b/TestMediaApp/assets/media_items/advanced.json
index 9266a1c..e12a92c 100644
--- a/TestMediaApp/assets/media_items/advanced.json
+++ b/TestMediaApp/assets/media_items/advanced.json
@@ -39,6 +39,15 @@
},
{
"FLAGS": "browsable",
+ "PLAYABLE_HINT": "LIST",
+ "METADATA": {
+ "MEDIA_ID": "advanced toggles",
+ "DISPLAY_TITLE": "Node toggles (hide/show specific nodes)"
+ },
+ "INCLUDE":"media_items/toggles.json"
+ },
+ {
+ "FLAGS": "browsable",
"BROWSABLE_HINT": "GRID_CATEGORY",
"METADATA": {
"MEDIA_ID": "advanced art nodes",
@@ -50,6 +59,15 @@
"FLAGS": "browsable",
"PLAYABLE_HINT": "LIST",
"METADATA": {
+ "MEDIA_ID": "advanced more songs",
+ "DISPLAY_TITLE": "More songs"
+ },
+ "INCLUDE":"media_items/hundreds_songs.json"
+ },
+ {
+ "FLAGS": "browsable",
+ "PLAYABLE_HINT": "LIST",
+ "METADATA": {
"MEDIA_ID": "advanced exceptions",
"DISPLAY_TITLE": "Exceptions"
},
diff --git a/TestMediaApp/assets/media_items/hundreds_songs.json b/TestMediaApp/assets/media_items/hundreds_songs.json
new file mode 100644
index 0000000..2db0ffd
--- /dev/null
+++ b/TestMediaApp/assets/media_items/hundreds_songs.json
@@ -0,0 +1,1611 @@
+{
+ "FLAGS": "browsable",
+
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs",
+ "DISPLAY_TITLE": "More songs"
+ },
+
+ "CHILDREN": [
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song1",
+ "DISPLAY_TITLE": "Normal 4s song1",
+ "DURATION": 4329
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song2",
+ "DISPLAY_TITLE": "Normal 2s song2",
+ "DURATION": 2541
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song3",
+ "DISPLAY_TITLE": "Normal 0s song3",
+ "DURATION": 666
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song4",
+ "DISPLAY_TITLE": "Normal 9s song4",
+ "DURATION": 9833
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song5",
+ "DISPLAY_TITLE": "Normal 4s song5",
+ "DURATION": 4572
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song6",
+ "DISPLAY_TITLE": "Normal 0s song6",
+ "DURATION": 667
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song7",
+ "DISPLAY_TITLE": "Normal 3s song7",
+ "DURATION": 3914
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song8",
+ "DISPLAY_TITLE": "Normal 9s song8",
+ "DURATION": 9519
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song9",
+ "DISPLAY_TITLE": "Normal 4s song9",
+ "DURATION": 4778
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song10",
+ "DISPLAY_TITLE": "Normal 0s song10",
+ "DURATION": 242
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song11",
+ "DISPLAY_TITLE": "Normal 7s song11",
+ "DURATION": 7883
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song12",
+ "DISPLAY_TITLE": "Normal 9s song12",
+ "DURATION": 9884
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song13",
+ "DISPLAY_TITLE": "Normal 8s song13",
+ "DURATION": 8612
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song14",
+ "DISPLAY_TITLE": "Normal 7s song14",
+ "DURATION": 7395
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song15",
+ "DISPLAY_TITLE": "Normal 0s song15",
+ "DURATION": 19
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song16",
+ "DISPLAY_TITLE": "Normal 7s song16",
+ "DURATION": 7452
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song17",
+ "DISPLAY_TITLE": "Normal 2s song17",
+ "DURATION": 2562
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song18",
+ "DISPLAY_TITLE": "Normal 0s song18",
+ "DURATION": 644
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song19",
+ "DISPLAY_TITLE": "Normal 7s song19",
+ "DURATION": 7695
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song20",
+ "DISPLAY_TITLE": "Normal 0s song20",
+ "DURATION": 328
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song21",
+ "DISPLAY_TITLE": "Normal 5s song21",
+ "DURATION": 5640
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song22",
+ "DISPLAY_TITLE": "Normal 4s song22",
+ "DURATION": 4044
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song23",
+ "DISPLAY_TITLE": "Normal 3s song23",
+ "DURATION": 3905
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song24",
+ "DISPLAY_TITLE": "Normal 7s song24",
+ "DURATION": 7649
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song25",
+ "DISPLAY_TITLE": "Normal 8s song25",
+ "DURATION": 8259
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song26",
+ "DISPLAY_TITLE": "Normal 2s song26",
+ "DURATION": 2811
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song27",
+ "DISPLAY_TITLE": "Normal 5s song27",
+ "DURATION": 5156
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song28",
+ "DISPLAY_TITLE": "Normal 9s song28",
+ "DURATION": 9437
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song29",
+ "DISPLAY_TITLE": "Normal 3s song29",
+ "DURATION": 3395
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song30",
+ "DISPLAY_TITLE": "Normal 9s song30",
+ "DURATION": 9268
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song31",
+ "DISPLAY_TITLE": "Normal 5s song31",
+ "DURATION": 5904
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song32",
+ "DISPLAY_TITLE": "Normal 2s song32",
+ "DURATION": 2763
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song33",
+ "DISPLAY_TITLE": "Normal 6s song33",
+ "DURATION": 6387
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song34",
+ "DISPLAY_TITLE": "Normal 1s song34",
+ "DURATION": 1960
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song35",
+ "DISPLAY_TITLE": "Normal 0s song35",
+ "DURATION": 89
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song36",
+ "DISPLAY_TITLE": "Normal 1s song36",
+ "DURATION": 1156
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song37",
+ "DISPLAY_TITLE": "Normal 5s song37",
+ "DURATION": 5235
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song38",
+ "DISPLAY_TITLE": "Normal 3s song38",
+ "DURATION": 3983
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song39",
+ "DISPLAY_TITLE": "Normal 8s song39",
+ "DURATION": 8914
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song40",
+ "DISPLAY_TITLE": "Normal 9s song40",
+ "DURATION": 9568
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song41",
+ "DISPLAY_TITLE": "Normal 5s song41",
+ "DURATION": 5463
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song42",
+ "DISPLAY_TITLE": "Normal 1s song42",
+ "DURATION": 1301
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song43",
+ "DISPLAY_TITLE": "Normal 0s song43",
+ "DURATION": 575
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song44",
+ "DISPLAY_TITLE": "Normal 6s song44",
+ "DURATION": 6578
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song45",
+ "DISPLAY_TITLE": "Normal 2s song45",
+ "DURATION": 2312
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song46",
+ "DISPLAY_TITLE": "Normal 8s song46",
+ "DURATION": 8032
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song47",
+ "DISPLAY_TITLE": "Normal 8s song47",
+ "DURATION": 8120
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song48",
+ "DISPLAY_TITLE": "Normal 5s song48",
+ "DURATION": 5314
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song49",
+ "DISPLAY_TITLE": "Normal 3s song49",
+ "DURATION": 3784
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song50",
+ "DISPLAY_TITLE": "Normal 7s song50",
+ "DURATION": 7785
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song51",
+ "DISPLAY_TITLE": "Normal 5s song51",
+ "DURATION": 5641
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song52",
+ "DISPLAY_TITLE": "Normal 0s song52",
+ "DURATION": 165
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song53",
+ "DISPLAY_TITLE": "Normal 2s song53",
+ "DURATION": 2963
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song54",
+ "DISPLAY_TITLE": "Normal 7s song54",
+ "DURATION": 7742
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song55",
+ "DISPLAY_TITLE": "Normal 5s song55",
+ "DURATION": 5782
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song56",
+ "DISPLAY_TITLE": "Normal 6s song56",
+ "DURATION": 6154
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song57",
+ "DISPLAY_TITLE": "Normal 8s song57",
+ "DURATION": 8849
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song58",
+ "DISPLAY_TITLE": "Normal 8s song58",
+ "DURATION": 8099
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song59",
+ "DISPLAY_TITLE": "Normal 2s song59",
+ "DURATION": 2476
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song60",
+ "DISPLAY_TITLE": "Normal 6s song60",
+ "DURATION": 6323
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song61",
+ "DISPLAY_TITLE": "Normal 1s song61",
+ "DURATION": 1511
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song62",
+ "DISPLAY_TITLE": "Normal 8s song62",
+ "DURATION": 8577
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song63",
+ "DISPLAY_TITLE": "Normal 9s song63",
+ "DURATION": 9315
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song64",
+ "DISPLAY_TITLE": "Normal 4s song64",
+ "DURATION": 4846
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song65",
+ "DISPLAY_TITLE": "Normal 8s song65",
+ "DURATION": 8893
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song66",
+ "DISPLAY_TITLE": "Normal 7s song66",
+ "DURATION": 7404
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song67",
+ "DISPLAY_TITLE": "Normal 7s song67",
+ "DURATION": 7535
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song68",
+ "DISPLAY_TITLE": "Normal 0s song68",
+ "DURATION": 687
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song69",
+ "DISPLAY_TITLE": "Normal 7s song69",
+ "DURATION": 7563
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song70",
+ "DISPLAY_TITLE": "Normal 7s song70",
+ "DURATION": 7956
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song71",
+ "DISPLAY_TITLE": "Normal 3s song71",
+ "DURATION": 3030
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song72",
+ "DISPLAY_TITLE": "Normal 8s song72",
+ "DURATION": 8573
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song73",
+ "DISPLAY_TITLE": "Normal 2s song73",
+ "DURATION": 2621
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song74",
+ "DISPLAY_TITLE": "Normal 1s song74",
+ "DURATION": 1416
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song75",
+ "DISPLAY_TITLE": "Normal 8s song75",
+ "DURATION": 8252
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song76",
+ "DISPLAY_TITLE": "Normal 4s song76",
+ "DURATION": 4182
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song77",
+ "DISPLAY_TITLE": "Normal 9s song77",
+ "DURATION": 9158
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song78",
+ "DISPLAY_TITLE": "Normal 4s song78",
+ "DURATION": 4209
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song79",
+ "DISPLAY_TITLE": "Normal 2s song79",
+ "DURATION": 2265
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song80",
+ "DISPLAY_TITLE": "Normal 9s song80",
+ "DURATION": 9487
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song81",
+ "DISPLAY_TITLE": "Normal 8s song81",
+ "DURATION": 8640
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song82",
+ "DISPLAY_TITLE": "Normal 3s song82",
+ "DURATION": 3683
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song83",
+ "DISPLAY_TITLE": "Normal 8s song83",
+ "DURATION": 8813
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song84",
+ "DISPLAY_TITLE": "Normal 7s song84",
+ "DURATION": 7851
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song85",
+ "DISPLAY_TITLE": "Normal 4s song85",
+ "DURATION": 4161
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song86",
+ "DISPLAY_TITLE": "Normal 2s song86",
+ "DURATION": 2731
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song87",
+ "DISPLAY_TITLE": "Normal 9s song87",
+ "DURATION": 9546
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song88",
+ "DISPLAY_TITLE": "Normal 3s song88",
+ "DURATION": 3591
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song89",
+ "DISPLAY_TITLE": "Normal 7s song89",
+ "DURATION": 7513
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song90",
+ "DISPLAY_TITLE": "Normal 2s song90",
+ "DURATION": 2100
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song91",
+ "DISPLAY_TITLE": "Normal 9s song91",
+ "DURATION": 9359
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song92",
+ "DISPLAY_TITLE": "Normal 1s song92",
+ "DURATION": 1024
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song93",
+ "DISPLAY_TITLE": "Normal 1s song93",
+ "DURATION": 1640
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song94",
+ "DISPLAY_TITLE": "Normal 2s song94",
+ "DURATION": 2301
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song95",
+ "DISPLAY_TITLE": "Normal 2s song95",
+ "DURATION": 2965
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song96",
+ "DISPLAY_TITLE": "Normal 6s song96",
+ "DURATION": 6322
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song97",
+ "DISPLAY_TITLE": "Normal 7s song97",
+ "DURATION": 7693
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song98",
+ "DISPLAY_TITLE": "Normal 5s song98",
+ "DURATION": 5999
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song99",
+ "DISPLAY_TITLE": "Normal 2s song99",
+ "DURATION": 2305
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song100",
+ "DISPLAY_TITLE": "Normal 5s song100",
+ "DURATION": 5215
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song101",
+ "DISPLAY_TITLE": "Normal 5s song101",
+ "DURATION": 5672
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song102",
+ "DISPLAY_TITLE": "Normal 3s song102",
+ "DURATION": 3869
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song103",
+ "DISPLAY_TITLE": "Normal 7s song103",
+ "DURATION": 7274
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song104",
+ "DISPLAY_TITLE": "Normal 7s song104",
+ "DURATION": 7512
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song105",
+ "DISPLAY_TITLE": "Normal 9s song105",
+ "DURATION": 9697
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song106",
+ "DISPLAY_TITLE": "Normal 9s song106",
+ "DURATION": 9357
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song107",
+ "DISPLAY_TITLE": "Normal 9s song107",
+ "DURATION": 9589
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song108",
+ "DISPLAY_TITLE": "Normal 0s song108",
+ "DURATION": 794
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song109",
+ "DISPLAY_TITLE": "Normal 3s song109",
+ "DURATION": 3522
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song110",
+ "DISPLAY_TITLE": "Normal 5s song110",
+ "DURATION": 5709
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song111",
+ "DISPLAY_TITLE": "Normal 9s song111",
+ "DURATION": 9644
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song112",
+ "DISPLAY_TITLE": "Normal 2s song112",
+ "DURATION": 2936
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song113",
+ "DISPLAY_TITLE": "Normal 2s song113",
+ "DURATION": 2703
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song114",
+ "DISPLAY_TITLE": "Normal 3s song114",
+ "DURATION": 3539
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song115",
+ "DISPLAY_TITLE": "Normal 1s song115",
+ "DURATION": 1182
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song116",
+ "DISPLAY_TITLE": "Normal 3s song116",
+ "DURATION": 3520
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song117",
+ "DISPLAY_TITLE": "Normal 6s song117",
+ "DURATION": 6598
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song118",
+ "DISPLAY_TITLE": "Normal 3s song118",
+ "DURATION": 3014
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song119",
+ "DISPLAY_TITLE": "Normal 4s song119",
+ "DURATION": 4976
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song120",
+ "DISPLAY_TITLE": "Normal 1s song120",
+ "DURATION": 1101
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song121",
+ "DISPLAY_TITLE": "Normal 2s song121",
+ "DURATION": 2545
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song122",
+ "DISPLAY_TITLE": "Normal 4s song122",
+ "DURATION": 4163
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song123",
+ "DISPLAY_TITLE": "Normal 9s song123",
+ "DURATION": 9648
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song124",
+ "DISPLAY_TITLE": "Normal 1s song124",
+ "DURATION": 1065
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song125",
+ "DISPLAY_TITLE": "Normal 0s song125",
+ "DURATION": 969
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song126",
+ "DISPLAY_TITLE": "Normal 4s song126",
+ "DURATION": 4604
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song127",
+ "DISPLAY_TITLE": "Normal 5s song127",
+ "DURATION": 5114
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song128",
+ "DISPLAY_TITLE": "Normal 4s song128",
+ "DURATION": 4957
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song129",
+ "DISPLAY_TITLE": "Normal 4s song129",
+ "DURATION": 4596
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song130",
+ "DISPLAY_TITLE": "Normal 2s song130",
+ "DURATION": 2915
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song131",
+ "DISPLAY_TITLE": "Normal 8s song131",
+ "DURATION": 8467
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song132",
+ "DISPLAY_TITLE": "Normal 2s song132",
+ "DURATION": 2614
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song133",
+ "DISPLAY_TITLE": "Normal 4s song133",
+ "DURATION": 4943
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song134",
+ "DISPLAY_TITLE": "Normal 8s song134",
+ "DURATION": 8175
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song135",
+ "DISPLAY_TITLE": "Normal 2s song135",
+ "DURATION": 2499
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song136",
+ "DISPLAY_TITLE": "Normal 1s song136",
+ "DURATION": 1493
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song137",
+ "DISPLAY_TITLE": "Normal 9s song137",
+ "DURATION": 9239
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song138",
+ "DISPLAY_TITLE": "Normal 6s song138",
+ "DURATION": 6921
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song139",
+ "DISPLAY_TITLE": "Normal 8s song139",
+ "DURATION": 8720
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song140",
+ "DISPLAY_TITLE": "Normal 9s song140",
+ "DURATION": 9252
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song141",
+ "DISPLAY_TITLE": "Normal 9s song141",
+ "DURATION": 9328
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song142",
+ "DISPLAY_TITLE": "Normal 6s song142",
+ "DURATION": 6678
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song143",
+ "DISPLAY_TITLE": "Normal 0s song143",
+ "DURATION": 437
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song144",
+ "DISPLAY_TITLE": "Normal 7s song144",
+ "DURATION": 7488
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song145",
+ "DISPLAY_TITLE": "Normal 6s song145",
+ "DURATION": 6697
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song146",
+ "DISPLAY_TITLE": "Normal 9s song146",
+ "DURATION": 9552
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song147",
+ "DISPLAY_TITLE": "Normal 4s song147",
+ "DURATION": 4385
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song148",
+ "DISPLAY_TITLE": "Normal 3s song148",
+ "DURATION": 3911
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song149",
+ "DISPLAY_TITLE": "Normal 1s song149",
+ "DURATION": 1623
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song150",
+ "DISPLAY_TITLE": "Normal 6s song150",
+ "DURATION": 6163
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song151",
+ "DISPLAY_TITLE": "Normal 0s song151",
+ "DURATION": 556
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song152",
+ "DISPLAY_TITLE": "Normal 9s song152",
+ "DURATION": 9855
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song153",
+ "DISPLAY_TITLE": "Normal 7s song153",
+ "DURATION": 7837
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song154",
+ "DISPLAY_TITLE": "Normal 4s song154",
+ "DURATION": 4177
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song155",
+ "DISPLAY_TITLE": "Normal 6s song155",
+ "DURATION": 6693
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song156",
+ "DISPLAY_TITLE": "Normal 0s song156",
+ "DURATION": 193
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song157",
+ "DISPLAY_TITLE": "Normal 9s song157",
+ "DURATION": 9005
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song158",
+ "DISPLAY_TITLE": "Normal 1s song158",
+ "DURATION": 1923
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 0s song159",
+ "DISPLAY_TITLE": "Normal 0s song159",
+ "DURATION": 102
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song160",
+ "DISPLAY_TITLE": "Normal 3s song160",
+ "DURATION": 3632
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song161",
+ "DISPLAY_TITLE": "Normal 1s song161",
+ "DURATION": 1305
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song162",
+ "DISPLAY_TITLE": "Normal 5s song162",
+ "DURATION": 5805
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song163",
+ "DISPLAY_TITLE": "Normal 9s song163",
+ "DURATION": 9961
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song164",
+ "DISPLAY_TITLE": "Normal 6s song164",
+ "DURATION": 6154
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song165",
+ "DISPLAY_TITLE": "Normal 3s song165",
+ "DURATION": 3730
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song166",
+ "DISPLAY_TITLE": "Normal 9s song166",
+ "DURATION": 9677
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song167",
+ "DISPLAY_TITLE": "Normal 9s song167",
+ "DURATION": 9972
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song168",
+ "DISPLAY_TITLE": "Normal 6s song168",
+ "DURATION": 6138
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song169",
+ "DISPLAY_TITLE": "Normal 9s song169",
+ "DURATION": 9330
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song170",
+ "DISPLAY_TITLE": "Normal 9s song170",
+ "DURATION": 9360
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song171",
+ "DISPLAY_TITLE": "Normal 1s song171",
+ "DURATION": 1439
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song172",
+ "DISPLAY_TITLE": "Normal 5s song172",
+ "DURATION": 5831
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song173",
+ "DISPLAY_TITLE": "Normal 1s song173",
+ "DURATION": 1572
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song174",
+ "DISPLAY_TITLE": "Normal 8s song174",
+ "DURATION": 8160
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 1s song175",
+ "DISPLAY_TITLE": "Normal 1s song175",
+ "DURATION": 1110
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song176",
+ "DISPLAY_TITLE": "Normal 7s song176",
+ "DURATION": 7916
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song177",
+ "DISPLAY_TITLE": "Normal 5s song177",
+ "DURATION": 5409
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song178",
+ "DISPLAY_TITLE": "Normal 9s song178",
+ "DURATION": 9773
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song179",
+ "DISPLAY_TITLE": "Normal 5s song179",
+ "DURATION": 5530
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 7s song180",
+ "DISPLAY_TITLE": "Normal 7s song180",
+ "DURATION": 7317
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song181",
+ "DISPLAY_TITLE": "Normal 6s song181",
+ "DURATION": 6614
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song182",
+ "DISPLAY_TITLE": "Normal 4s song182",
+ "DURATION": 4503
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song183",
+ "DISPLAY_TITLE": "Normal 9s song183",
+ "DURATION": 9234
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song184",
+ "DISPLAY_TITLE": "Normal 3s song184",
+ "DURATION": 3411
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 3s song185",
+ "DISPLAY_TITLE": "Normal 3s song185",
+ "DURATION": 3040
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 9s song186",
+ "DISPLAY_TITLE": "Normal 9s song186",
+ "DURATION": 9605
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song187",
+ "DISPLAY_TITLE": "Normal 2s song187",
+ "DURATION": 2432
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song188",
+ "DISPLAY_TITLE": "Normal 5s song188",
+ "DURATION": 5484
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song189",
+ "DISPLAY_TITLE": "Normal 2s song189",
+ "DURATION": 2506
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song190",
+ "DISPLAY_TITLE": "Normal 5s song190",
+ "DURATION": 5558
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song191",
+ "DISPLAY_TITLE": "Normal 5s song191",
+ "DURATION": 5374
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song192",
+ "DISPLAY_TITLE": "Normal 6s song192",
+ "DURATION": 6146
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song193",
+ "DISPLAY_TITLE": "Normal 5s song193",
+ "DURATION": 5933
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 5s song194",
+ "DISPLAY_TITLE": "Normal 5s song194",
+ "DURATION": 5250
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song195",
+ "DISPLAY_TITLE": "Normal 6s song195",
+ "DURATION": 6438
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song196",
+ "DISPLAY_TITLE": "Normal 2s song196",
+ "DURATION": 2766
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 2s song197",
+ "DISPLAY_TITLE": "Normal 2s song197",
+ "DURATION": 2966
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 8s song198",
+ "DISPLAY_TITLE": "Normal 8s song198",
+ "DURATION": 8475
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 4s song199",
+ "DISPLAY_TITLE": "Normal 4s song199",
+ "DURATION": 4945
+ }
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "hundreds_songs normal 6s song200",
+ "DISPLAY_TITLE": "Normal 6s song200",
+ "DURATION": 6697
+ }
+ }
+ ]
+}
diff --git a/TestMediaApp/assets/media_items/toggles.json b/TestMediaApp/assets/media_items/toggles.json
new file mode 100644
index 0000000..c12be00
--- /dev/null
+++ b/TestMediaApp/assets/media_items/toggles.json
@@ -0,0 +1,66 @@
+{
+ "FLAGS": "browsable",
+
+ "METADATA": {
+ "MEDIA_ID": "toggles",
+ "DISPLAY_TITLE": "Toggles"
+ },
+
+ "CHILDREN": [
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "toggles Toggle Empty tab",
+ "DISPLAY_TITLE": "Toggle Empty tab on play",
+ "DURATION": 3000000
+ },
+ "EVENTS": [
+ { "STATE": "PLAYING", "TOGGLE_ITEM": "only_nodes empty node 1" }
+ ]
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "toggles Toggle node toggles",
+ "DISPLAY_TITLE": "Toggle Node toggles node on play",
+ "DURATION": 3000000
+ },
+ "EVENTS": [
+ { "STATE": "PLAYING", "TOGGLE_ITEM": "advanced toggles" }
+ ]
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "toggles Toggle Album Art",
+ "DISPLAY_TITLE": "Toggle Album Art on play",
+ "DURATION": 3000000
+ },
+ "EVENTS": [
+ { "STATE": "PLAYING", "TOGGLE_ITEM": "advanced art nodes" }
+ ]
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "toggles Toggle Nature 64",
+ "DISPLAY_TITLE": "Toggle Nature 64 on play",
+ "DURATION": 3000000
+ },
+ "EVENTS": [
+ { "STATE": "PLAYING", "TOGGLE_ITEM": "album_art/art_nodes nature 64" }
+ ]
+ },
+ {
+ "FLAGS": "playable",
+ "METADATA": {
+ "MEDIA_ID": "toggles Toggle Advanced tab",
+ "DISPLAY_TITLE": "Toggle Advanced tab on play",
+ "DURATION": 3000000
+ },
+ "EVENTS": [
+ { "STATE": "PLAYING", "TOGGLE_ITEM": "only_nodes advanced" }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
index 61b3a31..c187448 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
@@ -33,7 +33,6 @@ import androidx.annotation.Nullable;
import androidx.media.MediaBrowserServiceCompat;
import com.android.car.media.testmediaapp.loader.TmaLoader;
-import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs;
import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType;
import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType;
import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay;
@@ -41,6 +40,7 @@ import com.android.car.media.testmediaapp.prefs.TmaPrefs;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -148,7 +148,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
getResources().getString(R.string.no_account),
getResources().getString(R.string.select_account),
TmaMediaEvent.ResolutionIntent.PREFS,
- TmaMediaEvent.Action.NONE, 0, null));
+ TmaMediaEvent.Action.NONE, 0, null, null));
} else {
// TODO don't reset error in all cases...
PlaybackStateCompat.Builder playbackState = new PlaybackStateCompat.Builder();
@@ -193,6 +193,10 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
getMediaItemsWithDelay(ROOT_ID, result, query);
}
+ private TmaMediaItem getRoot() {
+ return mLibrary.getRoot(mPrefs.mRootNodeType.getValue());
+ }
+
private void getMediaItemsWithDelay(@NonNull String parentId,
@NonNull Result<List<MediaItem>> result, @Nullable String filter) {
// TODO: allow per item override of the delay ?
@@ -202,7 +206,7 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
if (TmaAccountType.NONE.equals(mPrefs.mAccountType.getValue())) {
node = null;
} else if (ROOT_ID.equals(parentId)) {
- node = mLibrary.getRoot(mPrefs.mRootNodeType.getValue());
+ node = getRoot();
} else {
node = mLibrary.getMediaItemById(parentId);
}
@@ -224,7 +228,11 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
int selfUpdateDelay = node.getSelfUpdateDelay();
int toShow = (selfUpdateDelay > 0) ? 1 + node.mRevealCounter : childrenCount;
for (int childIndex = 0 ; childIndex < toShow; childIndex++) {
- items.add(children.get(childIndex).toMediaItem());
+ TmaMediaItem child = children.get(childIndex);
+ if (child.mIsHidden) {
+ continue;
+ }
+ items.add(child.toMediaItem());
}
result.sendResult(items);
@@ -250,6 +258,9 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
}
for (TmaMediaItem child : node.getChildren()) {
+ if (child.mIsHidden) {
+ continue;
+ }
MediaItem item = child.toMediaItem();
CharSequence title = item.getDescription().getTitle();
if (title != null) {
@@ -265,6 +276,20 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
}
}
+ void toggleItem(@Nullable TmaMediaItem item) {
+ if (item == null) {
+ return;
+ }
+ item.mIsHidden = !item.mIsHidden;
+ if (item.getParent() != null) {
+ String parentId = item.getParent().getMediaId();
+ if (Objects.equals(parentId, getRoot().getMediaId())) {
+ parentId = ROOT_ID;
+ }
+ notifyChildrenChanged(parentId);
+ }
+ }
+
private class UpdateNodeTask implements Runnable {
private final String mNodeId;
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java
index 491f940..8fe30ef 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaEvent.java
@@ -53,7 +53,7 @@ public class TmaMediaEvent {
public static final TmaMediaEvent INSTANT_PLAYBACK =
new TmaMediaEvent(EventState.PLAYING, StateErrorCode.UNKNOWN_ERROR, null, null,
- ResolutionIntent.NONE, Action.NONE, 0, null);
+ ResolutionIntent.NONE, Action.NONE, 0, null, null);
/** The name of each entry is the value used in the json file. */
public enum EventState {
@@ -120,10 +120,11 @@ public class TmaMediaEvent {
/** How long to wait before sending the event to the app. */
final int mPostDelayMs;
private final String mExceptionClass;
+ final String mMediaItemIdToToggle;
public TmaMediaEvent(EventState state, StateErrorCode errorCode, String errorMessage,
String actionLabel, ResolutionIntent resolutionIntent, Action action, int postDelayMs,
- String exceptionClass) {
+ String exceptionClass, String mediaItemIdToToggle) {
mState = state;
mErrorCode = errorCode;
mErrorMessage = errorMessage;
@@ -132,6 +133,7 @@ public class TmaMediaEvent {
mAction = action;
mPostDelayMs = postDelayMs;
mExceptionClass = exceptionClass;
+ mMediaItemIdToToggle = mediaItemIdToToggle;
}
boolean premiumAccountRequired() {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
index e2cb533..a759eb4 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaMediaItem.java
@@ -78,9 +78,9 @@ public class TmaMediaItem {
/** Internally modifiable list (for includes). */
- private final List<TmaMediaItem> mChildren;
- /** Read only list. */
- private final List<TmaMediaItem> mPlayableChildren;
+ private final List<TmaMediaItem> mChildren = new ArrayList<>();
+ /** Internally modifiable list (for includes). */
+ private final List<TmaMediaItem> mPlayableChildren = new ArrayList<>();
/** Read only list. */
final List<TmaCustomAction> mCustomActions;
/** Read only list. Events triggered when starting the playback. */
@@ -91,6 +91,7 @@ public class TmaMediaItem {
private @Nullable TmaMediaItem mParent;
int mHearts;
int mRevealCounter;
+ boolean mIsHidden = false;
public TmaMediaItem(int flags, ContentStyle playableStyle, ContentStyle browsableStyle,
@@ -103,17 +104,9 @@ public class TmaMediaItem {
mMediaMetadata = metadata;
mSelfUpdateMs = selfUpdateMs;
mCustomActions = Collections.unmodifiableList(customActions);
- mChildren = children;
mMediaEvents = Collections.unmodifiableList(mediaEvents);
mInclude = include;
- List<TmaMediaItem> playableChildren = new ArrayList<>(children.size());
- for (TmaMediaItem child: mChildren) {
- child.setParent(this);
- if ((child.mFlags & FLAG_PLAYABLE) != 0) {
- playableChildren.add(child);
- }
- }
- mPlayableChildren = Collections.unmodifiableList(playableChildren);
+ setChildren(children);
}
private void setParent(@Nullable TmaMediaItem parent) {
@@ -171,6 +164,16 @@ public class TmaMediaItem {
void setChildren(List<TmaMediaItem> children) {
mChildren.clear();
mChildren.addAll(children);
+
+ List<TmaMediaItem> playableChildren = new ArrayList<>(children.size());
+ for (TmaMediaItem child: mChildren) {
+ child.setParent(this);
+ if ((child.mFlags & FLAG_PLAYABLE) != 0) {
+ playableChildren.add(child);
+ }
+ }
+ mPlayableChildren.clear();
+ mPlayableChildren.addAll(playableChildren);
}
void updateSessionMetadata(MediaSessionCompat session) {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java
index 65cc787..43cf3af 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaPlayer.java
@@ -32,7 +32,6 @@ import static android.support.v4.media.session.PlaybackStateCompat.STATE_ERROR;
import androidx.annotation.Nullable;
import android.app.PendingIntent;
-import android.content.Context;
import android.content.Intent;
import android.media.AudioFocusRequest;
import android.media.AudioManager;
@@ -40,6 +39,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
+import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
@@ -59,7 +59,7 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
private static final String TAG = "TmaPlayer";
- private final Context mContext;
+ private final TmaBrowser mBrowser;
private final TmaPrefs mPrefs;
private final TmaLibrary mLibrary;
private final AudioManager mAudioManager;
@@ -78,10 +78,10 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
private TmaMediaItem mActiveItem;
private int mNextEventIndex = -1;
- TmaPlayer(Context context, TmaLibrary library, AudioManager audioManager, Handler handler,
+ TmaPlayer(TmaBrowser browser, TmaLibrary library, AudioManager audioManager, Handler handler,
MediaSessionCompat session) {
- mContext = context;
- mPrefs = TmaPrefs.getInstance(mContext);
+ mBrowser = browser;
+ mPrefs = TmaPrefs.getInstance(mBrowser);
mLibrary = library;
mAudioManager = audioManager;
mHandler = handler;
@@ -101,9 +101,9 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
.setActions(addActions(ACTION_PAUSE));
if (ResolutionIntent.PREFS.equals(event.mResolutionIntent)) {
Intent prefsIntent = new Intent();
- prefsIntent.setClass(mContext, TmaPrefsActivity.class);
+ prefsIntent.setClass(mBrowser, TmaPrefsActivity.class);
prefsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, prefsIntent, 0);
+ PendingIntent pendingIntent = PendingIntent.getActivity(mBrowser, 0, prefsIntent, 0);
Bundle extras = new Bundle();
extras.putString(MediaKeys.ERROR_RESOLUTION_ACTION_LABEL, event.mActionLabel);
@@ -119,7 +119,7 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
private void setActiveItemState(PlaybackStateCompat.Builder state) {
if (mActiveItem != null) {
for (TmaCustomAction action : mActiveItem.mCustomActions) {
- String name = mContext.getResources().getString(action.mNameId);
+ String name = mBrowser.getResources().getString(action.mNameId);
state.addCustomAction(action.mId, name, action.mIcon);
}
state.setActiveQueueItemId(mActiveItem.getQueueId());
@@ -249,14 +249,14 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
mActiveItem.mHearts--;
toast("" + mActiveItem.mHearts);
} else if (TmaCustomAction.REQUEST_LOCATION.mId.equals(action)) {
- mContext.startService(new Intent(mContext, TmaForegroundService.class));
+ mBrowser.startService(new Intent(mBrowser, TmaForegroundService.class));
}
}
}
/** Note: this is for quick feedback implementation, media apps should avoid toasts... */
private void toast(String message) {
- Toast.makeText(mContext, message, Toast.LENGTH_LONG).show();
+ Toast.makeText(mBrowser, message, Toast.LENGTH_LONG).show();
}
private boolean audioFocusGranted() {
@@ -268,6 +268,9 @@ public class TmaPlayer extends MediaSessionCompat.Callback {
TmaMediaEvent event = mActiveItem.mMediaEvents.get(mNextEventIndex);
event.maybeThrow();
+ if (!TextUtils.isEmpty(event.mMediaItemIdToToggle)) {
+ mBrowser.toggleItem(mLibrary.getMediaItemById(event.mMediaItemIdToToggle));
+ }
if (event.premiumAccountRequired() &&
TmaAccountType.PAID.equals(mPrefs.mAccountType.getValue())) {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java
index 2222afa..4926146 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/loader/TmaMediaEventReader.java
@@ -21,8 +21,6 @@ import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getEnum;
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getInt;
import static com.android.car.media.testmediaapp.loader.TmaLoaderUtils.getString;
-import android.util.Log;
-
import androidx.annotation.Nullable;
import com.android.car.media.testmediaapp.TmaMediaEvent;
@@ -57,7 +55,8 @@ class TmaMediaEventReader {
ACTION,
/** How long to wait before sending the event to the app. */
POST_DELAY_MS,
- THROW_EXCEPTION
+ THROW_EXCEPTION,
+ TOGGLE_ITEM,
}
private static TmaMediaEventReader sInstance;
@@ -92,6 +91,7 @@ class TmaMediaEventReader {
getEnum(json, Keys.INTENT, mResolutionIntents, ResolutionIntent.NONE),
getEnum(json, Keys.ACTION, mActions, Action.NONE),
getInt(json, Keys.POST_DELAY_MS),
- getString(json, Keys.THROW_EXCEPTION));
+ getString(json, Keys.THROW_EXCEPTION),
+ getString(json, Keys.TOGGLE_ITEM));
}
}