android 实现音量调节

                                音量调节的简单实现

这里写图片描述
一:注册广播
注册系统音量广播,这里采用动态注册方式

 /**
     * 动态注册广播
     * 
     */
    private void myRegisterReceiver() {
        MyVolumeReceiver mVolumeReceiver = new MyVolumeReceiver();
        IntentFilter filter = new IntentFilter();//new一个过滤器
        filter.addAction("android.media.VOLUME_CHANGED_ACTION");//添加Action(添加一个声音广播)
       /*
       参数一:BroadcastReceiver(自定义一个),用于接收到广播所做操作
       参数二:过滤器
        */
        registerReceiver(mVolumeReceiver, filter);//注册广播接收器
    }

二:获得一个audioManager

audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);

三:获得系统最大音量值和当前音量值

maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);  //获取系统最大音量

currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);  //获取当前值

四:将最大音量值和当前音量值设置到seekBar

sound_progressBar.setMax(maxVolume);//把seekbar的最大值设为 系统最大音量

sound_progressBar.setProgress(currentVolume);//设置当前音量所占进度

五:(seekBar)音量条的拖动监听

  //音量条的拖动监听
        sound_progressBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {//音量滑动监听

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                                          boolean fromUser) {
                /*
                 参数1:声音类型,可取为STREAM_VOICE_CALL(通话)、STREAM_SYSTEM(系统声音)、STREAM_RING(铃声)、STREAM_MUSIC(音乐)、STREAM_ALARM(闹铃声)
                 参数2:调整音量大小值(把seekBar拖动到的进度值设为音量值)
                 参数3:可选的标志位
                 */
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);//直接设置音量大小

            }
        });

六:音量+,音量- 的监听

//音量减的监听
        ib_soundLess.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume-2, 0);//直接设置音量大小
            }
        });
        //音量加的监听
        ib_soundplus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume+2, 0);//直接设置音量大小
            }
        });

七:广播的处理操作


    private class MyVolumeReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            //如果音量发生变化则更改seekbar的位置
            if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) {
                currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);// 当前的媒体音量
                sound_progressBar.setProgress(currentVolume);//系统音量发生改变时,seekbar也更新
            }
        }
    }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值