| | |
| | | |
| | | private String audio = "";//音源 |
| | | |
| | | private boolean isPause = false; //是否暂停,解决循环播放时资源文件prepare异步产生的暂停失败问题 |
| | | |
| | | /** |
| | | * 文件存储默认sdcard/record |
| | | */ |
| | |
| | | */ |
| | | public void startPlayMusic(Context context, String filePath) { |
| | | if (mMediaPlayer != null) { |
| | | stopPlayMusic(); |
| | | stopPlayMusic(false); |
| | | } |
| | | mMediaPlayer = new MediaPlayer(); |
| | | mMediaPlayer.setVolume(volume,volume); |
| | | isPause = false; |
| | | try { |
| | | Log.e("mmp", "path:" + filePath); |
| | | Log.e("mmp", "开始播放 path:" + filePath); |
| | | mMediaPlayer.setDataSource(context, Uri.parse(filePath)); |
| | | mMediaPlayer.prepareAsync(); |
| | | mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { |
| | |
| | | mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { |
| | | @Override |
| | | public void onCompletion(MediaPlayer mp) { |
| | | stopPlayMusic(); |
| | | stopPlayMusic(true); |
| | | // BaseEvent baseEvent = new BaseEvent(BaseEvent.SEND_AODIO_PLAY_OVER); |
| | | // baseEvent.setMsg(filePath); |
| | | // EventBus.getDefault().post(baseEvent); |
| | |
| | | */ |
| | | public void loopPlayMusic(Context context, String filePath) { |
| | | if (mMediaPlayer != null) { |
| | | stopPlayMusic(); |
| | | stopPlayMusic(false); |
| | | } |
| | | mMediaPlayer = new MediaPlayer(); |
| | | mMediaPlayer.setVolume(volume,volume); |
| | | isPause = false; |
| | | try { |
| | | Log.e("mmp", "path:" + filePath); |
| | | Log.e("mmp", "循环播放 path:" + filePath); |
| | | mMediaPlayer.setDataSource(context, Uri.parse(filePath)); |
| | | mMediaPlayer.prepareAsync(); |
| | | mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { |
| | |
| | | mMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { |
| | | @Override |
| | | public void onCompletion(MediaPlayer mp) { |
| | | Log.e("mmp", "播放完成 从新循环 path:" + filePath); |
| | | mMediaPlayer.start(); |
| | | if (isPause){ |
| | | Log.e("mmp", "循环播放异步暂停"); |
| | | mMediaPlayer.pause(); |
| | | } |
| | | } |
| | | }); |
| | | |
| | |
| | | public void pause(){ |
| | | if (mMediaPlayer != null) { |
| | | mMediaPlayer.pause(); |
| | | isPause = true; |
| | | } |
| | | } |
| | | |
| | | public void resume(){ |
| | | if (mMediaPlayer != null) { |
| | | mMediaPlayer.start(); |
| | | isPause = false; |
| | | } |
| | | } |
| | | |
| | | public void seekTo(int now){ |
| | | if (mMediaPlayer != null) { |
| | | mMediaPlayer.seekTo(now*1000); |
| | | } |
| | | } |
| | | |
| | |
| | | return 0; |
| | | } |
| | | |
| | | //结束录音播放 |
| | | public void stopPlayMusic() { |
| | | |
| | | /** |
| | | * 结束录音播放 |
| | | * @param needCallback true真实结束 才走结束回调,为了切换下一首而结束的 不调结束回调 |
| | | */ |
| | | public void stopPlayMusic(boolean needCallback) { |
| | | if (mMediaPlayer == null) |
| | | return; |
| | | try { |
| | | mMediaPlayer.stop(); |
| | | mMediaPlayer.release(); |
| | | mMediaPlayer = null; |
| | | if (audioStatusUpdateListener != null) |
| | | if (audioStatusUpdateListener != null&&needCallback) |
| | | audioStatusUpdateListener.onFinishPlay(); |
| | | } catch (IllegalStateException e) { |
| | | e.printStackTrace(); |
| | |
| | | */ |
| | | public int getMusicTime(Context context, String filePath) { |
| | | if (mMediaPlayer != null) { |
| | | stopPlayMusic(); |
| | | stopPlayMusic(false); |
| | | } |
| | | mMediaPlayer = new MediaPlayer(); |
| | | try { |