标签:
Android中的音乐媒体播放 Mediaplayer类,定义如下
final MediaPlayer mpRain = MediaPlayer.create(this,R.raw.rain);
文件为 res/raw/rain.mp3 //raw在Androidstudio中我自己创建的
我自己在这里的用法是只有一个按钮,单击使用,如果在播放就停止,否则开始播放,附上代码
1 mpRain.setLooping(true); 2 buttonRain.setOnClickListener(new Button.OnClickListener() { 3 @Override 4 public void onClick(View v) { 12 if (isRain == false) { 13 try { 14 if (mpRain != null) { 15 mpRain.stop(); 16 } 18 mpRain.prepare(); 19 mpRain.start(); 20 isRain = true; 21 Snackbar.make(v, "Rain start", Snackbar.LENGTH_LONG) 22 .setAction("Action", null).show(); 23 } catch (Exception e) { 24 Snackbar.make(v, "Rain Exception 1", Snackbar.LENGTH_LONG) 25 .setAction("Action", null).show(); 26 } 27 } else { 28 try { 29 if (mpRain != null) { 31 mpRain.stop(); 34 Snackbar.make(v, "Rain stop", Snackbar.LENGTH_LONG) 35 .setAction("Action", null).show(); 36 } 37 } catch (Exception e) { 38 Snackbar.make(v, "Rain Exception 2", Snackbar.LENGTH_LONG) 39 .setAction("Action", null).show(); 40 } 41 isRain = false; 42 } 43 } 44 });
其中mpRain.start()类似的还有pause(),release()等等,建议一定要去看一下Mediaplayer的文档,有详细的解释,另外还有让音乐播放进行循环的
mpRain.setLooping(true);
另外有需要重写的方法我这里不需要就没有进行重写
1 /* 当MediaPlayer.OnCompletionLister会运行的Listener 2 mp.setOnCompletionListener( 3 new MediaPlayer.OnCompletionListener() 4 { 5 // @Override 6 /*覆盖文件播出完毕事件 7 public void onCompletion(MediaPlayer arg0) 8 { 9 try 10 { 11 /*解除资源与MediaPlayer的赋值关系 12 * 让资源可以为其它程序利用 13 mp.release(); 14 /*改变TextView为播放结束 15 tv.setText("音乐播发结束!"); 16 } 17 catch (Exception e) 18 { 19 tv.setText(e.toString()); 20 e.printStackTrace(); 21 } 22 } 23 }); 24 25 /* 当MediaPlayer.OnErrorListener会运行的Listener 26 mp.setOnErrorListener(new MediaPlayer.OnErrorListener() 27 { 28 @Override 29 /*覆盖错误处理事件 30 public boolean onError(MediaPlayer arg0, int arg1, int arg2) 31 { 32 // TODO Auto-generated method stub 33 try 34 { 35 /*发生错误时也解除资源与MediaPlayer的赋值 36 mp.release(); 37 tv.setText("播放发生异常!"); 38 } 39 catch (Exception e) 40 { 41 tv.setText(e.toString()); 42 e.printStackTrace(); 43 } 44 return false; 45 } 46 }); 47
控制尽量部分采用了一个seekbar,根据get到的值设置mp的音量,用到的方法为 mpRain.setVolume(float left,float right)
1 seekbarRain.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() //调音监听器 2 { 3 public void onProgressChanged(SeekBar arg0, int progress, boolean fromUser) { 4 // 5 //buttonRain.setText(seekbarRain.getProgress()); 6 7 //int tempvol = seekbarRain.getProgress(); 8 //float tempvolF = tempvol/10.0f; 9 mpRain.setVolume(seekbarRain.getProgress()/10.0f, seekbarRain.getProgress()/10.0f); 10 //Log.i("seek", "seekbarRain.getProgress()" + tempvolF); 11 //mpRain.setVolume(seekbarRain.getProgress()/10,seekbarRain.getProgress()/10); 12 13 } 14 15 @Override 16 public void onStartTrackingTouch(SeekBar seekBar) { 17 // TODO Auto-generated method stub 18 19 } 20 21 @Override 22 public void onStopTrackingTouch(SeekBar seekBar) { 23 // TODO Auto-generated method stub 24 25 26 } 27 });
setVolume方法的两个参数左右暂时还是没有查到用法与区别,现在实验得到的结果是设为同一个值可以直接设定音量值
Android|媒体|播放和音量调节|seekbar|mediaplayer
标签:
原文地址:http://www.cnblogs.com/kakinuma/p/5107460.html