Android Dev, Funcionalidade do volume na Activity

5 respostas
J

Estou com um problema, fiz um aplicativo que está usando os botões de volume como contador, os botões estão fazendo a contagem direitinho, porem ao mesmo tempo que fazem a contagem estão aumentando e diminuindo o volume, alguem sabe o codigo para desabilitar o controle de voluma na Activity???

5 Respostas

fabriciov

posta o código...

Em geral após capturar o botão é preciso fazer sair do método retornando true.
Override
public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            if (action == KeyEvent.ACTION_UP) {

            }
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            if (action == KeyEvent.ACTION_DOWN) {

            }
            return true;
        default:
            return super.dispatchKeyEvent(event);
        }
    }
Marky.Vasconcelos

A idéia dos booleans quando se está tratando eventos é que se você retornou true significa que voce “lidou” com ele, e quem despachou pode ter certeza que alguem fez algo com o evento, mas as vezes o parent ignora esse valor e executa seu codigo mesmo assim.

J

Este é o codigo para os botões de volume

/Função dos Botões de Volume
    @Override

    public boolean dispatchKeyEvent(KeyEvent event) {


        int action = event.getAction();

        int keyCode = event.getKeyCode();

        super.dispatchKeyEvent(event);

            switch (keyCode) {

            case KeyEvent.KEYCODE_VOLUME_UP:

           

                if (action == KeyEvent.ACTION_DOWN ) {

                	contador++;                                
                    mostra.setText("Contador: " + contador);

                }

                return super.dispatchKeyEvent(event);

            case KeyEvent.KEYCODE_VOLUME_DOWN:

                if (action == KeyEvent.ACTION_DOWN) {

                	contador--;                                
                    mostra.setText("Contador: " + contador);

                }

                return super.dispatchKeyEvent(event);

            default:

                return super.dispatchKeyEvent(event);
            }}



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    
}

os botões de funçao de fazer contagem positiva e negativa, ele está fazendo está contagem mas ao mesmo tempo está aumentando e diminuindo o volume, oque pode resolver???

A

Olá
Nos dois primeiros case´s não usa “return super.dispatchKeyEvent(event);” usa “return true;” como foi indicado pelo colega fabriciov.
No default, não chama o super, usa “return false;”

J

Obrigado pelo ajuda pessoal, funcionou direitinho :smiley:

Criado 4 de maio de 2013
Ultima resposta 8 de mai. de 2013
Respostas 5
Participantes 4