【问题标题】:MediaMetadataCompat ExtrasMediaMetadataCompat 附加功能
【发布时间】:2015-12-31 01:42:19
【问题描述】:

有没有办法通过支持库中的 MediaMetadataCompat 使用 extras?

使用 MediaMetadata 我可以设置额外内容,但不能使用兼容的。

【问题讨论】:

  • 你能说明你可以用MediaMetadata做什么而不能用MediaMetadataCompat做什么吗?
  • 我不知道OP的要求,但我在赏金描述中提到过

标签: android chromecast mediainfo mediabrowserservicecompat


【解决方案1】:

希望对你有帮助。

 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());

【讨论】:

    【解决方案2】:

    我已经复制粘贴了我们的代码。如果你能理解,请告诉我。

    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();
        }
    

    【讨论】:

    • 之前我也是这么想的,但是由于轨道可以是多个并且 MediaMetadataCompat 不允许插入数组,所以不能在所有情况下都使用,在我看来 MediaMetadataCompat 缺少许多重要字段,例如哑剧类型,或者可能是我错过了什么
    • 是的。我不完全记得,但你是对的,MediaMetadataCompat 缺少几个字段。我们设法使用序列化到一个我们未使用的字段中的 JsonObject 使其工作,但我不知道它是否适合您。无论如何,这是一种解决方法,而不是标准解决方案。
    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多