Emuladores: como o programa vai rodar em cada aparelho?

Bom, agora que eu consegui fazer um primeiro programa j2me rodar em um aparelho “real”, aconteceu o que eu já imaginava: ele se comportou de forma totalmente diferente no emulador e no telefone, inclusive em relação às teclas. No emulador (eu usei o netbeans - wireless tookit), eu tinha dois comandos, cada um associado a um botão lateral do aparelho. Já no telefone (nokia 6600), o que eu encontrei foi um botão que abria um menu com as ações que eu tinha colocado, e o outro saída do aplicativo.

Imagno que para prever esse tipo de mudança de comportamento, eu tenha que usar emuladores mais específicos que o do wireless toolkit. Isso é verdade? Onde consigo isso? Vi, em um tópico, alguns links para emuladores, mas acabei não chegando a lugar algum…

Muito obrigado.

Olá!

Mas é exatamente essa a idéia das constantes da classe Command. Quando vc associa um command com a constante, Command.EXIT, o command será ajustado dinamicamente nocelular em questão colocando o command no lugar onde sempre apareece uma tecla para sair, e assim com todas as outras constantes.
Quando houver mais de um command para a mesma tecla, eles serão agrupados, em um menu.

Abraços!

É esse o ponto: no emulador estava cada comando em uma tecla. Já no aparelho, ambos foram levados para uma mesma tecla (com o nome Options) e um terceiro comando (Close) surgiu para a segunda tecla.

Isso ai pode ser implementa’`Ao do aparelho mesmo. Talvez para evitar que programas (que não possuam um comand.exit) façam com que trave o aparelho.

Infelizmente não há como se ter controle sobre isso. Não sei se o 6600 realmente faz isso ou se é algum problema no seu código, mas é possível!

Abraços!

Fala Chokito,

Os fabricantes de celulares implementam a JSR 118 - MIDP 2.0 (ou MIDP 1.0) no entanto não está especificado como os comandos devem ser organizados. Com certeza vc terá comportamentos diferentes pois são implementações diferentes para uma mesma especificação, no caso a implementação do MIDP.
Vc pode perguntar porque se isso não deveria ser especificado… mas a resposta eh bem simples: CustoXBeneficio. Não vejo a nescessidade de especificar uma API minuciosamente uma vez que a JSR em questão garante que sua aplicação funcionará em todos os celulares (claro que desde vc só utlize o MIDP). É uma implementação mais simples atende melhor as restrições de memória dos celulares.

fuiz
Alcides Flach