我认为您需要修改 model/RemoteJSONSource.java 以便将 MediaMetadataCompat 项添加到 tracks ArrayList 中。
您需要创建一个用于创建 MediaMetadataCompat 对象的“buildFromJSON”方法。请务必设置尽可能多的媒体属性。
Google 示例显示了从远程 JSON 源添加的媒体。
就我而言,我已经将远程 Firebase JSON 加载到本地 SQLite
数据库。所以我改为从 SQLite 加载我的媒体。为此,我修改了
buildFromJson 为 buildFromEpisodesCursor 并适当地改变了胆量。 (如果媒体发生变化,Firebase 可以向 SQLite 发送 JSON 更新。)这是一个带有关键代码块的 sn-p:
public class RemoteJSONSource implements MusicProviderSource {
@Override
public Iterator<MediaMetadataCompat> iterator() {
ArrayList<MediaMetadataCompat> tracks = new ArrayList<>();
EpisodesCursor episodesCursor = getEpisodes();
if (episodesCursor != null) {
while (episodesCursor.moveToNext()) {
tracks.add(buildFromEpisodesCursor(episodesCursor));
}
episodesCursor.close();
}
return tracks.iterator();
}
private MediaMetadataCompat buildFromEpisodesCursor(EpisodesCursor episodesCursor) {
// INITIALIZE THE VARIOUS MEDIA DATA ITEMS YOU NEED HERE (ommitted)
MediaMetadataCompat theMetadata = new MediaMetadataCompat.Builder()
.putString(MediaMetadataCompat.METADATA_KEY_MEDIA_ID, id)
.putString(MusicProviderSource.CUSTOM_METADATA_TRACK_SOURCE, episodeDownloadUrl)
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM, episodeTitle)
.putString(MediaMetadataCompat.METADATA_KEY_ARTIST, artist)
.putString(MediaMetadataCompat.METADATA_KEY_WRITER, episodeWriter)
.putLong(MediaMetadataCompat.METADATA_KEY_DURATION, duration)
.putString(MediaMetadataCompat.METADATA_KEY_DATE, airdate)
.putLong(MediaMetadataCompat.METADATA_KEY_YEAR, airdate_year)
.putString(MediaMetadataCompat.METADATA_KEY_GENRE, genre)
.putBitmap(MediaMetadataCompat.METADATA_KEY_DISPLAY_ICON, iconBitmap)
.putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI, iconUrl)
.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, episodeTitle)
.putString(MediaMetadataCompat.METADATA_KEY_TITLE, episodeTitle)
.putString(MediaMetadataCompat.METADATA_KEY_DISPLAY_DESCRIPTION, episodeDescription)
.putLong(MediaMetadataCompat.METADATA_KEY_TRACK_NUMBER, episodeNumber)
.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, totalTrackCount)
.putRating(MediaMetadataCompat.METADATA_KEY_RATING, ratingCompat)
.build();
return theMetadata;
}
...
}
带有关键模式的 uTube 视频:
https://www.youtube.com/watch?v=iIKxyDRjecU
https://www.youtube.com/watch?v=XQwe30cZffg
https://www.youtube.com/watch?v=FBC1FgWe5X4&utm_campaign=adp_series_mediabrowserservicecompat_030116&utm_source=medium&utm_medium=blog