Android: Unregister câmera botão

votos
5

Eu tentei ligar algumas ações a um botão da câmera:

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

Pressionando o botão no entanto o aplicativo falha porque a aplicação original câmera começa.

Alguém sabe como evitar Camera início aplicação quando o botão da câmera é pressionada?

Publicado 12/06/2009 em 14:18
fonte usuário
Em outras línguas...                            


4 respostas

votos
6

No seu exemplo você precisa voltar truepara deixá-lo saber que você "consumido" o evento. Como isso:

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

Ele também só irá funcionar se o videoPreview(ou um elemento filho) tem o foco. Então, você poderia defini-lo para ter o foco por padrão:

@Override
public void onResume() {
    /* ... */
    videoPreview.requestFocus();
    super.onResume();
}

ou (preferido) colocar o ouvinte no elemento de nível superior (por ex. um LinearLayout, RelativeLayout, etc.).

Respondeu 13/06/2009 em 02:34
fonte usuário

votos
4

Assim que o botão da câmera é pressionada uma mensagem transmitida é enviada para todas as aplicações ouvindo. Você precisa fazer uso de receptores de radiodifusão e função abortBroadcast (). Você pode encontrar mais detalhes sobre isso no link abaixo

http://suhassiddarth.blogspot.com/

Respondeu 07/12/2010 em 18:43
fonte usuário

votos
3

uma maneira simples de desativar o botão da câmera (ou reagir em um clique) é adicionar o seguinte à sua atividade:

@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);
}
Respondeu 29/03/2010 em 17:30
fonte usuário

votos
2

Você esqueceu de voltar trueno seu caso KeyEvent.KEYCODE_CAMERAramo. Se você retornar verdadeiro, que os sinais para Android que você consumiu o evento chave, e a aplicação Câmara não deve ser lançado. Retornando false o tempo todo, todos os principais eventos são passados para cima para os manipuladores padrão.

Respondeu 13/06/2009 em 00:41
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more