Android音量seekbar制作

很多音乐播放器界面上都有一个音量seekbar,那么在android里面是如何实现的呢?

   首先分析下要解决的问题:1.获取媒体播放的音量。

               2.通过seekbar可以增减音量

               3.用户按下音量键增减音量,seekbar保持同步

   对于第一个问题:Android系统提供AudioManager类来获得系统audio服务。

   对于第二个问题:实现seekBarChangeLIstener里面onProgressChanged方法。

    对于第三个问题:用线程来同步更新UI。

   设置音量的代码:

  
  
1 private void setVolum() 2 { 3 4 maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); 5 volSeekBar.setMax(maxVolume); 6 currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 7 volSeekBar.setProgress(currentVolume); 8 mVolume.setText(currentVolume * 100 / maxVolume + " " ); 9 }

    实现seekbar控制音量代码:

  
  
OnSeekBarChangeListener seekBarChangeListener = new OnSeekBarChangeListener() { public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // TODO Auto-generated method stub mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0 ); } public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } public void onStopTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } };

    线程更新UI代码:

  
  
1 Handler myHandler = new Handler(){ 2 public void handleMessage(Message msg) {  3 switch (msg.what) {  4 case PROGRESS_CHANGED:  5 setVolum();  6 /*sendEmptyMessageDelayed(PROGRESS_CHANGED, 200);*/ 7 break; 8 } 9 } 10 }; 11  12  class myVolThread implements Runnable {  13 public void run() {  14 while (!Thread.currentThread().isInterrupted()) {  15  16 Message message = new Message();  17 message.what =PROGRESS_CHANGED;  18 MainActivity.this.myHandler.sendMessage(message);  19 try {  20 Thread.sleep(100);  21 catch (InterruptedException e) {  22 Thread.currentThread().interrupt();  23 24 25 26 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值