我尝试将一些操作绑定(bind)到相机按钮:
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 false;
}
});
但按下按钮应用程序崩溃,因为原始相机应用程序启动。
有谁知道如何防止相机应用程序在按下相机按钮时启动?
最佳答案
在您的示例中,您需要返回 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();
}
或(首选)将监听器放在顶级元素上(例如 LinearLayout
、RelativeLayout
等)。
关于Android:注销相机按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986602/