2010-08-31 54 views
1

我在市场上有一个音乐播放器应用程序,我的用户在Froyo更新后开始报告音乐显示为“未知艺术家”和“未知标题”的问题。我注意到我的摩托罗拉Droid 2运行Froyo时出现同样的情况。做一些谷歌搜索,我发现其他用户(甚至Last.fm证实了这个问题),“Android”没有正确读取/存储标签。我无法找到任何有关此问题的技术/开发人员反馈。Froyo更新后无法读取ID3标签?

以下是之前已经升级Froyo工作6个月的代码:

String whereclause = MediaStore.Audio.Media.DATA + " = \"" + path 
     + "\""; 
curSong = CR.query(MediaStore.Audio.Media 
     .getContentUri("external"), new String[] { 
     MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.ALBUM, 
     MediaStore.Audio.Media.ARTIST }, whereclause, null, null); 
if (curSong != null) { 
    curSong.moveToFirst(); 
    title = curSong.getString(0); 
    album = curSong.getString(1); 
    artist = curSong.getString(2); 
} 

查询之后,curSong不为空,所以“如果”块继续,但后来我想,当得到CursorIndexOutOfBounds阅读curSong.getString(0)。 Froyo有没有新的方式将标签存储在MediaStore中?

经过一番调试,我发现ID3标签很好,仍然在同一个地方。问题在于我的条款。我正在寻找歌曲的路径,它以前存储在MediaStore.Audi.Media.DATA,但显然不再存在,所以我实际上从这个查询中获得一个空集。现在我需要找到存储路径的位置。

+0

感谢您发布此信息。我正在开发音乐播放器应用程序,这些信息非常有用。我会投票,但我刚开始这个帐户,并没有积分。大声笑。 :代码上的/ GG。 – 2010-11-10 17:14:56

回答

0

我发现了这个问题。路径仍然存储在MediaStore.Audio.Media.DATA中,但是,似乎Froyo在“/ sdcard”之前添加了“/ mnt”。当我将“/ mnt”添加到where条中的路径时,它能够找到这首歌并且一切都很好。

我希望这可以帮助别人在未来。