Issuu on Google+

Como criar Indicadores Personalizados com a BlackBerry API Resumo Os smartphones BlackBerry apresentam um interface gráfica amigável, comum a todos os aparelhos deste tipo. O device também segue outra tendência. Apresenta uma barra de notificações na parte superior. Segundo a documentação oficial da canadense RIM (Research in Motion), fabricante do aparelho, o nome desta região é Banner:

Figura 1: Nomeação de regiões de UI segundo a RIM.

A BlackBerry API nos fornece uma opção de inserir nossos próprios indicadores nesta região, de forma customizada. Sendo este o objetivo neste texto: saber como utilizar as classes da biblioteca responsáveis por esta tarefa.

O Aplicativo O aplicativo tem uma função fake de mostrar os likes ou dislikes que um determinado conteúdo em uma rede social teve. Como não iremos ter acesso externo, teremos apenas um NumericChoiceField e um


RadioButtonGroup. No primeiro, vamos determinar o número de likes/dislikes e, no segundo, com qual deles estaremos trabalhando. Veja na Figura 2 a única tela do aplicativo:

Figura 2: Tela do aplicativo.

A Listgem 1 apresenta a codificação do aplicativo, ainda sem o registro na barra de notificações: Listagem 1: Classes Notificacoes e Tela public class Notificacoes extends UiApplication { public static void main(String[] args){ Notificacoes no = new Notificacoes(); no.enterEventDispatcher(); }

}

public Notificacoes(){ pushScreen(new Tela()); }

class Tela extends MainScreen { private NumericChoiceField choice = new NumericChoiceField("Value: ", 1, 10, 1); private RadioButtonGroup rdbG = new RadioButtonGroup(); private RadioButtonField rdbLike = new RadioButtonField("Like"); private RadioButtonField rdbDislike = new RadioButtonField("Dislike"); public Scr() {


add(choice); rdbG.add(rdbLike); rdbG.add(rdbDislike); add(rdbLike); add(rdbDislike);

}

rdbLike.setSelected(true);

MenuItem menuRegister = new MenuItem("register", 0, 0) { public void run() { registerIndicator(); }; }; protected int mValue = 0; MenuItem menuUpdate = new MenuItem("update", 0, 0) { public void run() { updateValue(); }; }; MenuItem menuUnregister = new MenuItem("unregister", 0, 0) { public void run() { unregisterIndicator(); }; }; protected void makeMenu(Menu menu, int instance) { super.makeMenu(menu, instance); menu.add(menuRegister); menu.add(menuUpdate); menu.add(menuUnregister); } private void registerIndicator() {} private void unregisterIndicator() {} private void updateValue() {} }

Como o foco do aplicativo não é construção de interfaces gráfica, não vamos nos ater neste ponto. Mas, para quem acredita que precise de mais informações poderá ler um dos seguintes textos: Componentes de UI Básicos – Parte I: http://blackberrygroup.wordpress.com/2011/08/30/componentesui-basicos/; • Componentes de UI Básicos – Parte II: http://blackberrygroup.wordpress.com/2011/09/08/componentesde-ui-basicos-parte-ii/; • Componentes de UI Básicos – Parte III: http://blackberrygroup.wordpress.com/2011/09/12/componentesui-basicos-pt3/ •


Trabalhando com a ApplicationIndicator Depois de apresentar a interface gráfica, vamos fazer a verdadeira integração com a barra de indicadores do BlackBerry. O primeiro passo é criar quatro variáveis globais: 01:EncodedImage mImageN = EncodedImage.getEncodedImageResource("negativo.png"); 02:EncodedImage mImageP = EncodedImage.getEncodedImageResource("positivo.png"); 03:ApplicationIcon mIconN = new ApplicationIcon(mImageN); 04:ApplicationIcon mIconP = new ApplicationIcon(mImageP);

