FeaturesPluginsDocs & SupportCommunityPartners

Resolvendo problemas de fragmentação de dispositivo Java ME

O axioma escrever uma vez, executar em qualquer lugar que fomentou a popularidade da linguagem de programação Java não se aplica muito bem ao mundo do Java Micro Edition (Java ME). Os recursos do dispositivo como tamanho da tela, profundidade de cor e memória variam consideravelmente. Lance mão das opções de perfis, configurações e APIs J2ME e você terá o que chamamos de fragmentação de dispositivo. Este tutorial mostra como usar os recursos internos do IDE para resolver os problemas de fragmentação de dispositivo MIDP Java ME.

Conteúdo

O conteúdo desta página se aplica ao NetBeans 6.0

Requisitos

Software necessário para este tutorial

Antes de começar, você deve instalar o seguinte software no seu computador:

  • Java Standard Development Kit (JDK) versão 5.0 ou 6.0 (download)
  • NetBeans IDE 6.0 com Mobility pack (download)

Observação: você pode implantar este projeto usando o emulador do Sun Java Wireless Toolkit incluído no Mobility Pack. Não será necessário um software adicional para seguir os conceitos básicos apresentados neste tutorial. Entretanto, se você precisar implantar em plataformas adicionais, recomendamos que baixe os emuladores apropriados que você está almejando. Eis aqui algumas das plataformas de dispositivo CLDC/MIDP mais populares disponíveis:

  • Nokia Series 40 SDKs para sistema operacional Symbian (download)
  • Nokia Series 60 SDKs para sistema operacional Symbian (download)
  • Sony Ericsson SDK 2.2.4 para a plataforma Java ME (download)
  • Motorola Java ME SDK v6.4 para produtos Motorola OS (download)

 

Se você não tiver experiência com o NetBeans Mobility Pack ou o desenvolvimento de Java ME, recomendamos que você consulte o NetBeans Mobility Pack 6.0 for CLDC Quick Start Guide antes de continuar este tutorial. Este guia inclui uma seção sobre como adicionar e registrar os emuladores de plataforma.

Configurando a aplicação

Este exemplo usa um jogo simples chamado Ball Shot para demonstrar como almejar habilidades do dispositivo para resolver problemas de fragmentação de dispositivo.

  1. Baixe o projeto BallShotGame.zip
  2. Descompacte o projeto e coloque o conteúdo no diretório project_home do IDE.

Para obter mais instruções sobre como importar projetos do mobility para o IDE, consulte o Mobility Project Import Guide.

Criando configurações personalizadas

Uma tática para resolver problemas de fragmentação de dispositivo se baseia no uso das configurações do projeto pelo NetBeans. Isso permite que você crie um conjunto de códigos-fonte e personalize-o para cada dispositivo móvel que esteja almejando. Lembre-se de manter suas configurações coerentes de forma que a plataforma do emulador e o dispositivo de destino correspondam à configuração do projeto que você está criando. No exemplo abaixo, o Nokia Series 40 é a configuração de destino.

 

Caixa de diálogo Propriedades do projeto mostrando o emulador, a configuração e o conjunto de definições definidos corretamente

Criando as configurações do projeto

  1. Escolha Arquivo > Abrir projeto (Ctrl-Shift-O). Navegue para a pasta em que se encontra a pasta do projeto SingleCotopiaGameBallShot descompactado e instalado.
  2. Clique com o botão direito do mouse no nó do projeto SingleCotopiaGameBallShot e selecione Propriedades.
  3. Clique no botão Gerenciar configurações na parte superior da página. Isso abre a caixa de diálogo Gerenciar configurações.
  4. Clique em Adicionar, em seguida, digite o nome desejado da configuração e pressione OK.
  5. Repita a etapa anterior para os outros emuladores nos quais deseja implantar.

Criando habilidades

