2

クラスAudioRecorderを使用してファイルをpcm形式で録音するアプリケーションを作成しました。アプリ内のすべてのファイルのリストを作成しました。すべてのファイルから期間を取得したいのですが、問題があります。私は試した:

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

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

このソリューションにはエラーしかありません。

4

1 に答える 1

0

Android dev docs から:

新しく構築された MediaPlayer オブジェクトと、reset() が呼び出された後の MediaPlayer オブジェクトの間には、微妙ではあるが重要な違いがあります。getCurrentPosition()、getDuration()、getVideoHeight()、getVideoWidth()、setAudioStreamType(int)、setLooping(boolean)、setVolume(float、float)、pause()、start() などのメソッドを呼び出すのはプログラミング エラーです。 、stop()、seekTo(int)、prepare()、または prepareAsync() は、どちらの場合も Idle 状態にあります。MediaPlayer オブジェクトが構築された直後にこれらのメソッドのいずれかが呼び出された場合、ユーザー提供のコールバック メソッド OnErrorListener.onError() は内部プレーヤー エンジンによって呼び出されず、オブジェクトの状態は変更されません。しかし、これらのメソッドが reset() の直後に呼び出された場合、ユーザーが指定したコールバック メソッド OnErrorListener.

データ ソースの URL を使用しているので、私は試しprepareAsync()てから を呼び出しgetDuration()ますonPrepared()

于 2013-10-18T21:07:08.637 に答える