您的位置:首页 > 其它

MediaPlayer--点击按钮,播放语音

2016-03-17 09:28 232 查看
  项目中有个需求是,点击button按钮,加载网络语音并且播放,之前没用过MediaPlayer,但是需求很简单,也不是很难,在此记录一下,第一次用MediaPlayer.

 1.首先在布局中放一个button按钮,id=btn_playVioce_o,可以给按钮加上文字,例如仿微信那种“ 7' ”显示语音的长度,布局很简单,这里就不放demo了

  


2.初始化MediaPlayer

  private MediaPlayer mediaPlayer;
在activity的onCreate()方法中初始化

<span style="white-space:pre"> </span>mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);//设置媒体流类型
mediaPlayer.setOnPreparedListener(this);

使当前activity implements MediaPlayer.OnPreparedListener
重写方法:

@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}

注意在activity的onDestroy()方法中关闭mediaPlayer
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer = null;
}
}

3.给btn_playVioce_o设置onclickListener,注意要另开线程,防止ui阻塞

case R.id.btn_playvoice_o:

if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
return;
} else {
new Thread(new Runnable() {

@Override
public void run() {
//playUrl("http://hooshine.b0.upaiyun.com/201511/UXSLFWTF.aac");
playUrl(entity.getConditionSound());
}
}).start();
}
break;

其中playUrl()方法如下:
//播放语音
public void playUrl(String url) {
try {
mediaPlayer.reset();
mediaPlayer.setDataSource(url);
mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

ok,结束!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  MediaPlayer