Introdução ao Desenvolvimento do Android

A Plataforma do Dispositivo de Software Livre

Android é um ambiente operacional completo baseado no kernel Linux® V2.6. Inicialmente, o destino de implementação para o Android era a arena do telefone móvel, incluindo telefones inteligentes e dispositivos flip fone de baixo custo. Entretanto, a variedade completa do Android de serviços de computação e o suporte totalmente funcional têm potencial para ir além do mercado de telefones móveis. O Android pode ser útil para outras plataformas e aplicativos. Neste artigo, faremos uma introdução à plataforma Android para aprendermos como codificar um aplicativo Android básico.

Frank Ableson, Software designer

Depois que sua carreira no basquetebol na faculdade chegou ao fim sem um bom contrato para jogar no L.A. Lakers, Frank Ableson mudou seu foco para o design de software de computador. Ele gosta de solucionar problemas complexos, principalmente nas áreas de comunicações e interface de hardware. Quando não está trabalhando, ele passa seu tempo com a esposa Nikki e com seus filhos. Você pode entrar em contato com Frank em frank@cfgsolutions.com.



12/Mai/2009

Introdução

O BlackBerry e o iPhone, cujas plataformas móvel são atraentes e de alto volume, estão abordando extremidades opostas de um espectro. O BlackBerry é completamente seguro para o usuário de negócios corporativo. Para um dispositivo de usuário final, é difícil competir com o iPhone em termos de facilidade de uso e "estar na moda." Android, uma plataforma jovem e ainda não comprovada, tem o potencial de jogar dos dois lados do espectro de telefonia móvel e, talvez, de criar uma ponte sobre o abismo entre trabalho e diversão.

Hoje, muitos dispositivos com capacidade de rede ou baseados em rede têm um gostinho de kernel Linux. Eles são uma plataforma sólida: com boa relação custo-benefício para implementação e suporte e prontamente aceitos como uma boa abordagem de design para implementação. A UI para esses dispositivos muitas vezes é baseada em HTML e pode ser visualizada com um navegador PC ou Mac. Mas nem todo dispositivo precisa ser controlado por um dispositivo de computação geral. Considere um dispositivo convencional, como um forno de microondas ou um assador de pães. E se os seus dispositivos domésticos fossem controlados pelo Android e ostentassem um touch screen colorido? Com uma UI do Android no forno, o autor poderia até cozinhar algo.

Neste artigo, aprenda sobre a plataforma Android e como ela pode ser utilizada para aplicações móveis e não móveis. Instale o Android SDK e construa um aplicativo simples. Faça download do código de origem para o aplicativo de exemplo neste artigo.


Uma Breve História do Android

A plataforma Android é o produto do Open Handset Alliance, um grupo de organizações colaborando para a construção de um telefone móvel melhor. O grupo, liderado pelo Google, inclui operadores de telefonia móvel, fabricantes de aparelhos portáteis,fabricantes de componentes, provedores de plataformas e soluções de software e empresas de marketing. A partir de um ponto de vista de desenvolvimento de software, o Android fica bem ao centro do mundo do software livre.

O primeiro telefone portátil com capacidade para Android no mercado foi o dispositivo G1 fabricado pela HTC e fornecido pela T-Mobile. O dispositivo se tornou disponível após quase um ano de especulações, quando as únicas ferramentas de desenvolvimento de software disponíveis eram alguns releases do SDK em constante aprimoramento. Conforme a data de release do G1 se aproximava, a equipe do Android liberou o SDK V1.0 e os aplicativos começaram a aparecer para a nova plataforma.

Para estimular a inovação, o Google patrocinou duas séries do "Android Developer Challenges," onde milhões de dólares foram envolvidos nas melhores participações. Alguns meses depois do G1, o Android Market foi lançado, permitindo que os usuários navegassem e fizessem o download de aplicativos diretamente em seus telefones. Após cerca de 18 meses, uma nova plataforma móvel entrava na arena pública.


A Plataforma Android

Com a variedade de recursos do Android, seria fácil confundi-lo com um sistema operacional desktop. O Android é um ambiente em camadas baseado em kernel Linux e que inclui funções ricas. O subsistema da UI inclui:

  • Janelas
  • Visualizações
  • Widgets para a exibição de elementos comuns como caixas de edição, listas e listas suspensas

