我有一个问题,AB快门(蓝牙)总是启动音量,而我想使用蓝牙键事件的其他东西。
但当我从设备的音量增大按钮出来的时候,我仍然希望音量增大能起作用。
我发现的解决方案是为了我的目的处理短事件——并且只允许在按下设备按钮超过一秒钟的情况下进行音量增大更改。
见代码:
boolean bVolumeUpKeyDown = false;
long StartDownMS = 0;
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int action = event.getAction();
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_UP) {
// my handling of keyevent
return true;
}
else if (action == KeyEvent.ACTION_DOWN) {
if(bVolumeUpKeyDown == false) {
bVolumeUpKeyDown = true;
StartDownMS = System.currentTimeMillis();
}
else if(System.currentTimeMillis() - StartDownMS > 1000)
return super.dispatchKeyEvent(event); // normal volume up handling
}
return true;
case KeyEvent.KEYCODE_ENTER:
if (action == KeyEvent.ACTION_UP) {
//my handling of second ab shutter button
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}