2012-05-29 50 views
3

我正在研究一個應用程序,用戶可以通過該應用程序通過MediaPlayer播放音樂。Android MediaPlayer的getDuration()方法從元數據中獲取價值而不是實際的媒體長度

我遇到的問題是,當調用getDuration()方法時,用戶編輯的媒體文件會給出錯誤的值。我做了一些嘗試,似乎通常當用戶使用音頻編輯工具編輯歌曲時,元數據(包括歌曲長度)保持不變。這導致媒體播放器將歌曲看作是3分鐘的歌曲,但實際上它只有30秒。這是一個很大的問題,因爲許多用戶會在應用程序的媒體播放器中使用鈴聲或其他歌曲,這會導致進度條和TextView顯示歌曲長度不正確。

很明顯,我無法控制人們在使用我的應用程序之前使用的各種音頻編輯工具。有什麼我可以做的應用程序端提供準確的getDuration()值?

謝謝!

回答

0

以編程方式對媒體文件所做的修改不會反映在MediaScanner中。因此,如果有必要,您可以嘗試在應用程序啓動時重新掃描媒體庫。請參閱https://groups.google.com/group/android-developers/browse_thread/thread/cf41cc88b6eb4393

+0

對媒體文件的更改不是由我的程序生成的。當有人使用音頻編輯工具(如Audacity,Ringdroid等)時,元數據包含文件的原始長度,而不是新段的長度。我嘗試在Winamp中使用這些文件中的一部分,併發生相同的問題。任何想法如何重新掃描並重新分配持續時間元數據標籤到文件編程? – JMRboosties

+0

以編程方式表示不僅是您的程序。除非重新掃描MediaScanner,否則修改歌曲的任何其他軟件也不會反映在包含元數據的數據庫中。重新掃描和更新元數據的過程在上面給出的鏈接中。 – user936414

相關問題