"Hold Down" de forma confiável?

Olá pessoal,

Tem uma característica no nosso Midlet que só é executado bem raramente (configurações avançadas) e gostaríamos de deixar isso um pouco escondido (para não poluir os menus e tudo mais).

Gostaríamos de que o usuário segurasse um botão X (provavelmente o 8) por alguns segundos e então iríamos para essa dela de configurações avançadas, fiz um teste BEM simples:

[code] int _iRepeatedKeyCounter = -1;

protected void keyPressed(int iKeyCode) {
   
    if (iKeyCode == 53)
        _iRepeatedKeyCounter = 0;
}

protected void keyRepeated(int iKeyCode) {
   
    if (iKeyCode == 53) {
        _iRepeatedKeyCounter += 1;
       
        if (_iRepeatedKeyCounter >= 10) {
            System.out.println("Do Stuff");
            _iRepeatedKeyCounter = 0;
        }
       
    }       
}

protected void keyReleased(int iKeyCode) {
   
    if (iKeyCode == 53)
        _iRepeatedKeyCounter = -1;

}[/code]

Estamos usando o 5 apenas por se tratar de um teste simples.

As dúvidas são:

  1. Todos os aparelhos que suportam MIDP 2.0 tem o keyRepeated()? Se sim, porque existe um método hasKeyRepeated() (ou algo assim)?
  2. O intervalo de tempo para disparar um keyRepeated() é padrão entre os fones, digamos, 0.5 segundos? Isso está na especificação?

Não estamos seguros se isso terá um comportamento adequado entre os fones ou se apenas trará mais dor de cabeça para gente.

Obrigado

[quote]boolean hasRepeatEvents()
Checks if the platform can generate repeat events when key is kept down.[/quote]

Pelo jeito, nem todas as plataformas geram esse evento. Não poderia utilizar o keyPressed e o keyReleased conjuntamente?? ao pressionar keyPressed, verifica a letra, e dispara um timer…quando chegar no tempo estipulado, se não tiver disparado o keyReleased, abre a janela de configuração. É só uma idéia…

Fernando Rosa

Ola Fernando,

Pensei nessa ideia tb, mas uma vez implementei tal ideia em uma outra plataforma e tive varios problemas. Mas voce me ajudou bastante me dizendo que nao da para confiar no KeyRepeatrd.

Um abraco