2013-10-18 90 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()

相关问题