android MediaPlayer 播放音频文件的时候,有
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,那我应该用什么呢?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。