O Android inclui um navegador incorporável baseado em WebKit, o mesmo mecanismo navegador de software livre equipando o navegador Mobile Safari do iPhone.

O Android ostenta uma rica array de opções de conectividade, incluindo WiFi, Bluetooth e dados wireless através de uma conexão celular (por exemplo, GPRS, EDGE e 3G). Uma técnica popular em aplicativos Android é estabelecer um link com o Google Maps para exibir um endereço diretamente em um aplicativo. O suporte para serviços baseados em locais (como GPS) e acelerômetros também está disponível na pilha de software Android, embora nem todos os dispositivos Android sejam equipados com o hardware necessário. Existe também suporte para câmera.

Historicamente, duas áreas onde aplicações móveis lutaram para acompanhar suas contrapartes de desktop são gráfico/mídia e métodos de armazenamento de dados. O Android aborda o desafio dos gráficos com suporte integrado para gráficos em 2-D e 3-D, incluindo a biblioteca OpenGL. O peso do armazenamento de dados é amenizado porque a plataforma Android inclui o banco de dados SQLite de software livre popular. A Figura 1 mostra uma visualização simplificada das camadas do software Android.

Figura 1. Camadas do Software Android
Camadas do Software Android

Arquitetura do Aplicativo

Conforme mencionado, o Android é executado sobre um kernel Linux. Os aplicativos Android são gravados na linguagem de programação Java e são executados em uma máquina virtual (VM). É importante observar que a VM não é uma JVM, como você pode esperar, mas é uma Dalvik Virtual Machine, uma tecnologia de software livre. Cada aplicativo Android é executado em uma instância da Dalvik VM, que, por sua vez, reside em um processo gerenciado por kernel Linux, conforme mostrado abaixo.

Figura 2. Dalvik VM
Dalvik VM

Um aplicativo Android consiste em uma ou mais das classificações a seguir:

Atividades
Um aplicativo que possui uma UI visível é implementado com uma atividade. Quando um usuário seleciona um aplicativo da tela inicial ou de um ativador de aplicativo, uma atividade é iniciada.
Serviços
Um serviço deve ser utilizado para qualquer aplicativo que precise persistir por um longo período de tempo, como um monitor de rede ou um aplicativo de verificação de atualização.
Provedores de conteúdo
Você pode pensar em provedores de conteúdo como um servidor de banco de dados. O trabalho de um provedor de conteúdo é gerenciar o acesso aos dados que persistem, como um banco de dados SQLite. Se seu aplicativo for muito simples, você não precisa necessariamente criar um provedor de conteúdo. Se estiver construindo um aplicativo maior, ou um que disponibilize dados para várias atividades ou aplicativos, um provedor de conteúdo será o meio de você acessar seus dados.
Receptores de transmissão
Um aplicativo Android pode ser ativado para processar um elemento de dados ou para responder a um evento, como o recebimento de uma mensagem de texto.

Um aplicativo Android, junto com um arquivo chamado AndroidManifest.xml, é implementado em um dispositivo. O AndroidManifest.xml contém as informações de configuração necessárias para você instalá-lo corretamente no dispositivo. Ele inclui os nomes de classes necessários e os tipos de eventos que o aplicativo está pronto para processar, além das permissões necessárias que o aplicativo precisa para execução. Por exemplo, se um aplicativo exigir acesso à rede — para fazer o download de um arquivo, por exemplo — essa permissão deve ser declarada explicitamente no arquivo de manifesto. Muitos aplicativos podem ter essa permissão específica ativada. Tal segurança declarativa ajuda a reduzir a probabilidade de um aplicativo perigoso causar danos em seu dispositivo.

A próxima seção discute o ambiente de desenvolvimento necessário para a construção de um aplicativo Android.


Ferramentas Necessárias

A maneira mais fácil para você começar a desenvolver aplicativos Android é fazer o download do Android SDK e do IDE do Eclipse (consulte Recursos). O desenvolvimento do Android pode acontecer no Microsoft® Windows®, Mac OS X ou Linux.

