В вашем примере вам нужно вернуть true
, чтобы сообщить, что вы «поглотили» событие. Как это:
videoPreview.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event){
if(event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_CAMERA:
//videoPreview.onCapture(settings);
onCaptureButton();
/* ... */
return true;
}
}
return false;
}
});
Это также будет работать только в том случае, если фокус имеет videoPreview
(или дочерний элемент). Таким образом, вы можете установить фокус по умолчанию:
@Override
public void onResume() {
/* ... */
videoPreview.requestFocus();
super.onResume();
}
или (предпочтительно) поместить слушателя в элемент верхнего уровня (например, a LinearLayout
, RelativeLayout
и т. Д.).