As duas primeiras linhas criam instâncias de EncodedImage, necessárias na inicialização dos objetos ApplicationIcon. Este, por sua vez, nos fornece apenas um construtor. O leitor já deve imaginar qual o parâmetro que deve ser passado. Ao acionar o MenuItem menuRegister, o programa é direcionado para o método registerIndicator(). O mesmo é mostrado no trecho de código abaixo: private void registerIndicator() { try { 1: ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry .getInstance(); 2: ApplicationIndicator indicator = reg.register(mIcon, false, true); } catch (Exception e) {} }

Na linha 1 criamos uma instância da classe ApplicationIndicatorRegistry, através de seu método getInstance(). O próprio nome da classe é auto-explicativo, ou seja, ela serve para operações de registro de indicadores. Para saber mais sobre a classe, visite o endereço http://www.blackberry.com/developers/docs/5.0.0api/net/rim/blackberr y/api/messagelist/ApplicationIndicatorRegistry.html.


Na segunda linha chamamos o método register, presente na classe ApplicationIndicatorRegistry, para registrar um indicador na parte superior dos smartphones BlackBerry. Este método recebe três parâmetros: • Instância de ApplicationIcon: ícone do indicador; • boolean: indica se o indicador terá somente ícone. • boolean: indica se o indicador estará visível ou não. O mesmo método da linha 2 retorna uma instância de ApplicationIndicator. Esta classe representa o próprio indicador e suas propriedades, que são somente duas: o ícone, um possível valor inteiro. Depois de entender este método, fica fácil entender o unregisterIndicator(): private void unregisterIndicator() { try { ApplicationIndicatorRegistry reg = Applicati onIndicatorRegistry .getInstance(); reg.unregister(); } catch (Exception e) { }

Neste momento já podemos fazer um pré-teste do nosso aplicativo. Execute o programa e quando ele estiver aberto, navegue até o menu item register. Ao sair do programa a região de notificações do aparelho já exibirá o nosso ícone.

Figura 3: Indicador somente com ícone.


Vamos dar uma olhada no último método: private void updateValue() { try { ApplicationIndicatorRegistry reg = ApplicationIndicatorRegistry .getInstance(); ApplicationIndicator appIndicator = reg.getApplicationIndicator(); appIndicator.setValue(choice.getSelectedValue()); appIndicator.setIcon(rdbLike.isSelected()?mIconP:mIconN); } catch (Exception e) { }

A primeira linha já é nossa conhecida. Porém, na segunda linha chamamos o método getApplicationIndicator, que nos retorna o indicador registrado por nossa aplicação. Com a instância desta classe, podemos configurar suas propriedades. Primeiramente com o método setValue, passando por parâmetro um valor inteiro. Segundo, com o método setIcon, passando uma instância de ApplicationIcon como parâmetro. Neste último caso, perceba que estamos utilizando o operador ternário para saber qual imagem passar. Pronto. Nossa aplicação fake já está totalmente funcional. Execute-a novamente e brinque a vontade. Poderá ver uma tela como a listada abaixo quando escolher o valor 7 no combo e marcar dislike nas opções de RadioButton:

Figura 4: Configuração no Aplicativo

Figura 5: Resultado na UI do sistema operacional.


Para saber mais sobre a classe ApplicationIndicator, visite a página http://www.blackberry.com/developers/docs/5.0.0api/net/rim/blackberry/api/mes sagelist/ApplicationIndicator.html

Conclusão A API da BlackBerry nos fornece uma maneira muito simples de colocar indicadores visíveis ao usuário. O ponto negativo é a impossibilidade de mostrar um texto e, de não poder tratar uma possível ação de clique encima deste aviso.

Sobre Mim Graduado em Ciência da Computação, pós-graduado em Web e analista de sistemas mobile na MobMidia | Grupo Pontomobi, Ricardo da Silva Ogliari é autor de dezenas de artigos que foram publicados em anais de congressos nacionais e internacionais, sites especializados e revistas. Palestrante em eventos nacionais e internacionais, como JustJava, Java Day, GeoLivre, ExpoGPS, FISL e FITE, sempre aborda temas relacionados a computação móvel.


Como criar Indicadores Personalizados com a BlackBerry API