2015-10-02 5 views
8

Gibt es eine Möglichkeit, Extras mit dem MediaMetadataCompat aus der Support-Bibliothek zu verwenden?MediaMetadataCompat Extras

Mit den MediaMetadata kann ich Extras einstellen, aber mit dem Kompatiblen kann ich nicht.

+0

Können Sie zeigen, was Sie mit 'MediaMetadata' machen können und was nicht mit' MediaMetadataCompat' möglich ist? – azizbekian

+0

Ich kenne nicht die Anforderungen des OP, aber meins habe ich in Kopfgeld Beschreibung – ingsaurabh

Antwort

1

Ich hoffe, es hilft.

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

erwähnt Bitte lesen Sie die Kopfgeld Beschreibung – ingsaurabh

1

Ich habe unseren Code kopiert. Bitte sag mir, ob du es verstehen kannst.

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

Früher dachte ich den gleichen Weg, aber da Tracks können mehrere sein und MediaMetadataCompat erlaubt Array nicht einfügen, so kann 't in allen Fällen verwendet werden, auch scheint es mir MediaMetadataCompat fehlen viele wichtige Felder wie MIME-Typ oder möglicherweise fehlen mir etwas – ingsaurabh

+1

Yeap. Ich erinnere mich nicht ganz, aber Sie haben Recht, MediaMetadataCompat fehlen mehrere Felder. Wir haben es geschafft, es mit einem JsonObject serialisiert in einem Feld arbeiten zu lassen, das wir nicht benutzt haben, aber ich weiß nicht, ob es für Sie funktioniert. Wie auch immer, es ist ein Workaround und keine Standardlösung. – gonzalomelov

Verwandte Themen