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
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

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 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

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

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>
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); } }
- 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 umsavedInstanceState
. 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étodoonCreate
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.
Figura 6. 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>
É 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.
Fonte: http://www.ibm.com/developerworks/br/library/os-android-devel/
Nenhum comentário:
Postar um comentário