Usando acelerômetro com Corona SDK

Jet-Car-Stunts

Uma das coisas mais legais que temos nos smartphones da atualidade é o recurso de acelerômetros. Segundo a Wikipedia:

“Acelerômetros são dispositivos que podem funcionar a partir de diversos efeitos físicos e tem, portanto, uma ampla faixa de valores de aceleração que são capazes de medir, logo tem uma gama de aplicações bastante elevada. Esses dispositivos são usados principalmente em sistemas de posicionamento, sensores de inclinação, bem como sensores de vibração. Uma aplicação bastante conhecida de acelerômetros são as telas de aparelhos celulares que se ajustam de acordo com o ângulo que fazem em relação à aceleração da gravidade.”

Resumindo, é o recurso dos smartphones modernos que permite aos apps saberem quando você está com o telefone inclinado, de cabeça para baixo, etc, para fornecer efeitos interessantes como jogos e apps sensíveis à posição do aparelho. Muito explorado na área de jogos, onde a física tem um papel muito importante, veremos hoje como usá-lo em seus apps criados com Corona SDK, meu framework de desenvolvimento mobile multi-plataforma favorito.

phaze

Eventos do Acelerômetro

o evento accelerometer retorna muitos valores úteis, incluindo:

  • event.name — Esta propriedade sempre será “accelerometer”.
  • event.isShake — Esta propriedade será true se um movimento rápido do dispositivo foi detectado.
  • event.xGravity / event.yGravity / event.zGravity — Estes eventos são provavelmente os mais úteis. Eles são normalizados, então você terá um valor entre -1.0 e 1.0. Estes valores também são suavizados para ajustar-se à micro movimentos e prevenir ações burras.
  • event.xInstant, event.yInstant, event.zInstant — Estes valores reportam a alteração desde o último evento, por exemplo a event.xGravity atual menos a última event.xGravity.
  • event.xRaw, event.yRaw, event.zRaw — Estes valores são os valores atuais do dispositivo (sem filtro ou suavização aplicadas).
  • event.deltaTime — Eventos do acelerômetro que chegam em intervalos previsíveis de tempo baseado no valor da função system.setAccelerometerInterval(), embora não exista a garantia de que chegarão exatamente naquele momento. Isto permite que você pegue o tempo entre os eventos e codifique alguma “suavização” adicional.

Todos os valores de “gravity,” “instant,” e “raw” assumem que o dispositivo está sendo segurado em modo “retrato”. Se você estiver desenvolvendo um app que será usado em modo “paisagem” como um jogo de corida, você irá querer ajustar seus valores em 90º.

1

Implementação

Vamos dar uma olhada em uma implementação simples de acelerôemetro. Este app irá criar um círculo azul e permitir que você o movimento pela tela movimentando o dispositivo.

para este exemplo simples, criamos um objeto ‘dot’ que é o nosso círculo, com a cor azul e configuramos alguns objetos de texto para mostrar os valores recebidos pelo evento accelerometer.

Accelerometer exige uma função listener (gatilho), que será disparada pela função onTilt(). Dentro da função, nós atualizamos os valores da tela baseados nos dados atuais do acelerômetro do dispositivo.

Depois, adicionamos os valores de event.xGravity e event.yGravity para as posição x e y do círculo (dot). isto movimentará o círculo pela tela. A seguir, escrevemos quatro condições para restringir o círculo aos limites da tela.

No bloco final da função, testamos para ver se o dispositivo foi chacoalhado e trocamos a cor entre vermelho e azul cada vez que uma chacoalhada é identificada. Finalmente, na última linha do exemplo iniciamos o manipulador do evento “accelerometer”.

Curso React Native

Conclusão

Usar o acelerômetro é uma parte importante de muitos tipos de apps, principalmente jogos e entender o básico, como descrito acima, pode ser muito útil para começar a brincar com essa possibilidade de interação.

Espero que tenham gostado!

Criado a partir do tutorial original Tutorial: Using the mobile/remote accelerometer

* OBS: curtiu o post? Então dá uma olhada no meu livro de Corona SDK clicando no banner abaixo pra aprender a criar outros tantos apps incríveis!

Livro Corona SDK
Livro Corona SDK

Publicado por

Luiz Duarte

Pós-graduado em computação, professor, empreendedor, autor, Agile Coach e programador nas horas vagas.