5
5
import android .content .pm .PackageInfo ;
6
6
import android .content .pm .PackageManager ;
7
7
import android .media .AudioManager ;
8
+ import android .media .MediaDescription ;
8
9
import android .media .MediaMetadata ;
9
10
import android .media .MediaPlayer ;
10
11
import android .media .Rating ;
11
12
import android .media .browse .MediaBrowser ;
12
13
import android .media .session .MediaSession ;
14
+ import android .net .Uri ;
13
15
import android .os .*;
14
16
import android .service .media .MediaBrowserService ;
15
17
import android .util .Base64 ;
26
28
public class AutoMediaBrowserService extends MediaBrowserService implements MediaPlayer .OnPreparedListener ,
27
29
MediaPlayer .OnCompletionListener , MediaPlayer .OnErrorListener , AudioManager .OnAudioFocusChangeListener {
28
30
31
+ public static final String MEDIA_ID_ROOT = "__ROOT__" ;
32
+ public static final String MEDIA_ID_MUSICS_BY_GENRE = "__BY_GENRE__" ;
33
+
29
34
static final byte [][] VALID_PUBLIC_SIGNATURES = new byte [][]{
30
35
// Android Auto release public key
31
36
extractKey (
@@ -148,6 +153,9 @@ public void onCreate() {
148
153
initCallbacks ();
149
154
initMediaSessions ();
150
155
156
+ mAudioManager .requestAudioFocus (this , AudioManager .STREAM_MUSIC ,
157
+ AudioManager .AUDIOFOCUS_GAIN );
158
+
151
159
/*
152
160
Bundle extras = new Bundle();
153
161
@@ -172,7 +180,7 @@ private void initMediaSessions() {
172
180
List <MediaSession .QueueItem > queue = new ArrayList <MediaSession .QueueItem >();
173
181
MediaMetadata data = new MediaMetadata .Builder ()
174
182
.putString ( MediaMetadata .METADATA_KEY_TITLE , "title" )
175
- .putString ( MediaMetadata .METADATA_KEY_DISPLAY_DESCRIPTION , "description" )
183
+ .putString (MediaMetadata .METADATA_KEY_DISPLAY_DESCRIPTION , "description" )
176
184
.build ();
177
185
queue .add ( new MediaSession .QueueItem ( data .getDescription (), 0 ) );
178
186
queue .add ( new MediaSession .QueueItem ( data .getDescription (), 1 ) );
@@ -330,10 +338,26 @@ public static boolean isCallerAllowed(Context context, String callingPackage, in
330
338
return false ;
331
339
}
332
340
341
+ /**
342
+ * Actual implementation of onLoadChildren that assumes that MusicProvider is already
343
+ * initialized.
344
+ */
333
345
@ Override
334
- public void onLoadChildren (String parentId , Result <List <MediaBrowser .MediaItem >> result ) {
335
- Log .e ( "AutoMediaBrowserService" , "onLoadChildren" );
346
+ public void onLoadChildren (final String parentMediaId ,
347
+ final Result <List <MediaBrowser .MediaItem >> result ) {
348
+
336
349
result .detach ();
350
+
351
+ List <MediaBrowser .MediaItem > mediaItems = new ArrayList <MediaBrowser .MediaItem >();
352
+
353
+ MediaMetadata data = new MediaMetadata .Builder ()
354
+ .putString ( MediaMetadata .METADATA_KEY_TITLE , "Media Title" )
355
+ .putString ( MediaMetadata .METADATA_KEY_MEDIA_ID , "ID12345" ).build ();
356
+
357
+
358
+ mediaItems .add ( new MediaBrowser .MediaItem (
359
+ data .getDescription (), MediaBrowser .MediaItem .FLAG_PLAYABLE ) );
360
+ result .sendResult (mediaItems );
337
361
}
338
362
339
363
@ Override
0 commit comments