Como usar a API do Acelerômetro no BlackBerry Storm?
O uso de acelerômetro abre muitas possibilidades legais de desenvolvimento, e agora que o novíssimo BlackBerry Storm possui esse recurso, vale a pena explorá-lo.
Para usar o acelerômetro no BlackBerry Storm você precisa desenvolver usando API nativa, 4.7 ou superior.
É muito simples de usar. Basta que você leia as posições XYZ do acelerômetro, indicando um vetor short para que a API escreva nesse vetor as três posições.
Veja como é fácil:
public short[] leAcelerometro() {short[] xyz = new short[3];canal.getLastAccelerationData(xyz);return xyz;}
O método acima retorna um vetor com as posições XYZ do acelerômetro.
No entanto, antes de ler o acelerômetro, é necessário abrir um canal com o hardware dele, e fechá-lo quando não for mais necessário fazer leitura do acelerômetro. Você só deve abrir o canal quando realmente for iniciar o uso do acelerômetro, fazendo várias leituras seguidas.
Para abrir e fechar o canal, use os seguintes métodos:
//Abre o canalChannel canal = AccelerometerSensor.openRawDataChannel(Application.getApplication());//Fecha o canal abertocanal.close();
Preparei uma classe de leitura do acelerômetro que pode ajudar. Ela mantém uma única instância dela mesma, e garante que não serão abertos vários canais de leitura do acelerômetro.
Você poderá usar à vontade:
import net.rim.device.api.system.AccelerometerSensor;import net.rim.device.api.system.AccelerometerSensor.Channel;import net.rim.device.api.system.Application;/*** Classe controladora de acelerômetro.* @author Nelson Pereira Junior - www.devmobile.blog.br*/public class Acelerometro {private static Acelerometro instancia;private boolean instanciado = false;private Channel canal = null;private boolean aberto = false;private short[] xyz = {0, 0, 0};/*** Gera uma única instância para o controle do acelerômetro, para evitar* manter vários canais abertos.* @return Retorna a instância dessa classe controladora do acelerômetro.*/public Acelerometro getInstancia() {if (!instanciado) {instancia = new Acelerometro();instanciado = true;}return instancia;}/*** Inicia o recebimento de dados do acelerômetro, abrindo o canal de dados.*/public void inicia() {if (aberto)return;canal = AccelerometerSensor.openRawDataChannel(Application.getApplication());aberto = true;}/*** Pára de receber dados do acelerômetro. Fecha o canal com o hardware.*/public void para() {if (!aberto)return;canal.close();canal = null;aberto = false;}/*** Lê os dados do acelerômetro.* @return Retorna um vetor com as posições XYZ do acelerômetro.*/public short[] le() {canal.getLastAccelerationData(xyz);return xyz;}}
Bons códigos de acelerômetro à todos.
Abraço.
Sobre o Autor
Nelson é desenvolvedor há 12 anos. Hoje desenvolve aplicações Web e Móveis na Abacomm Brasil cuidando do desenvolvimento server-side J2EE, banco de dados, design de aplicações móveis, e desenvolvimento móvel usando várias plataformas como BlackBerry, J2ME, FlashLite, Android, etc. Para conversar com o autor use o e-mail, MSN e GTalk npereirajr@gmail.com.

Mobilidade é tudo » Blog Archive » Usando acelerômetro na BlackBerry API:
[…] tarde.. Aí va uma dica: “Como usar a API do Acelerômetro no BlackBerry Storm?” Boa leitura a todos.. Att. […]
20 Janeiro 2010, 1:26 pm