2016-02-26 233 views
1

我使用通用Android媒体播放器样本作为另一个应用程序的基础。对于我的爱,我无法弄清楚如何更新MusicService使用的MusicProvider(即更改队列中的歌曲)。 这是在用户点击一个随机项目时完成的 - 该服务将提供一个新的列表来播放。通用Android媒体播放器 - UAMP

任何想法? - 原始来源位于:https://github.com/googlesamples/android-UniversalMusicPlayer

我已经创建了新的MusicProvider,如何获得该服务就是我所要求的。

回答

0

我相信你需要修改模型/ RemoteJSONSource.java,使其增加了MediaMetadataCompat物品进入轨道ArrayList的

你需要创建,创建一个MediaMetadataCompat对象“buildFromJSON”的方法。请务必设置尽可能多的媒体属性。

Google示例显示了从远程JSON源添加的媒体。 在我的情况下,我已经将远程Firebase JSON加载到本地SQLite 数据库中。所以我从SQLite加载我的媒体。为此,我修改了 buildFromJsonbuildFromEpisodesCursor,并适当地更改了内容。 (火力地堡可以发送JSON更新如果媒体更改SQLite的。)下面是关键代码块的一个片段:

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