1 /*
2  * Copyright (C) 2015 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 package android.support.v4.media;
17 
18 /**
19  * Defines the communication protocol for media browsers and media browser services.
20  */
21 class MediaBrowserProtocol {
22 
23     public static final String DATA_CALLBACK_TOKEN = "data_callback_token";
24     public static final String DATA_CALLING_UID = "data_calling_uid";
25     public static final String DATA_MEDIA_ITEM_ID = "data_media_item_id";
26     public static final String DATA_MEDIA_ITEM_LIST = "data_media_item_list";
27     public static final String DATA_MEDIA_SESSION_TOKEN = "data_media_session_token";
28     public static final String DATA_OPTIONS = "data_options";
29     public static final String DATA_PACKAGE_NAME = "data_package_name";
30     public static final String DATA_RESULT_RECEIVER = "data_result_receiver";
31     public static final String DATA_ROOT_HINTS = "data_root_hints";
32     public static final String DATA_SEARCH_EXTRAS = "data_search_extras";
33     public static final String DATA_SEARCH_QUERY = "data_search_query";
34     public static final String DATA_CUSTOM_ACTION = "data_custom_action";
35     public static final String DATA_CUSTOM_ACTION_EXTRAS = "data_custom_action_extras";
36 
37     public static final String EXTRA_CLIENT_VERSION = "extra_client_version";
38     public static final String EXTRA_SERVICE_VERSION = "extra_service_version";
39     public static final String EXTRA_MESSENGER_BINDER = "extra_messenger";
40     public static final String EXTRA_SESSION_BINDER = "extra_session_binder";
41 
42     /**
43      * MediaBrowserCompat will check the version of the connected MediaBrowserServiceCompat,
44      * and it will not send messages if they are introduced in the higher version of the
45      * MediaBrowserServiceCompat.
46      */
47     public static final int SERVICE_VERSION_1 = 1;
48     public static final int SERVICE_VERSION_CURRENT = SERVICE_VERSION_1;
49 
50     /*
51      * Messages sent from the media browser service compat to the media browser compat.
52      * (Compat implementation for IMediaBrowserServiceCallbacks)
53      * DO NOT RENUMBER THESE!
54      */
55 
56     /** (service v1)
57      * Sent after {@link MediaBrowserCompat#connect()} when the request has successfully
58      * completed.
59      * - arg1 : The service version
60      * - data
61      *     DATA_MEDIA_ITEM_ID : A string for the root media item id
62      *     DATA_MEDIA_SESSION_TOKEN : Media session token
63      *     DATA_ROOT_HINTS : An optional root hints bundle of service-specific arguments
64      */
65     public static final int SERVICE_MSG_ON_CONNECT = 1;
66 
67     /** (service v1)
68      * Sent after {@link MediaBrowserCompat#connect()} when the connection to the media browser
69      * failed.
70      * - arg1 : service version
71      */
72     public static final int SERVICE_MSG_ON_CONNECT_FAILED = 2;
73 
74     /** (service v1)
75      * Sent when the list of children is loaded or updated.
76      * - arg1 : The service version
77      * - data
78      *     DATA_MEDIA_ITEM_ID : A string for the parent media item id
79      *     DATA_MEDIA_ITEM_LIST : An array list for the media item children
80      *     DATA_OPTIONS : A bundle of service-specific arguments sent from the media browse to
81      *                    the media browser service
82      */
83     public static final int SERVICE_MSG_ON_LOAD_CHILDREN = 3;
84 
85     /**
86      * MediaBrowserServiceCompat will check the version of the MediaBrowserCompat, and it will not
87      * send messages if they are introduced in the higher version of the MediaBrowserCompat.
88      */
89     public static final int CLIENT_VERSION_1 = 1;
90     public static final int CLIENT_VERSION_CURRENT = CLIENT_VERSION_1;
91 
92     /*
93      * Messages sent from the media browser compat to the media browser service compat.
94      * (Compat implementation for IMediaBrowserService)
95      * DO NOT RENUMBER THESE!
96      */
97 
98     /** (client v1)
99      * Sent to connect to the media browse service compat.
100      * - arg1 : The client version
101      * - data
102      *     DATA_PACKAGE_NAME : A string for the package name of MediaBrowserCompat
103      *     DATA_ROOT_HINTS : An optional root hints bundle of service-specific arguments
104      * - replyTo : Callback messenger
105      */
106     public static final int CLIENT_MSG_CONNECT = 1;
107 
108     /** (client v1)
109      * Sent to disconnect from the media browse service compat.
110      * - arg1 : The client version
111      * - replyTo : Callback messenger
112      */
113     public static final int CLIENT_MSG_DISCONNECT = 2;
114 
115     /** (client v1)
116      * Sent to subscribe for changes to the children of the specified media id.
117      * - arg1 : The client version
118      * - data
119      *     DATA_MEDIA_ITEM_ID : A string for a media item id
120      *     DATA_OPTIONS : A bundle of service-specific arguments sent from the media browser to
121      *                    the media browser service
122      *     DATA_CALLBACK_TOKEN : An IBinder of service-specific arguments sent from the media
123      *                           browser to the media browser service
124      * - replyTo : Callback messenger
125      */
126     public static final int CLIENT_MSG_ADD_SUBSCRIPTION = 3;
127 
128     /** (client v1)
129      * Sent to unsubscribe for changes to the children of the specified media id.
130      * - arg1 : The client version
131      * - data
132      *     DATA_MEDIA_ITEM_ID : A string for a media item id
133      *     DATA_CALLBACK_TOKEN : An IBinder of service-specific arguments sent from the media
134      *                           browser to the media browser service
135      * - replyTo : Callback messenger
136      */
137     public static final int CLIENT_MSG_REMOVE_SUBSCRIPTION = 4;
138 
139     /** (client v1)
140      * Sent to retrieve a specific media item from the connected service.
141      * - arg1 : The client version
142      * - data
143      *     DATA_MEDIA_ITEM_ID : A string for a media item id
144      *     DATA_RESULT_RECEIVER : Result receiver to get the result
145      * - replyTo : Callback messenger
146      */
147     public static final int CLIENT_MSG_GET_MEDIA_ITEM = 5;
148 
149     /** (client v1)
150      * Sent to register the client messenger
151      * - arg1 : The client version
152      * - data
153      *     DATA_ROOT_HINTS : An optional root hints bundle of service-specific arguments
154      * - replyTo : Callback messenger
155      */
156     public static final int CLIENT_MSG_REGISTER_CALLBACK_MESSENGER = 6;
157 
158     /** (client v1)
159      * Sent to unregister the client messenger
160      * - arg1 : The client version
161      * - replyTo : Callback messenger
162      */
163     public static final int CLIENT_MSG_UNREGISTER_CALLBACK_MESSENGER = 7;
164 
165     /** (client v1)
166      * Sent to retrieve a specific media item from the connected service.
167      * - arg1 : The client version
168      * - data
169      *     DATA_SEARCH_QUERY : A string for search query that contains keywords separated by space.
170      *     DATA_SEARCH_EXTRAS : A bundle of service-specific arguments to send to the media browser
171      *                          service.
172      *     DATA_RESULT_RECEIVER : Result receiver to get the result.
173      * - replyTo : Callback messenger
174      */
175     public static final int CLIENT_MSG_SEARCH = 8;
176 
177     /** (client v1)
178      * Sent to request a custom action from the media browser.
179      * - arg1 : The client version
180      * - data
181      *     DATA_CUSTOM_ACTION : A string for the custom action.
182      *     DATA_CUSTOM_ACTION_EXTRAS : A bundle of service-specific arguments to send to the media
183      *                                 browser service.
184      *     DATA_RESULT_RECEIVER : Result receiver to get the result.
185      * - replyTo : Callback messenger
186      */
187     public static final int CLIENT_MSG_SEND_CUSTOM_ACTION = 9;
188 }
189