Capturar teclas especiais na Canvas

Estou portando um aplicativo para Canvas. Para isso preciso tratar as ações de quando as teclas especiais são pressionadas. Quando digo teclas especiais estou me referindo às mesmas teclas que disparam os eventos dos Commands da GUI de alto nível.

No entanto, os códigos de tais teclas varial entre os dispositivos. Nos Nokias, por exemplo, o código é -6 e -7 enquanto nos Motorolas é -21 e -22. E acontece de o codigo de uma tecla em um celular ser o código de outra tecla totalmente diferente em outro celular.

Já quebrei a cabeça com isso e vim apelar ao fórum :D, alguém sabe como tratar este problema? Alguém que já fez algo parecido tem alguma sugestão de como tratar estas teclas em Canvas?

Abraço.

As únicas teclas que você pode saber os códigos são as teclas do Joystick.

Você pode fazer uma “mapa” de teclas para cada grupo de modelo de device que você sabe que a aplicação rodará. Cada grupo, logicamente, tem os códigos das teclas iguais. Na aplicação você identifica o grupo que está sendo usado.

Existe outra saída. Mas isso é para ser usado apenas se sua aplicação for usada num número muito grande de devices diferentes, e você não saiba os códigos das teclas deles. Quando a aplicação for iniciada pela primeira vez, você pede para o usuário pressionar “3X” seguidas a tecla que você precisa descobrir o codigo. E grava o código no RMS.

Eu nunca usei, mas você pode usar Command em Canvas também.

Entendi… vou fazer o mapa de teclas, no meu caso parece ser a melhor saída. Os códigos das teclas do Joystick também variam =-/. Você sabe como poso identificar o aparelho que está sendo utilizado?

Utilizar os Commands seria inviável pois a aplicação acabaria tendo a mesma cara de antes, pois ela esta em CustomItem. A ideia é perssonalizar graficamente os botões.

Se nada der certo terie mesmo que fazer uma versão do aplicativo para cada grupo de aparelhos.

Valeu.

Para pegar os códigos do JoyStick use algo como:

void keyPressed(int keyCode) {
    if (keyCode == getKeyCode(Canvas.LEFT)) {
        //Pressionou a esquerda :)
    }
}

Para identificar o grupo de aparelho em questão, seria melhor criar uma tela de início, em Canvas, apenas mostrando o nome da aplicação e o logo da empresa. Como uma tela de apresentação. Ela teria apenas um comando, na direita, chamado Entrar. Quando o usuário pressionasse esse comando, você saberia o código da tecla da direita, e assim, consequentemente, o da esquerda e de todas as outras. Com apenas a tecla da direita você já saberia o grupo de modelos, não?

Nunca usei os commands em Canvas. Mas talvez o device não pinte os comandos. Seria ótimo se não pintar. Dê uma olhada, faça um teste.

[quote=npereirajr]Para pegar os códigos do JoyStick use algo como:

void keyPressed(int keyCode) {
    if (keyCode == getKeyCode(Canvas.LEFT)) {
        //Pressionou a esquerda :)
    }
}

Para identificar o grupo de aparelho em questão, seria melhor criar uma tela de início, em Canvas, apenas mostrando o nome da aplicação e o logo da empresa. Como uma tela de apresentação. Ela teria apenas um comando, na direita, chamado Entrar. Quando o usuário pressionasse esse comando, você saberia o código da tecla da direita, e assim, consequentemente, o da esquerda e de todas as outras. Com apenas a tecla da direita você já saberia o grupo de modelos, não?

Nunca usei os commands em Canvas. Mas talvez o device não pinte os comandos. Seria ótimo se não pintar. Dê uma olhada, faça um teste.[/quote]

Boa dica, vou testar a sua sugestão.

Usando Commands em canvas ele pinta o comando sim, só que se eu colocar o Canvas em FullScreen aí ele não pinta, ou pinta e não aparece pois a tela fica full screen.

Valeu! :smiley:

[quote=npereirajr]Para pegar os códigos do JoyStick use algo como:

void keyPressed(int keyCode) {
    if (keyCode == getKeyCode(Canvas.LEFT)) {
        //Pressionou a esquerda :)
    }
}

Para identificar o grupo de aparelho em questão, seria melhor criar uma tela de início, em Canvas, apenas mostrando o nome da aplicação e o logo da empresa. Como uma tela de apresentação. Ela teria apenas um comando, na direita, chamado Entrar. Quando o usuário pressionasse esse comando, você saberia o código da tecla da direita, e assim, consequentemente, o da esquerda e de todas as outras. Com apenas a tecla da direita você já saberia o grupo de modelos, não?

Nunca usei os commands em Canvas. Mas talvez o device não pinte os comandos. Seria ótimo se não pintar. Dê uma olhada, faça um teste.[/quote]

Minha duvida é bem por ai, como faria para chamar a tela em Canvas mostrando este código do botão?