我想它必须使用onLoadChildren方法做一些事情,但我不知道如何通过MediaBrowser获取专辑,歌曲或艺术家。
答案 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( ... );
}
}
答案 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中详细介绍了该问题,并在其中使用代码示例演示了该解决方案。希望对您有所帮助。