sexta-feira, 9 de novembro de 2012

Android e eventos

Olá a todos!!!

Antes de falar sobre o objetivo deste tópico, que é dar continuidade às explicações sobre como funciona o desenvolvimento de jogos para Android, gostaria de dar uma retrospectiva sobre o que foi dito até agora ao longo dos posts.

Primeiramente defini o objetivo deste blog: registrar o processo de desenvolvimento de um jogo para Android e um jogo para IOS.

Em seguida, retratei que iniciaria o desenvolvimento do projeto pelo Android e transpareci a ideia de criar um jogo baseado no já existente "Ceramic Destroyer".

Em seguida, apresentei um overview da linguagem Java e a IDE Eclipse e, por último, iniciei as postagens sobre o funcionamento da Android SDK e seu desenvolvimento utilizando emuladores e dispositivos externos.

Neste post, falarei darei continuidade ao post anterior.

Vamos continuar pelo tratamento de eventos. O Android possui tratamento de eventos de teclado (keyboard), touch screen (single-toach e multi-toach), acelerômetro, giroscópio, termômetro, bluetooth, e muitos outros.

A parte de teclado é na verdade bem trivial. Basicamente, devemos implementar uma classe que implementa um listener para o teclado e o Android trata de nos avisar quando alguma coisa foi pressionada ou liberada, bastando para nós tratar esse evento da maneira que desejarmos. 
O problema realmente foi o novo ADT (Android Development Tool) que foi lançado trazendo terríveis erros aos códigos legados do ADT anterior, além de bugs no emulador. Dentre as alterações mais chatas no emulador, esta o teclado. Basicamente, no antigo ADT era possível utilizar as teclas do teclado no computador para testar as funcionalidades do teclado e isso foi removido. Também, o teclado emulado que fica presente na parte direita do emulador não está funcionando. Esses detalhes tornam pouco interessante a programação de funcionalidades usando o keyboard sem ter um dispositivo externo com teclado para testar essas funcionalidades (não foi o meu caso).

Com relação aos recursos de touch screen, devemos nós desenvolvedores nos precaver na programação para que nosso código identifique dinamicamente se o dispositivo alvo suporta multi-touch. De resto, a programação é semelhante ao teclado.

Um ponto interessante a se destacar na programação de códigos multi-touch é a dificuldade em se captar esses eventos. O livro "Beginning Android 4 Games Development" trás alguns tópicos interessantes a respeito do tratamento desses eventos. O Android não oferece maneiras interessantes de captar qual foi o dedo que teve um evento na tela. Esse problema se agrava principalmente quando queremos saber qual, dentre os 10 dedos que estão na tela, realmente se moveu.
A solução envolve um escovamento dos bits do evento para saber qual foi o índice em que ocorreu o evento. Um ponto a se considerar também é que o livro acima citado trás uma solução diferente de sua versão anterior (chamada de Beginning Android Games), mas os mesmos comentários da versão anterior para o código se mantêm, o que torna extremamente confuso o entendimento de como funciona o tratamento de eventos multi-touch.

Dentre os demais eventos tratáveis, falarei do Acelerômetro, pois foi o último que estudei e implementei. Esta funcionalidade é tão trivial quanto os demais tratamentos de eventos. Um aspecto interessante da programação envolvendo acelerômetro é um método misterioso (MAIS UM???) que devemos implementar para utilizar o acelerômetro. Acontece que devemos implementar a interface SensorEventListener para receber os eventos deste sensor, e nela existe um método que nunca é chamado (onAccuracyChanged(Sensor sensor, int accuracy)). Essa interface será utilizada para qualquer outro tipo de sensor (giroscópio, termômetro,...)

Por hora é só. No próximo post estarei falando sobre como se desenham gráficos usando Android. Até mais!

Nenhum comentário:

Postar um comentário

Obrigado por deixar a sua participação!