今天介绍一下音乐播放器的声音控制逻辑,安卓没接触多久,不对的地方忘大神指出,适用于初学者。
首先,我们需要一个类AudioManager此类为管理器,来控制音量,下面是需要定义的变量
AudioManager am;//管理器控制音量
SeekBar seekBar_time,seekBar_listen;//时间进度条,声音进度条
int maxVolume =50;//最大音量
int curVolume =20;//当前音量
int stepVolume =0;//每次调整的音量幅度
TextView mAddVolume,mLessVolume;//加减音乐
第二部实例化此类控件
seekBar_listen =(SeekBar)findViewById(R.id.sb_volume);
mAddVolume = (TextView) findViewById(R.id.tv_add_volume);
mLessVolume = (TextView) findViewById(R.id.tv_less_volume);
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
maxVolume =am.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
curVolume =maxVolume/2;
stepVolume =maxVolume/6;
seekBar_listen.setMax(maxVolume);
seekBar_listen.setProgress(curVolume);
第三部控制音量大小及Seekbar的逻辑
/**
* 声音seekbar监听调节音量
*/
seekBar_listen.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
curVolume =seekBar_listen.getProgress();
adjustVolume();
}
});
}
/**
* 加大音乐
*/
public void addVolume(View view){
curVolume+=stepVolume;
if(curVolume>=maxVolume){
curVolume = maxVolume;
}
seekBar_listen.setProgress(curVolume);
adjustVolume();
}
/**
* 减小音乐
*/
public void lessVolume(View view){
curVolume-=stepVolume;
if(curVolume<=0){
curVolume = 0;
}
seekBar_listen.setProgress(curVolume);
adjustVolume();
}
/**
* 调整音量
*/
private void adjustVolume(){
am.setStreamVolume(AudioManager.STREAM_MUSIC,curVolume,AudioManager.FLAG_PLAY_SOUND);
}
以下是音量控制界面