Android:注销相机按钮

标签 android camera

我尝试将一些操作绑定(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();
}

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

关于Android:注销相机按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/986602/

相关文章:

java - 如何在Mpandroid饼图中动态添加文本?

android - apk 到 dex 转换

javascript - 地理定位 Phonegap Android 不工作

java - 单元测试火后忘记方法

c++ - 相机跟随播放器opengl

linux - 从嵌入式设备上的摄像头流式传输视频的最佳方式是什么?

android - 约束布局中 0dp 的对话框布局高度不起作用

ios - 相机捕获经常使应用崩溃,没有任何线索

camera - Three.js 相机向上或向下倾斜并保持水平水平

python - 查找相机矩阵的翻译