【发布时间】:2014-01-10 08:58:47
【问题描述】:
如何将硬件设备按钮与用于音量的搜索栏连接起来? 所以每次我点击硬件按钮例如增加音量时,Seek Bar 也会增加,反之亦然
public void initControls()
{
try
{
volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
volumeSeekbar.setMax(audioManager
.getStreamMaxVolume(AudioManager.STREAM_MUSIC));
volumeSeekbar.setProgress(audioManager
.getStreamVolume(AudioManager.STREAM_MUSIC));
volumeSeekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener()
{
@Override
public void onStopTrackingTouch(SeekBar arg0)
{
}
@Override
public void onStartTrackingTouch(SeekBar arg0)
{
}
@Override
public void onProgressChanged(SeekBar arg0, int progress, boolean arg2)
{
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
progress, 0);
}
});
}
catch (Exception e)
{
e.printStackTrace();
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
int index = seekbar1.getProgress();
seekbar1.setProgress(index + 1);
return true;
} else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
int index = seekbar1.getProgress();
seekbar1.setProgress(index - 1);
return true;
}
return super.onKeyDown(keyCode, event);
}
这是编辑后的代码,我收到错误类型对象的 onKeyDown (int, keyEvent) 方法未定义。
【问题讨论】:
-
嘿,伙计,请把这段代码写出当前块......使搜索栏全局并相应地访问那里的值......你为什么在 setOnSeekBarChangeListener 中使用键事件......请把代码写在外面其中...以与生命周期方法平行的方式编写
-
公共类 MainActivity 扩展 Activity { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { super.onKeyDown(keyCode, event); if (keyCode == KeyEvent.KEYCODE_BACK) { // 你的代码在这里返回 true; } 返回假; } }
-
它应该在主要活动里面...
-
请把代码写在外面,...它会工作的
-
嘿伙计,我这样做了,它没有给我任何代码错误,但是当我使用手机上的任何硬件按钮时,应用程序崩溃了。这是 logcat:prntscr.com/2i2nch
标签: android button hardware volume seekbar