注:这里只是根据自己做的一个应用中用到了音频播放,引用的代码,所以显示的代码不完整
对于音视屏的开发,可以参照Geogle官方API文档,下面是开发的流程图:
效果如下:
好了,下面贴代码
private void playMusic() {
//播放前判断播放的状态
if (mMediaPlayer == null) {
mMediaPlayer = new MediaPlayer();
mMediaPlayer.reset();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
String path = "http://192.168.33.44:8080/zbc.mp3";
try {
mMediaPlayer.setDataSource(path);
} catch (IllegalArgumentException | SecurityException | IllegalStateException | IOException e) {
e.printStackTrace();
}
mMediaPlayer.prepareAsync();
PrePareListener prePareListener = new PrePareListener();
mMediaPlayer.setOnPreparedListener(prePareListener);
}
if (isPlaying) {
//正在播放时暂停播放
mMediaPlayer.pause();
isPlaying = false;
}else {
//处于未播放状态时
//1.播放已结束或尚未开始
mMediaPlayer.start();
isPlaying = true;
//2.处于暂停状态
}
}
class CompletionListener implements OnCompletionListener{
/**
* 音乐播放完毕的回调
*/
@Override
public void onCompletion(MediaPlayer mp) {
// 播放完成后,停止播放
mMediaPlayer.stop();
isPlaying = false;
mIv_play.setImageResource(R.drawable.a_bofang);
mMediaPlayer.release();
mMediaPlayer = null;
}
}
class PrePareListener implements OnPreparedListener{
/**
* 开始准备播放音乐的回调
*/
@Override
public void onPrepared(MediaPlayer mp) {
mMediaPlayer.start();
isPlaying = true;
CompletionListener completListener = new CompletionListener();
mMediaPlayer.setOnCompletionListener(completListener );
}
}
最后,最好在activity或Fragment对应的生命周期方法中,去调用stop()和start(),以便实现多种功能需求