我想创建一个照片/视频捕获应用程序。
我已经创建了一个扩展SurfaceView的CaptureView类,并将其放在主窗体中。
main窗体的活动具有创建菜单的onCreateOptionsMenu()方法。菜单运行得很好,但随后我尝试实现了一个onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(event.getAction() == KeyEvent.ACTION_DOWN) {
switch(keyCode) {
case KeyEvent.KEYCODE_CAMERA:
videoPreview.TakePicture();
return true;
}
}
return super.onKeyDown(keyCode, event);
}菜单不再出现,并且该方法不能捕获onKeyDown事件。
有没有人知道这个问题的原因?
发布于 2009-09-13 14:02:09
我发现我为所有事件都返回了true,而我应该只为我正在使用的代码返回它。我将返回true移到了if语句的作用域内,并返回了false,否则将返回菜单!
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
if (keyCode == KeyEvent.KEYCODE_BACK) {
dba.close();
Intent result = new Intent("Complete");
setResult(Activity.RESULT_OK, result);
finish();
return true;
}
return false;
}发布于 2009-11-30 18:15:17
我遇到了类似的问题,并通过添加
this.requestFocus();
this.setFocusableInTouchMode(true);在我的SurfaceView子类的构造函数中。
发布于 2010-06-15 22:42:41
我解决了删除if语句的问题,如下所示:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch(keyCode)
{
case KeyEvent.KEYCODE_CAMERA:
videoPreview.TakePicture();
return true;
}
return super.onKeyDown(keyCode, event);
}https://stackoverflow.com/questions/974680
复制相似问题