55import android .content .pm .PackageInfo ;
66import android .content .pm .PackageManager ;
77import android .media .AudioManager ;
8+ import android .media .MediaDescription ;
89import android .media .MediaMetadata ;
910import android .media .MediaPlayer ;
1011import android .media .Rating ;
1112import android .media .browse .MediaBrowser ;
1213import android .media .session .MediaSession ;
14+ import android .net .Uri ;
1315import android .os .*;
1416import android .service .media .MediaBrowserService ;
1517import android .util .Base64 ;
2628public class AutoMediaBrowserService extends MediaBrowserService implements MediaPlayer .OnPreparedListener ,
2729 MediaPlayer .OnCompletionListener , MediaPlayer .OnErrorListener , AudioManager .OnAudioFocusChangeListener {
2830
31+ public static final String MEDIA_ID_ROOT = "__ROOT__" ;
32+ public static final String MEDIA_ID_MUSICS_BY_GENRE = "__BY_GENRE__" ;
33+
2934 static final byte [][] VALID_PUBLIC_SIGNATURES = new byte [][]{
3035 // Android Auto release public key
3136 extractKey (
@@ -148,6 +153,9 @@ public void onCreate() {
148153 initCallbacks ();
149154 initMediaSessions ();
150155
156+ mAudioManager .requestAudioFocus (this , AudioManager .STREAM_MUSIC ,
157+ AudioManager .AUDIOFOCUS_GAIN );
158+
151159 /*
152160 Bundle extras = new Bundle();
153161
@@ -172,7 +180,7 @@ private void initMediaSessions() {
172180 List <MediaSession .QueueItem > queue = new ArrayList <MediaSession .QueueItem >();
173181 MediaMetadata data = new MediaMetadata .Builder ()
174182 .putString ( MediaMetadata .METADATA_KEY_TITLE , "title" )
175- .putString ( MediaMetadata .METADATA_KEY_DISPLAY_DESCRIPTION , "description" )
183+ .putString (MediaMetadata .METADATA_KEY_DISPLAY_DESCRIPTION , "description" )
176184 .build ();
177185 queue .add ( new MediaSession .QueueItem ( data .getDescription (), 0 ) );
178186 queue .add ( new MediaSession .QueueItem ( data .getDescription (), 1 ) );
@@ -330,10 +338,26 @@ public static boolean isCallerAllowed(Context context, String callingPackage, in
330338 return false ;
331339 }
332340
341+ /**
342+ * Actual implementation of onLoadChildren that assumes that MusicProvider is already
343+ * initialized.
344+ */
333345 @ 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+
336349 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 );
337361 }
338362
339363 @ Override
0 commit comments