Este artigo supõe que você esteja utilizando o IDE do Eclipse e o plug-in Android Developer Tools para Eclipse. Os aplicativos Android são gravados na linguagem Java, mas são compilados e executados em Dalvik VM (uma máquina virtual não Java). A codificação na linguagem Java dentro do Eclipse é bastante intuitiva; o Eclipse fornece um ambiente Java rico, incluindo ajuda sensível ao contexto e sugestões de códigos. Após seu código Java ser claramente compilado, o Android Developer Tools se certifica de que o aplicativo esteja empacotado corretamente, incluindo o arquivo AndroidManifest.xml.

É possível desenvolver aplicativos Android sem o Eclipse e o plug-in Android Developer Tools, mas você precisaria estar familiarizado com o Android SDK.

O Android SDK é distribuído como um arquivo zip que é descompactado em um diretório em sua unidade de disco rígido. Como já houve várias atualizações do SDK, é recomendado que você mantenha seu ambiente de desenvolvimento bem organizado para poder se alternar facilmente entre instalações do SDK. O SDK inclui:

android.jar
O arquivo Java archive contendo todas as classes do Android SDK necessárias para a construção do seu aplicativo.
documention.html e diretório de documentos
A documentação do SDK é fornecida localmente e na Web. Ela tem, em grande parte, forma de JavaDocs, facilitando a navegação em vários pacotes no SDK. A documentação também inclui um Guia de Desenvolvimento de alto nível e links para a comunidade mais ampla do Android.
Diretório de amostras
O subdiretório de amostras contém código de origem completo para uma variedade de aplicativos, incluindo ApiDemo, que exercita muitas APIs. O aplicativo de amostra é um excelente lugar para você explorar quando começar a desenvolver seu aplicativo Android.
Diretório de ferramentas
Contém todas as ferramentas de linha de comando para construir aplicativos Android. A ferramenta mais útil e usada com mais frequência é o utilitário adb (Android Debug Bridge).
usb_driver
Diretório contendo os drivers necessários para conectar o ambiente de desenvolvimento a um dispositivo ativado por Android, como G1 ou o telefone de desenvolvimento desbloqueado Android Dev 1. Esses arquivos só são necessários para desenvolvedores que utilizam a plataforma Windows.

Os aplicativos Android podem ser executados em um dispositivo real ou no Android Emulator, que é fornecido com o Android SDK. A Figura 3 mostra a tela inicial do Android Emulator.

Figura 3. Android Emulator
Android Emulator

Android Debug Bridge

O utilitário adb suporta vários argumentos de linha de comando opcionais que fornecem recursos poderosos, como cópia de arquivos a partir de e para o dispositivo. O argumento de linha de comando shell permite que você se conecte ao próprio telefone e emita comandos shell fundamentais. A Figura 4 mostra o comando shell adb com relação a um dispositivo real conectado a um laptop Windows com um cabo USB.

Figura 4. Utilizando o Comando Shell adb
Utilizando o Comando Shell adb

Dentro deste ambiente shell, você pode:

  • Exibir a configuração de rede que mostra várias conexões de rede. Observe as várias conexões de rede:
    • lo é a conexão local ou loopback.
    • tiwlan0 é a conexão WiFi com um endereço fornecido por um servidor DHCP local.
  • Exibe o conteúdo da variável de ambiente PATH.
  • Execute o comando su para se tornar o superusuário.
  • Altere o diretório para /data/app, em que aplicativos do usuário são armazenados.
  • Faça uma listagem de diretórios onde você veja um único aplicativo. Os arquivos de aplicativo Android são, de fato, arquivos de archive visualizados com WinZip ou equivalente. A extensão é apk.
  • Emita um comando ping para ver se o Google.com está disponível.

Neste mesmo ambiente de prompt de comandos, você também pode interagir com bancos de dados SQLite, iniciar programas e muitas outras tarefas no nível do sistema. Esta é uma função absolutamente notável, considerando o fato de você estar conectado a um telefone.

Na próxima seção, você vai criar um aplicativo Android simples.


Codificando um Aplicativo Básico

