2011-06-10 100 views

回答

29

可以使用获得这一切MediaMetadataRetriever

MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
mmr.setDataSource(filePath); 

String albumName = 
    mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
+0

谢谢..任何示例,您也可以指向我 – 2011-06-10 13:03:54

+0

我无法导入MediaMetadataRetriever。 Eclipse不提供该选项。任何想法 ? – 2011-06-10 13:31:15

+0

它可以用于api level 10或GingerBread。 – Reno 2011-06-10 13:44:24

4

检查the MP3 file format。基本上,你必须读取文件的最后128个字节;如果前3个字节是"TAG",继续阅读你需要的字段;如果没有,该文件没有附加信息。

+0

我想知道如何在Android中实现它。任何想法 ? – 2011-06-10 13:30:14

+1

从文件和一个128字节的缓冲区创建一个'InputStream';将最后的128个字节读入缓冲区;检查缓冲区的前3个字节,应该是'TAG';使用Arrays.copyOfRange读取相关字节;将这些字节转换为“int”(用于流派)或“String”(用于其他任何内容)。 – 2011-06-10 13:49:35

+0

这不是那么简单。有更多版本的标签,这很容易你只读旧版本。 – 2015-01-08 11:32:57

3

如果最后128字节以标记“TAG”开头,则该文件具有ID3v1(或ID3v1.1)标记。 ID3v2.3标签位于由标记“id3”指示的文件开头(适用于流媒体)。我相信ID3v2.4由“3DE”表示,但我不确定...

+0

这正是我需要的信息,谢谢!我试图用Elixir对Bandcamp MP3进行匹配,并且总是出现错误,因为Bandcamp MP3是ID3v2.3标记的。如果可以的话,我会赞成上百次。 – odiumediae 2016-09-26 21:40:29