Atenção: esse artigo tem um vídeo complementar. Clique e assista!
O artigo apresenta algumas diferenças básicas entre a programação para dispositivos móveis usando Java ME e a BlackBerry API. Também demonstra como interagir com aplicativos nativos do dispositivo móvel BlackBerry. No exemplo apresentado nesse artigo, o usuário poderá visualizar onde seus contatos estão em um mapa 2D. Finalizando, será adicionado um item de menu dentro do aplicativo Contatos do smartphone, direcionando a ação do usuário para o aplicativo desenvolvido nesse artigo.
Para que serve:
Para que o leitor conheça alguns recursos um pouco mais avançados da BlackBerry API, podendo criar aplicativos especializados para esta plataforma mobile. Além disso, o leitor pode utilizar os conhecimentos adquiridos neste artigo para fazer uma comparação com os recursos disponíveis no Java ME.
Em que situação o tema é útil:
Em situações onde o desenvolvedor precisa criar aplicações específicas para BlackBerry, conhecendo previamente ou não a plataforma JavaME, ou ainda precisa interagir com aplicações nativas do smartphone.
Autores: Ricardo Ogliari e Robison Cris Brito
Quando se pensa em desenvolvimento de aplicativos para a plataforma BlackBerry, tem-se duas opções para programação: utilizar o Java ME, este um subset da linguagem Java muito conhecido pelos programadores mobile, ou partir para o uso da BlackBerry API, também conhecia por BB API. Esta última é uma criação da empresa RIM, fabricante dos dispositivos BlackBerry.
As vantagens da utilização do Java ME já são conhecidas pelos programadores mobile, dentre elas destacam-se a portabilidade e o grande número de documentos disponíveis para consulta na web. Entretanto, em algumas situações o aplicativo que será desenvolvido rodará em uma única plataforma. Nesse exemplo, os smartphones BlackBerry, e nessa situação é vantajoso trocar o tradicional Java ME pela BB API.
Dentre as vantagens em utilizar a BB API destacam-se: permitir o acesso aos recursos nativos do aparelho, possuir um tratamento diferenciado para a interface gráfica dos aparelhos, permitir a integração do programa desenvolvido com aplicativos do próprio aparelho, possuir componentes visuais mais sofisticados se comparados ao Java ME, possuir um gerenciador de layout de tela mais elaborado e ter métodos de persistência mais flexíveis que o tradicional RMS (Record Management System).
Sendo assim, se o cliente não utiliza nenhuma outra plataforma de celular, somente aparelhos BlackBerry, não há dúvida, utilize a BB API (que não deixa de ser uma derivada do Java ME).
É bom citar que a BB API pode utilizar qualquer um dos pacotes opcionais do Java ME (desde que estejam implementados no aparelho). Por exemplo, no aplicativo foco deste artigo, será desenvolvida uma solução que permite ao usuário visualizar seus contatos em um mapa 2D. Para este exemplo, poderia ser utilizada, por exemplo, a Java Location (JSR-179) em conjunto com a BB API para calcular a distância física entre os contatos.
O objetivo deste artigo é demonstrar, inicialmente, algumas diferenças na programação Java ME e BB API. Posteriormente, será apresentada a integração do aplicativo desenvolvido com os aplicativos nativos do aparelho.
Diferenças entre programar com Java ME e programar com BB API
Quem conhece a plataforma Java ME sabe que a estrutura de uma aplicação móvel é baseada no seu ciclo de vida, o qual é representado pelos três métodos: startApp(), pauseApp() e destroyApp(), sendo o ponto inicial do aplicativo o método startApp().
Na BB API não existe nenhum destes três métodos. O ponto inicial de uma aplicação é sempre no método main de uma subclasse de UiApplication ou Application, sendo o primeiro caso para aplicativos que contenham uma interface gráfica e no segundo caso para aplicativos sem interface gráfica.
É importante ter apenas uma subclasse das classes referidas anteriormente, por exemplo, se o projeto tiver mais que uma classe herdada de UiApplication, o compilador gera uma exceção.
Na Listagem 1 são apresentados os passos para iniciar uma aplicação com BB API.
Listagem 1. Esqueleto de uma aplicação BB API
1: import net.rim.device.api.ui.UiApplication;
2:
3: public class UsingBBMaps extends UiApplication {
4:
5: public UsingBBMaps() {
6: UserInterfaceScreen mainScreen = new UserInterfaceScreen();
7: pushScreen(mainScreen);
8: }
9:
10: public static void main(String[] args) {
11: UsingBBMaps app = new UsingBBMaps();
12: app.enterEventDispatcher();
13: }
14:}
Para iniciar uma aplicação com a BB API, a subclasse de UIApplication ou Application necessita realizar basicamente três passos:
• No método construtor da classe, cria-se a tela inicial do aplicativo e a adiciona na pilha de telas (display stack) – linhas 6 e 7;
• Cria-se uma instância da classe do aplicativo – linha 11;
• Iniciar o event dispatch thread – linha 12 da Listagem 1.
Diferentemente do Java ME tradicional, percebe-se que o trecho de código acima possui um public static void main(), o que se assemelha a uma aplicação JavaSE tradicional.
Assim, a BB API inicia o processamento no método main. Neste ponto cria-se uma instância da classe atual, operação corriqueira da maioria das aplicações JavaSE. No construtor da classe atual é instanciada um objeto chamado mainScreen.
Na BB API existe uma pilha de telas (display stack). Diferentemente das aplicações Java ME, onde se deve usar o método setCurrent da classe Display para informar a tela que será apresentada, na BB API deve-se apenas inserir a tela no topo da pilha display stack, sendo que a tela que estiver no topo da pilha será a tela visualizada no momento.
Para a manipulação de tela existem dois métodos: pushScreen e popScreen, usadas respectivamente para inserir e retirar uma tela da pilha de telas.
Por fim, o event thread – Linha 12 - é responsável pelo desenho na tela, respostas a eventos de teclado, TrackBall (ler Nota Devman 1), movimento em interfaces touch screen e outros eventos do sistema de mensagem do SO do dispositivo.
...