码迷,mamicode.com
首页 > 移动开发 > 详细

Android|媒体|播放和音量调节|seekbar|mediaplayer

时间:2016-01-06 21:57:33      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!