Android:取消注册相机按钮

Posted

技术标签:

【中文标题】Android:取消注册相机按钮【英文标题】:Android: Unregister camera button 【发布时间】:2010-11-02 11:07:58 【问题描述】:

我尝试将一些动作绑定到相机按钮:

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;
    
);

按下按钮后应用程序崩溃了,因为原来的相机应用程序启动了。

有谁知道如何防止按下相机按钮时启动相机应用程序?

【问题讨论】:

【参考方案1】:

在您的示例中,您需要返回 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();

或(首选)将监听器放在***元素上(例如LinearLayoutRelativeLayout 等)。

【讨论】:

【参考方案2】:

只要按下相机按钮,就会向所有监听它的应用程序发送一条广播消息。您需要使用广播接收器和 abortBroadcast() 函数。 您可以在以下链接中找到更多详细信息

http://suhassiddarth.blogspot.com/

【讨论】:

【参考方案3】:

禁用相机按钮(或对点击做出反应)的简单方法是将以下内容添加到您的活动中:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) 
    if (keyCode == KeyEvent.KEYCODE_CAMERA) 
        return true; // do nothing on camera button
    
    return super.onKeyDown(keyCode, event);

【讨论】:

【参考方案4】:

您忘记在您的情况下返回 true KeyEvent.KEYCODE_CAMERA 分支。如果您返回 true,则向 android 发出您已使用该键事件的信号,并且不应启动 Camera 应用程序。通过一直返回 false,所有关键事件都会向上传递给默认处理程序。

【讨论】:

以上是关于Android:取消注册相机按钮的主要内容,如果未能解决你的问题,请参考以下文章

Android ACTION_IMAGE_CAPTURE意图

Android从按钮打开相机

Android相机按钮半按监听器

如何从 webview 中的按钮启动相机 -Android

在android中单击相机后,无需按确定按钮即可从相机获取图像

Android:单击按钮时切换相机