我的 SeekBar :
有以下代码setVolumeControlStream(AudioManager.STREAM_MUSIC);
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.dialog_root_element));
SeekBar volControl = (SeekBar)alert.findViewById(R.id.dialog_seekbar);
volControl.setMax(maxVolume);
volControl.setProgress(curVolume);
volControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar arg0) {
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
}
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, arg1, 0);
}
});
问题在于,当用户决定使用音量设备按钮时,我希望我的 SeekBar 也可以向上或向下。
实际上,使用此代码我可以正确控制两种方法(设备按钮和代码)的音量,但是当我使用音量设备按钮时,我的 SeekBar 是静态的。
有任何想法或建议吗?
谢谢!
答案 0 :(得分:1)
您可以通过阅读以下讨论来解决此问题。
Is there a listener to listen for changes in the volume in android?
Taking over the volume key on Android
希望这有帮助。
答案 1 :(得分:1)
检查以下答案:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
mediaVlmSeekBar = (SeekBar) findViewById(R.id.seekBar1);
int index = mediaVlmSeekBar.getProgress();
mediaVlmSeekBar.setProgress(index + 1);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
int index = mediaVlmSeekBar.getProgress();
mediaVlmSeekBar.setProgress(index - 1);
return true;
}
return super.onKeyDown(keyCode, event);
}