如何使用MediaBrowser查询相册?

时间:2016-05-26 12:50:32

标签: android media

我想它必须使用onLoadChildren方法做一些事情,但我不知道如何通过MediaBrowser获取专辑,歌曲或艺术家。

3 个答案:

答案 0 :(得分:2)

如果您的服务已扩展为MediaBrowserService,则可以在onLoadChildren中检索任何元数据。

在您的onLoadChildren中,您应该使用MediaMetadata

  

包含有关项目的元数据,例如标题,艺术家等。

您可以使用MediaDescription

从中检索艺术家,标题等内容
  

适合显示的媒体项的一组简单元数据。

@Override
public void onLoadChildren(final String parentMediaId, final Result<List<MediaItem>> result) {
  for (MediaMetadata track : mMusicProvider.getMusicsByGenre(genre)) {
      // once you have an instance of MediaMetadata, you can retrieve any data you want:
      MediaDescription simpleData = track.getDescription();
      // or retrieving with a key from its info Bundle:
      // android.media.metadata.MEDIA_ID
      // android.media.metadata.TRACK_NUMBER
      // android.media.metadata.ALBUM
      // android.media.metadata.GENRE
      // android.media.metadata.TITLE
      // android.media.metadata.ARTIST
      // android.media.metadata.NUM_TRACKS
      // android.media.metadata.DURATION
      // android.media.metadata.ALBUM_ART_URI
      track.getString( ... );
  }
}

您可以在this sample中看到更明确的实现。

答案 1 :(得分:2)

您可以使用MediaMetadataRetriever从媒体文件中检索详细信息

例如:

MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever(); 
metaRetriver.setDataSource("/sdcard/audio.mp3");

String artist= metaRetriver .extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST);
Strng genre = metaRetriver .extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE)

答案 2 :(得分:0)

我在应用程序中做了类似的事情,我想在设备上显示现有歌曲。我的服务确实通过onLoadChildren()方法返回了这些项目,并且我以一种分页的方式返回了这些项目,因此我们仅获取用户感兴趣的项目。我是使用Android的新Paging library完成的。我在编写的post中详细介绍了该问题,并在其中使用代码示例演示了该解决方案。希望对您有所帮助。