case R.id.btnYinLiangPlus://音量加
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI); // 调高声音
Log.e("HUXI", "----listener----YinLiang---YES");
break;
case R.id.btnYinLiangMoins://音量减
mAudioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC,
AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);// 调低声音
Log.e("HUXI", "----listener----YinLiang---NO");
break;
我是在onClick中做的操作,所以点一下就会就会刷新调用系统的音量条,点一下闪一下,但是我要的不是这样的,我要的是那种就像手机的上下键调节音量大小一样,连续点或者在几秒之内点是不闪的,求教各位大神,帮忙解决一下!!!!
你可以自定义进度条, AudioManager.FLAG_SHOW_UI换成其他类型。
xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
android:id="@+id/activity_volume"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="增大"/>
<Button
android:id="@+id/down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="减小"/>
<ProgressBar
android:id="@+id/progress"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_20dp"
style="?android:attr/progressBarStyleHorizontal" />
manifest.xml权限:
activity:
public class VolumeActivity extends Activity implements View.OnClickListener {
private Button down;
private Button up;
private ProgressBar progressBar;
private int maxVolume; // 最大音量值
private int curVolume; // 当前音量值
private int stepVolume; // 每次调整的音量幅度
private AudioManager audioManager; // 音频管理器
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_volume);
initView();
initData();
}
private void initView() {
down = (Button) findViewById(R.id.down);
up = (Button) findViewById(R.id.up);
down.setOnClickListener(this);
up.setOnClickListener(this);
progressBar = (ProgressBar) findViewById(R.id.progress);
}
private void initData(){
audioManager = (AudioManager)getApplicationContext().getSystemService(Service.AUDIO_SERVICE);
// 获取最大音乐音量
maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
// 初始化音量大概为最大音量的1/2
curVolume = maxVolume / 2;
// 每次调整的音量大概为最大音量的1/10
stepVolume = maxVolume / 10;
//设置进度条
progressBar.setMax(maxVolume);
progressBar.setProgress(curVolume);
}
/**
* 调整音量
*/
private void adjustVolume() {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, curVolume,
AudioManager.FLAG_VIBRATE);
}
@Override
public void onClick(View v) {
int id = v.getId();
switch (id) {
case R.id.up://按下增大音量按钮
curVolume += stepVolume;
if (curVolume >= maxVolume) {
curVolume = maxVolume;
}
progressBar.setProgress(curVolume);
break;
case R.id.down://按下减小音量按钮
curVolume -= stepVolume;
if (curVolume <= 0) {
curVolume = 0;
}
progressBar.setProgress(curVolume);
break;
default:
break;
}
// 调整音量
adjustVolume();
}
}