2014-01-10 33 views
1

我正尝试为Android构建自己的音乐播放器。使用MediaMetadataRetriever提取元数据有意想不到的结果

对于一个列表,我需要歌曲的元数据,所以我使用MediaMetadataRetriever来提取它们,但是检索器无法提取大多数歌曲的元数据(~660)。在我的PC音乐软件中,元数据可见并在Windows资源管理器中显示。如果我打开歌曲的属性,我可以修改它们,如果我在手机上加载更改的文件,它仍然不起作用。顺便说一句:如果我使用手机上的其他播放器,它总是能够加载元数据。

MediaMetadataRetriever越野车,我应该使用一些其他库提取或我做错了什么?

This问题是相关的,但并没有真正帮助解决我的问题。

下面是我的一些代码为例:

MediaMetadataRetriever lMetaData = new MediaMetadataRetriever(); 
lMetaData.setDataSource(mAbsolutePath); 
mArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 
mTitle = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 
mAlbum = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
mAlbumArtist = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST); 
mGenre = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_GENRE); 
mSongNumber = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER); 
mYear = lMetaData.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR); 

if(mArtist == null) 
    mArtist = new String(""); 
if(mTitle == null) 
    mTitle = new String(""); 
if(mAlbum == null) 
    mAlbum = new String(""); 
if(mAlbumArtist == null) 
    mAlbumArtist = new String(""); 
if(mGenre == null) 
    mGenre = new String(""); 
if(mSongNumber == null) 
    mSongNumber = new String(""); 
if(mYear == null) 
    mYear = new String(""); 
+0

我只是使用另一个外部库的标签,所以问题是某种解决。 – Schamote

回答