Esse artigo faz parte da revista Java Magazine edição 55. Clique aqui para ler todos os artigos desta edição

256: Mobile Sensor API

Acessando Sensores em Dispositivos Móveis

Conheça a API da plataforma Java ME que proporciona acesso genérico e fácil a diversos tipos de sensores disponíveis no seu dispositivo móvel

É realmente espantosa a velocidade com que vem avançando a tecnologia na área dos dispositivos móveis. Num passado não muito distante, nos impressionávamos com um visor colorido, toques polifônicos, câmeras fotográficas, ou tocador de MP3. Hoje, um dos avanços que vem chamando a atenção dos consumidores, e porque não falar dos desenvolvedores de aplicação, é a adição de um novo tipo de componente: o sensor.

Um sensor nada mais é do que um equipamento que registra medições diversas de um meio (som, temperatura, movimento, etc.). Existem duas categorias de sensores, os físicos e os virtuais. Um sensor físico é um componente de hardware que retorna as informações coletadas de forma direta (por exemplo, magnetômetro e acelerômetro). Já o virtual é desenvolvido sobre outros sensores, através de algum software, com o intuito de retornar um tipo de informação derivada (e.g. indicador do nível de bateria e intensidade do sinal da rede celular).

Pensando no número de possibilidades que essas informações podem dar às aplicações móveis (veja o quadro “Casos de Uso”), a plataforma Java Micro Edition concentrou esforços na especificação de uma API que facilitasse o acesso e a leitura das informações desses sensores. Esta é a Mobile Sensor API, que iremos explorar rapidamente, dos conceitos a exemplos de código.

Apresentando a API

A Mobile Sensor API ou JSR 256, como é comumente referenciada, faz parte da gama de API’s opcionais da plataforma Java ME. Ela teve como líder de especificação a Nokia, com colaboração de outras grandes empresas do ramo como LG, Motorola, Samsung, Sony Ericsson, etc. O que já é de costume, quando o assunto é especificação para Java ME.

Tendo em vista não existir no mercado uma forma padronizada de acesso aos sensores – os sistemas operacionais geralmente oferecem APIs específicas para cada tipo de sensor, e estas APIs ainda podem variar de um SO para outro – a Java ME vem tentar pôr um fim a este problema. A JSR 256 tem o objetivo de proporcionar uma forma padronizada, unificada e otimizada de acesso e leitura a qualquer tipo de sensor disponível para dispositivos móveis. É de se destacar tal objetivo, devido à variedade de tipos de sensores disponíveis no mercado, cada um com suas peculiaridades (configuração, protocolos de comunicação, mecanismo de leitura, formato da informação, etc.).

A API só proporciona métodos para efetuar a leitura das informações colhidas pelo sensor, as quais podem ser obtidas tanto de forma síncrona quanto assíncrona. Outros métodos de controle, como os de configuração, iniciação, calibração e parada são deixados a cargo da API. Falaremos mais sobre a leitura dos dados mais à frente.

O ciclo de vida de um sensor, que deve ser seguido pela aplicação que deseja acessar este tipo de recurso, é bem simples:

1.   O ciclo se inicia pela etapa de descoberta dos sensores;

2.   Depois que um sensor é descoberto e selecionado, a etapa seguinte será a de estabelecer uma conexão de dados com o mesmo;

3.   Estabelecida a conexão, a leitura dos dados pode ser iniciada;

4.   Finalizada a leitura das informações, o sensor pode ser liberado, encerrando a conexão.

A seguir, veremos em detalhe cada uma dessas etapas.

Descobrindo os Sensores

O sensor é um equipamento que está conectado ao dispositivo através de algum mecanismo, que pode ser um barramento, conexão via cabo ou mesmo sem fio. Mas para a aplicação, o que importa é somente estabelecer a conexão com o sensor. E para estabelecer esta conexão, o sensor desejado precisa ser encontrado.

A etapa de descoberta dos sensores disponíveis no dispositivo móvel é simples. Ela é gerenciada pela classe SensorManager, a qual está presente no pacote javax.microedition.sensor, através do método findSensors(). Esta etapa é opcional; caso a aplicação já saiba de antemão qual o sensor utilizar e a sua URL de conexão, ela pode pular esta etapa, indo direto para o estabelecimento da conexão. Veja na Listagem 1 um exemplo em código sobre a etapa de descoberta dos sensores.

 

Listagem 1. Descobrindo os sensores habilitados

...

Quer ler esse conteúdo completo? Tenha acesso completo