android 实现音量调节
程序员文章站
2022-05-29 21:10:17
...
音量调节的简单实现
一:注册广播
注册系统音量广播,这里采用动态注册方式
/**
* 动态注册广播
*
*/
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也更新
}
}
}