Habilidades são atributos de dispositivo como tamanho da tela, profundidade de cor, suporte a API e suporte a áudio. Criar uma habilidade em um projeto permite que você a associe com uma ou mais configurações de projeto que dê suporte a um atributo específico ou conjunto de atributos. Se você precisar modificar, remover ou adicionar configurações mais tarde, simplesmente associe a configuração a uma habilidade para implementar a alteração. A configuração é então associada, automaticamente, a qualquer bloco de código associado à habilidade.

  1. Clique com o botão direito do mouse no nó do projeto SingleCotopiaGameBallShot e escolha Propriedades.
  2. Escolha a página Habilidades da árvore de menu Categoria.
  3. No menu suspenso Configuração do projeto, escolha a configuração a qual a habilidade que você está definindo está associada.
  4. Se necessário, desmarque a caixa rotulada Usar valores da configuração padrão.
  5. Clique no botão Adicionar.
  6. Na caixa de diálogo Nova habilidade, indique um nome para a habilidade, tal como tela ou clique no botão Editar se a habilidade tela já existir
  7. Indique um valor para a habilidade. Neste exemplo, coloque 240x320. Habilidades adicionais podem ser configuradas e direcionadas para outras variáveis, tais como profundidade de cor ou suporte a áudio. Clique em Ok para fechar a caixa de diálogo Novo habilidade. A habilidade agora está associada com a configuração de projeto selecionada.
  8. Caixa de diálogo mostrando a nova habilidade que define o tamanho da tela da configuração

Você pode associar a habilidade com outras configurações, escolhendo uma configuração diferente do menu Configuração do projeto e clicando no botão Adicionar.

Adicionando código específico da configuração com blocos do pré-processador

Os blocos do pré-processador permitem que você crie, gerencie e controle o código específico de uma ou mais configurações ou habilidades do projeto. O código é ativado (ou desativado) somente para as configurações ou habilidades que você identificar. Um dos atributos práticos para almejar em dispositivos móveis é o tamanho da tela. Um site de referência útil para tamanhos de tela, profundidade de cor, suporte a API e outros recursos é o site Jbenchmark.

  1. Na janela Editor do BallShotImageCreator.java, clique com o botão direito do mouse na linha do código-fonte onde BallShotImageCreator é instanciado (public BallShotImageCreator() { .
  2. Clique com o botão direito do mouse na linha e escolha Blocos do pré-processador > Criar bloco If/Else. Na caixa Itens disponíveis, role e escolha a habilidade tela definida anteriormente.
  3. Na linha //#if screen, adicione o seguinte: == "240x320"
  4. O código marcado pela diretiva do pré-processador //#if é implantado onde quer que a configuração ativa coincida com o valor da diretiva. O código entre a diretiva do pré-processador //#else é usado onde quer que a configuração ativa não coincida com o valor do pré-processador. Em outras palavras, o emulador exibe as bolas de 22 pixels, se a plataforma ativa tiver a habilidade 240x320. A diretiva do pré-processador //#endif completa o bloco do pré-processador. Eis aqui um exemplo escrito deste jogo para uma variedade de tamanhos de tela:
   //#if screen == "128x128"
//# ballWidth = 10;
//#elif screen == "176x182"
//# ballWidth = 16;
//#elif screen == "176x208"
//# ballWidth = 16;
//#elif screen == "240x320"
ballWidth = 22;
//#endif

Executando o jogo Ball Shot em um emulador

  1. Escolha Executar > Executar projeto principal.
  2. Quando o emulador for iniciado, ele deve exibir o seguinte menu.
  3. Emulador mostrando o menu para jogar o novo jogo

  4. Clique no botão principal no emulador para iniciar o jogo. O emulador mostra a tela seguinte. Para comparação, incluímos uma captura de tela do jogo sem as diretivas do pré-processador. Observe as imagens que são muito pequenas em relação à tela do emulador.
  5. Capturas de tela antes e depois do emulador do código do pré-processador

Resumo

Este artigo demonstrou como usar o Mobility Pack para almejar os atributos de dispositivo móvel para eliminar os problemas de fragmentação de dispositivo por meio de configurações personalizadas e código do pré-processador que almeja as habilidades do dispositivo. Infelizmente, nem todo problema de fragmentação de dispositivo pode ser tratado por meio desses métodos, mas esses exemplos mostram que há maneiras de atenuar o impacto deles ao desenvolver para dispositivos móveis.

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by