2013-10-18 87 views
2

我做了使用class AudioRecorder以pcm格式錄製文件的應用程序。我列出了我的應用程序中的所有文件,我想從所有文件中獲取持續時間,但是我遇到了問題。我想:Android如何獲取音頻文件的持續時間

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

MediaPlayer mplayer = new MediaPlayer(); 
mplayer.reset(); 
mplayer.setDataSource(URL); 
mplayer.prepare(); 
Integer totalFileDuration = mplayer.getDuration(); 

我只有這個解決方案的錯誤。

回答

0

從Android開發文檔:

有一個新建成的 MediaPlayer對象和復位後的MediaPlayer對象()之間的微妙但重要的區別被調用。 調用諸如 getCurrentPosition(),getDuration(),getVideoHeight(), getVideoWidth(),setAudioStreamType(int),setLooping(boolean), setVolume(float,float),pause()對於這兩種情況,在Idle狀態下爲start(),stop(),seekTo(int), prepare()或prepareAsync()。如果任何 這些方法在調用MediaPlayer對象後立即調用 構造,則用戶提供的回調方法 OnErrorListener.onError()將不會被內部播放器 引擎調用並且對象狀態保持不變;但如果在reset()後立即調用這些方法 ,則用戶提供的回調方法 OnErrorListener.onError()將由內部播放器 引擎調用,並且該對象將轉換爲錯誤狀態。

由於您使用的數據源的URL,我會嘗試prepareAsync()然後調用getDuration()onPrepared()

相關問題