1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.car.media.common;
18 
19 import androidx.media.MediaBrowserServiceCompat;
20 
21 /**
22  * Holds constants used when dealing with MediaBrowserServices that support the
23  * content style API for media.
24  */
25 public final class MediaConstants {
26 
27     /**
28      * Integer extra indicating the recommended size (in pixels) for media art bitmaps. The value
29      * is passed in the rootHints Bundle of {@link MediaBrowserServiceCompat#onGetRoot} and can be
30      * retrieved with: rootHints.getInt("android.media.extras.MEDIA_ART_SIZE_HINT_PIXELS", 0).
31      */
32     public static final String EXTRA_MEDIA_ART_SIZE_HINT_PIXELS =
33             "android.media.extras.MEDIA_ART_SIZE_HINT_PIXELS";
34 
35     /**
36      * Bundle extra holding the Pending Intent to launch to let users resolve the current error.
37      * See {@link #ERROR_RESOLUTION_ACTION_LABEL} for more details.
38      */
39     public static final String ERROR_RESOLUTION_ACTION_INTENT =
40             "android.media.extras.ERROR_RESOLUTION_ACTION_INTENT";
41 
42     /**
43      * Bundle extra indicating the messaged displayed to users describing an error state.
44      * Used to provide more information for {@link #ERROR_RESOLUTION_ACTION_LABEL}.
45      */
46     public static final String ERROR_RESOLUTION_ACTION_MESSAGE =
47             "android.media.extras.ERROR_RESOLUTION_ACTION_MESSAGE";
48 
49     /**
50      * Bundle extra indicating the label of the button users can tap to resolve an error state.
51      * A more detailed explanation should be provided to the user via
52      * {@link PlaybackStateCompat.Builder#setErrorMessage}.
53      */
54     public static final String ERROR_RESOLUTION_ACTION_LABEL =
55             "android.media.extras.ERROR_RESOLUTION_ACTION_LABEL";
56 
57     /**
58      * Bundle extra indicating the presentation hint for playable media items. See {@link
59      * #CONTENT_STYLE_LIST_ITEM_HINT_VALUE} or {@link #CONTENT_STYLE_GRID_ITEM_HINT_VALUE}
60      */
61     public static final String CONTENT_STYLE_PLAYABLE_HINT =
62             "android.media.browse.CONTENT_STYLE_PLAYABLE_HINT";
63 
64     /**
65      * Bundle extra indicating the presentation hint for playable media items. See {@link
66      * #CONTENT_STYLE_LIST_ITEM_HINT_VALUE} or {@link #CONTENT_STYLE_GRID_ITEM_HINT_VALUE}
67      *
68      * @deprecated this flag has been replaced by {@link #CONTENT_STYLE_PLAYABLE_HINT}
69      */
70     @Deprecated
71     public static final String CONTENT_STYLE_PLAYABLE_HINT_PRERELEASE =
72             "android.auto.media.CONTENT_STYLE_PLAYABLE_HINT";
73 
74     /**
75      * Bundle extra indicating the presentation hint for browsable media items. See {@link
76      * #CONTENT_STYLE_LIST_ITEM_HINT_VALUE} or {@link #CONTENT_STYLE_GRID_ITEM_HINT_VALUE}
77      */
78     public static final String CONTENT_STYLE_BROWSABLE_HINT =
79             "android.media.browse.CONTENT_STYLE_BROWSABLE_HINT";
80 
81     /**
82      * Bundle extra indicating the presentation hint for browsable media items. See {@link
83      * #CONTENT_STYLE_LIST_ITEM_HINT_VALUE} or {@link #CONTENT_STYLE_GRID_ITEM_HINT_VALUE}
84      *
85      * @deprecated this flag has been replaced by {@link #CONTENT_STYLE_BROWSABLE_HINT}
86      */
87     @Deprecated
88     public static final String CONTENT_STYLE_BROWSABLE_HINT_PRERELEASE =
89             "android.auto.media.CONTENT_STYLE_BROWSABLE_HINT";
90 
91     /**
92      * Bundle extra indicating that media app supports MediaBrowserCompat.onSearch
93      */
94     public static final String MEDIA_SEARCH_SUPPORTED = "android.media.browse.SEARCH_SUPPORTED";
95 
96     /**
97      * Bundle extra indicating that media app supports MediaBrowserCompat.onSearch for pre-release
98      * versions.
99      *
100      * @deprecated this flag has been replaced by {@link #MEDIA_SEARCH_SUPPORTED}
101      */
102     @Deprecated
103     public static final String MEDIA_SEARCH_SUPPORTED_PRERELEASE =
104             "android.auto.media.SEARCH_SUPPORTED";
105 
106     /** Bundle extra indicating the media item belongs to a group with the given title. */
107     public static final String CONTENT_STYLE_GROUP_TITLE_HINT =
108             "android.media.browse.CONTENT_STYLE_GROUP_TITLE_HINT";
109 
110     /**
111      * Bundle extra indicating the media item belongs to a group with the given title.
112      *
113      * @deprecated this flag has been replaced by {@link #CONTENT_STYLE_GROUP_TITLE_HINT}
114      */
115     @Deprecated
116     public static final String CONTENT_STYLE_GROUP_TITLE_HINT_PRERELEASE =
117             "android.auto.media.CONTENT_STYLE_GROUP_TITLE_HINT";
118 
119     /**
120      * Value for {@link #CONTENT_STYLE_PLAYABLE_HINT} and {@link #CONTENT_STYLE_BROWSABLE_HINT} that
121      * hints the corresponding items should be presented as lists.
122      */
123     public static final int CONTENT_STYLE_LIST_ITEM_HINT_VALUE = 1;
124 
125     /**
126      * Value for {@link #CONTENT_STYLE_PLAYABLE_HINT} and {@link #CONTENT_STYLE_BROWSABLE_HINT} that
127      * hints the corresponding items should be presented as grids.
128      */
129     public static final int CONTENT_STYLE_GRID_ITEM_HINT_VALUE = 2;
130 
131     /**
132      * Value for {@link #CONTENT_STYLE_BROWSABLE_HINT} that hints the corresponding items should be
133      * presented as a "category" list, where media items are browsable and represented by a
134      * meaningful icon.
135      */
136     public static final int CONTENT_STYLE_CATEGORY_LIST_ITEM_HINT_VALUE = 3;
137 
138     /**
139      * Value for {@link #CONTENT_STYLE_BROWSABLE_HINT} that hints the corresponding items should be
140      * presented as a "category" grid, where media items are browsable and represented by a
141      * meaningful icon.
142      */
143     public static final int CONTENT_STYLE_CATEGORY_GRID_ITEM_HINT_VALUE = 4;
144 
145     /**
146      * These constants are from
147      * @see <a href=https://developer.android.com/training/auto/audio/#required-actions></a>
148      *
149      * @deprecated this flag has been replaced by {@link #PLAYBACK_SLOT_RESERVATION_SKIP_TO_NEXT}
150      */
151     @Deprecated
152     public static final String SLOT_RESERVATION_SKIP_TO_NEXT =
153             "com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_NEXT";
154     /**
155      * @deprecated this flag has been replaced by {@link #PLAYBACK_SLOT_RESERVATION_SKIP_TO_NEXT}
156      */
157     @Deprecated
158     public static final String SLOT_RESERVATION_SKIP_TO_PREV =
159             "com.google.android.gms.car.media.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_PREVIOUS";
160 
161     /**
162      * These constants are from
163      * @see <a href=https://developer.android.com/training/auto/audio/#required-actions></a>
164      */
165     public static final String PLAYBACK_SLOT_RESERVATION_SKIP_TO_NEXT =
166             "android.media.playback.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_NEXT";
167     public static final String PLAYBACK_SLOT_RESERVATION_SKIP_TO_PREV =
168             "android.media.playback.ALWAYS_RESERVE_SPACE_FOR.ACTION_SKIP_TO_PREVIOUS";
169 
170     /**
171      * Bundle extra of type 'boolean' indicating that an item should show the 'explicit' symbol.
172      */
173     public static final String EXTRA_IS_EXPLICIT = "android.media.IS_EXPLICIT";
174 
175     /** Bundle extra value indicating that an item should show the corresponding metadata */
176     public static long EXTRA_METADATA_ENABLED_VALUE = 1;
177 
178     /**
179      * Bundle extra of type 'boolean' indicating than an item should show the 'downloaded' symbol.
180      */
181     public static final String EXTRA_DOWNLOAD_STATUS = "android.media.extra.DOWNLOAD_STATUS";
182 }
183