"
android MediaPlayer 播放音频文件的时候,有时会出现只播放了一部分就停止了,这是什么原因啊?
下面是播放方法,水平不高,写的不太好,各位见谅。
/**
* 播放的方法
* @param path
*/
public synchronized void play(final String path)
{
try
{
if (mediaPlayer == null)
{
mediaPlayer = new MediaPlayer();
}
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(path);
mediaPlayer.prepare();
mediaPlayer.start();
mediaPlayer.setVolume(0.5f, 0.5f);
// 设为播放状态
// isPlaying = true;
//更改按钮的北京颜色
tv.setBackgroundColor(Application.get().getResources().getColor(R.color.main_title));
// tv.setText("播放中...");
// 播放完毕之后的回掉函数
mediaPlayer.setOnCompletionListener(new OnCompletionListener()
{
@Override
public void onCompletion(MediaPlayer arg0)
{
// 这里在调用play()可以实现单曲循环
// isPlaying = false;
mediaPlayer.release();
mediaPlayer = null;
ContextConstant.voideInfoView = null;
ContextConstant.player = null;
tv.setBackgroundColor(Application.get().getResources().getColor(R.color.voice_state_normal_bg));
ContextConstant.PLAYER_ORDERID = null;
if (ContextConstant.VIV != null)
{
ContextConstant.VIV.setVoicePlayingBg();
}
ContextConstant.VIV = null;
ToolVoiceList.autoPlay();
}
});
mediaPlayer.setOnErrorListener(new OnErrorListener()
{
@Override
public boolean onError(MediaPlayer mp, int what, int extra)
{
isPlaying = false;
ToolShow.showShort("播放错误:错误类型:" + what + "错误码:" + extra);
tv.setBackgroundColor(Application.get().getResources().getColor(R.color.voice_state_normal_bg));
// tv.setText("播放语音");
return false;
}
});
} catch (Exception e)
{
e.printStackTrace();
}
}
"
异常信息呢,
而且Android自带的播放器功能有限,有些格式不标准,所以会出现这种情况
######回复 @九离天 : 好的,谢谢您了######回复 @海洋清风 : 1 Android自带的还有Audio Track ;2 极端点你可以自己编译ffmpeg或者libav;3 省事点你可以用 vitamio,ijk,Exo,vlc 等等现成的开源项目,不过这些项目不只有音频播放。 异常信息可能不在你的App那个log显示,在所有的那个logcat里。######这个没有报异常,就是有时候会出现这样的情况,请问如果不用MediaPlayer,那我应该用什么呢?"版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。