android 实现音量调节
16lz
2021-01-23
音量调节的简单实现
一:注册广播
注册系统音量广播,这里采用动态注册方式
/** * 动态注册广播 * */ 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也更新 } } }
更多相关文章
- 深入理解Android消息处理系统 Handler
- android 跳转到系统相关应用的方法
- Android调用系统相机拍摄视频以及获取缩略图
- Android Donut 系统烧写到开发板,脱离NFS启动
- 文件系统中的保留空间
- Android中调用系统函数查找联系人
- android 改变系统默认动态壁纸
- 【Android】遍历系统中所有应用程序