我有一个自定义适配器,在其构造函数中我设置了一个新的MediaPlayer
实例
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType( AudioManager.STREAM_MUSIC );
mMediaPlayer.setOnPreparedListener( this );
mMediaPlayer.setOnErrorListener( this );
mMediaPlayer.setOnCompletionListener( this );
int volume = getAudioStreamVolume(context);
int maxVol = getMaxAudioStreamVolume( context );
mMediaPlayer.setVolume( (float)volume/maxVol, (float)volume/maxVol);
对于每个行项目,我都有一个播放音频设置的按钮,如下所示,文件路径从列表中传递,我有Log
该值来验证实际上是否存在路径字符串
holder.playAudio.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick( View view ) {
setupMediaPlayer( path );
}
} );
setupMediaPlayer的方法
private void setupMediaPlayer( String filePath ) {
try {
mMediaPlayer.setAudioStreamType( AudioManager.STREAM_MUSIC );
Log.e( getClass().getName(), filePath );
mMediaPlayer.setDataSource( filePath );
mMediaPlayer.prepareAsync();
} catch( IOException e ) {
e.printStackTrace();
}
}}
我实际上尝试在我的适配器类的已实现的onPreparedListener中播放声音。我的问题是,从列表视图中只有一些录音正在播放,当我试图按下其他录音按钮时,我在LogCat中收到此错误
E/MediaPlayer﹕ error (-19, 0)
在我的OnErrorListener中,我有以下
Log.e( getClass().getName(), "MP ERROR "+ what + " ERROR CODE "+errorExtra );
这导致
MP ERROR -19 ERROR CODE 0
我不确定为什么只有部分文件正在播放而其他大部分文件都没有播放,我也检查了文件浏览器,文件位于正确的位置。