2015-10-02 5 views
8

C'è un modo per utilizzare extra con MediaMetadataCompat dalla libreria di supporto?MediaMetadataCompat Extras

Utilizzando MediaMetadata posso impostare degli extra, ma con il compat non posso.

+0

Potete mostrare cosa si può fare con 'MediaMetadata' e non si può fare con' MediaMetadataCompat'? – azizbekian

+0

Non conosco i requisiti dell'OP, ma il mio l'ho menzionato nella descrizione della taglia – ingsaurabh

risposta

1

Spero che aiuti.

import android.support.v4.media.session.MediaSessionCompat; 

    private MediaSessionCompat mMediaSession; 
    //init mediasesson 
    mMediaSession = new MediaSessionCompat(getApplicationContext(), "AudioPlayer",new ComponentName(this, HeadsetNotificationBroadcast.class), null); 
    //set the metadata 
    mMediaSession.setMetadata(new MediaMetadataCompat.Builder() 
        .putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, getSongDataHelper().getAlbumArt()) 
        .putString(MediaMetadataCompat.METADATA_KEY_ARTIST, getSongDataHelper().getArtist()) 
        .putString(MediaMetadataCompat.METADATA_KEY_ALBUM, getSongDataHelper().getAlbum()) 
        .putString(MediaMetadataCompat.METADATA_KEY_TITLE, getSongDataHelper().getTitle()) 
        .build()); 
+0

Leggere attentamente la descrizione della taglia – ingsaurabh

1

Ho copiato il nostro codice. Per favore dimmi se riesci a capirlo.

private static MediaInfo toCastMediaMetadata(MediaMetadataCompat track, JSONObject customData) { 
     MediaMetadata mediaMetadata = new MediaMetadata(MediaMetadata.MEDIA_TYPE_MUSIC_TRACK); 
     mediaMetadata.putString(MediaMetadata.KEY_TITLE, track.getDescription().getTitle().toString()); 
     mediaMetadata.putString(MediaMetadata.KEY_SUBTITLE, track.getDescription().getSubtitle().toString()); 
     mediaMetadata.putString(MediaMetadata.KEY_ALBUM_ARTIST, track.getString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST)); 
     mediaMetadata.putString(MediaMetadata.KEY_ALBUM_TITLE, track.getString(MediaMetadataCompat.METADATA_KEY_ALBUM)); 
     WebImage image = new WebImage(new Uri.Builder().encodedPath(track.getString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI)).build()); 
     // First image is used by the receiver for showing the audio album art. 
     mediaMetadata.addImage(image); 
     // Second image is used by Cast Companion Library on the full screen activity that is shown 
     // when the cast dialog is clicked. 
     mediaMetadata.addImage(image); 

     return new MediaInfo.Builder(
      track.getDescription().getExtras().getString(MutableMediaMetadataCompat. 
       METADATA_KEY_TRACK_SOURCE)).setContentType(
      MIME_TYPE_AUDIO_MPEG).setStreamType(MediaInfo.STREAM_TYPE_BUFFERED).setMetadata(mediaMetadata).setCustomData(customData).build(); 
    } 
+0

In precedenza ho pensato allo stesso modo, ma poiché le tracce possono essere multiple e MediaMetadataCompat non consente l'inserimento di array, così può essere usato in tutti i casi, anche a me sembra che MediaMetadataCompat manchi di molti campi importanti come il tipo MIME o potrebbe essere mi manca qualcosa – ingsaurabh

+1

Yeap. Non ricordo completamente ma hai ragione, MediaMetadataCompat manca di diversi campi. Siamo riusciti a farlo funzionare utilizzando un oggetto JsonObject serializzato in un campo che non è stato utilizzato ma non so se funzioni per te. Ad ogni modo, è una soluzione alternativa e non una soluzione standard. – gonzalomelov

Problemi correlati