Android MediaPlayer的getDuration()方法从元数据而不是实际媒体长度获取值

时间:2012-05-29 04:07:24

标签: android android-mediaplayer

我正在开发一款应用,用户可以通过MediaPlayer在应用中播放音乐。

我遇到的问题是,当调用getDuration()方法时,用户编辑的媒体文件会给出不正确的值。我做了一些实验,似乎用户经常使用音频编辑工具编辑歌曲时,元数据(包括歌曲长度)保持不变。这导致媒体播放器将该歌曲视为3分钟的歌曲,实际上只有30秒。这是一个很大的问题,因为许多用户会在应用的媒体播放器中使用铃声或其他歌曲,这将导致进度条和TextView显示歌曲的长度不正确。

显然,在使用我的应用程序之前,我无法控制人们使用的各种音频编辑工具。我可以在app-end上做些什么来提供准确的getDuration()值吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

以编程方式对媒体文件所做的修改不会反映在MediaScanner中。因此,如有必要,您可以在应用程序启动时尝试重新扫描mediastore。请参阅https://groups.google.com/group/android-developers/browse_thread/thread/cf41cc88b6eb4393