我正在创建一个扩展surfaceview的自定义小部件,并计划将其用于相机预览。
在主活动中,我尝试实现一些事件侦听器,但无法捕获任何事件。
这是我试图添加事件侦听器的代码部分:
videoPreview = (CaptureView)findViewById(R.id.capturePreview);
videoPreview.setOnKeyListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event){
switch(keyCode)
{
case KeyEvent.KEYCODE_CAMERA:
videoPreview.TakePicture();
return true;
}
return false;
}
});
如果我按下一个按钮,logcat就会输出“continuous to wait key to be dispatched”行。
有人知道如何使用surfaceview类在主活动中实现事件侦听器吗?
谢谢!
最佳答案
我不确定这是否是你想要的答案,但也许值得一试。
特定视图的OnKeyListener
只有在该视图具有焦点时按下该键时才会调用。您可以尝试确保它的重点是:
videoPreview.requestFocus();
或者将
OnKeyListener
放在包含所有其他内容(包括LinearLayout
)的布局上(例如CaptureView
)。类似于:LinearLayout ll = (LinearLayout) findViewById(R.id.VideoContainer);
ll.setOnClickListener(new OnKeyListener(){
public boolean onKey(View v, int keyCode, KeyEvent event) {
// ...
}
);