Esta seção apresenta um rápido tour pela construção de um aplicativo Android. O aplicativo de exemplo é tão simples quanto você pode imaginar: um aplicativo "Hello Android" modificado. Você vai incluir uma pequena modificação para deixar a cor do plano de fundo da tela toda branca para poder utilizar o telefone como uma lanterna. Nada muito original, mas será útil como exemplo. Faça download do código fonte completo.

Para criar um aplicativo no Eclipse, selecione File > New > Android project, que inicia o assistente New Project Android.

Figura 5. Assistente New Project Android
Assistente New Project Android

Em seguida, você cria um aplicativo simples com uma única atividade, junto com um layout de UI armazenado em main.xml. O layout contém um elemento de texto que você vai modificar para chamar de Android FlashLight. O layout simples é mostrado abaixo.

Listagem 1. Layout do FlashLight
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/all_white">
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello" android:textColor="@color/all_black"
   android:gravity="center_horizontal"/>
</LinearLayout>

Crie alguns recursos de cor em strings.xml.

Listagem 2. Cor em strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Android FlashLight</string>
    <string name="app_name">FlashLight</string>
    <color name="all_white">#FFFFFF</color>
    <color name="all_black">#000000</color>
</resources>

O layout da tela principal possui uma cor de plano de fundo definida como all_white. No arquivo strings.xml, você vê que all_white é definida como um valor trio RGB de #FFFFFF ou toda branca.

O layout contém um único TextView, que é, de fato, apenas uma parte de um texto estático; ele não é editável. O texto é configurado para ser preto e centralizado horizontalmente com o atributo gravity.

O aplicativo possui um arquivo de origem Java chamado FlashLight.java, conforme mostrado abaixo.

Listagem 3. Flashlight.java
package com.msi.flashlight;
import android.app.Activity;
import android.os.Bundle;
public class FlashLight extends Activity {
    /** Called when the activity is first created. */
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

O código básico é gerado diretamente a partir do assistente New Project:

  • Ele faz parte de um pacote Java chamado com.msi.flashlight.
  • Ele possui duas importações:
    • Uma para a classe de atividade
    • Uma para a classe de pacote configurável
  • Quando essa atividade é iniciada, o método onCreate é invocado, passando um savedInstanceState. Não se preocupe com esse pacote configurável em relação aos nossos propósitos; ele será utilizado quando uma atividade for suspensa e depois continuada.
  • O método onCreate é uma substituição do método de classes de atividade de mesmo nome. Ele chama o método onCreate da superclasse.
  • Uma chamada para setContentView() associa o layout da UI definido no arquivo main.xml. Tudo que estiver no main.xml e no strings.xml é automaticamente mapeado para as constantes definidas no arquivo de origem R.java. Nunca edite esse arquivo diretamente, já que ele é alterado em cada compilação.

A execução do aplicativo apresenta uma tela branca com texto preto.

Figura 6. Tela Branca da Lanterna
Tela Branca da Lanterna

A configuração do arquivo AndroidManifest.xml para o aplicativo FlashLight é mostrada abaixo.

Listagem 4. AndroidManifest.xml para FlashLight
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.msi.flashlight"
      android:versionCode="1"
      android:versionName="1.0.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".FlashLight"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Este arquivo foi criado automaticamente pelo plug-in Android Developer Tools para Eclipse. Você não precisou fazer nada.

É claro que o aplicativo não é absolutamente magnífico. Mas ele seria conveniente se você quisesse ler algo sem atrapalhar o sono de seu(sua) companheiro(a), ou se você precisasse se localizar na caixa do fusível no porão durante uma queda de energia.


Resumo

Neste artigo, você aprendeu sobre o Android em um nível bastante alto e construiu um pequeno aplicativo. Espero que o exemplo tenha deixado você animado para explorar mais sobre a plataforma Android. O Android promete ser uma plataforma de software livre que vai transformar o mercado e que será muito útil além dos telefones celulares.


Download

DescriçãoNomeTamanho
FlashLight source codeos-android-devel-FlashLight.zip22KB

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Software livre
ArticleID=396946
ArticleTitle=Introdução ao Desenvolvimento do Android
publish-date=05122009