Introdução ao Google Android
Agenda O que é Android Arquitetura e componentes Android Virtual Devices (AVD) Android SDK (Software Development Kit) Android Development Tools (ADT) Estrutura básica de uma aplicação Android Utilizando os componentes visuais do Android Banco de Dados SQLite com Android Utilizando Google Maps com Android Referências e leituras recomendadas
O que é Android
O que é Android Plataforma para dispositivos móveis Um Sistema Operacional, Middleware e Aplicações de apoio. 100% OpenSource Construído sobre um Linux Kernel Desenvolvido pela Open Handset Alliance. Android SDK linguagem Java amplamente aceita e utilizada Dalvik VM
O que é Android Cada aplicação (ou serviço) roda em seu próprio processo Linux isolado. Cada processo possui sua própria JVM, isolando a aplicação em nível de código. Uma aplicação pode compartilhar dados e recursos com outras aplicações, ou utilizar recursos expostos por outras. Não faz uso de método main, mas sim de métodos de entrada padrão do SDK (public void oncreate(bundle bundle) ).
Arquitetura e Componentes
Arquitetura e Componentes Arquitetura Android (fonte: http://developer.android.com/guide/basics/what-is-android.html)
Arquitetura e Componentes Aplicações O Android fornece um conjunto básico de aplicações: Cliente de e-mail Programa para SMS Calendário Mapas Navegador Contatos Aplicações Desenvolvidas personalizadamente Todas as aplicações são escritas utilizando a linguagem de programação Java.
Arquitetura e Componentes Framework da Aplicação Um rico e extenso conjunto de Views que podem ser usadas para construir aplicações, incluindo Listas, Grids, Caixas de Texto, Botões, Web Browser etc. Content Providers que permitem que as aplicações acessem os dados de outras aplicações (Lista de Contatos, por exemplo) e para compartilhar seus próprios dados. O Resource Manager, que provê acesso a recursos que não são de código, por exemplo, as Strings internacionalizadas, gráficos e arquivos de layout XML. O Notification Manager que ativa todas as aplicações para exibir alertas personalizados na barra de status. Um Activity Manager que gerencia o ciclo de vida das aplicações e provê um rastro de navegação comum.
Arquitetura e Componentes Bibliotecas System C library - Uma implementação derivada da "libc" dos sistemas BSD. Ajustadas para desempenho máximo em dispositivos baseados em Linux. Media Libraries - Baseado no PacketVideo's OpenCORE; as bibliotecas suportam gravar e executar os mais populares formatos de áudio e vídeo, tais como imagens estáticas, MPEG4, H.264, MP3, AAC, AMR, JPG e PNG Surface Manager - Gerencia o acesso ao subsistema de "display". É a base para a renderização de gráficos 2 e 3D. LibWebCore - Uma "engine" moderna de Web Browser que potencializa o Android browser e o WebView embutido nas aplicações SGL - A "engine" para a renderização dos gráficos 2D.
Arquitetura e Componentes Bibliotecas 3D libraries - Uma implementação baseada em OpenGL ES 1.0 APIs; as bibliotecas usam, automaticamente, a aceleração 3D por hardware (se for disponível no dispositivo) ou o software otimizado para renderização. FreeType - Renderização de fontes baseados em bitmap e vector. SQLite - Uma poderosa e leve "engine" de banco de dados relacional disponível para todas as aplicações O desenvolvedor faz uso destas bibliotecas nativas através do Framework Android.
Arquitetura e Componentes Android Runtime Android inclui um conjunto de bibliotecas centrais que provêem a maioria das funcionalidades disponíveis na Linguagem Java (JDK) A Dalvik VM executa arquivos no formato.dex o qual é otimizado para a mínima utilização de memória. A Dalvik VM executa as classes compiladas pelo compilador Java (.class) que é transformado no formato.dex pela ferramenta do Android SDK chamada "dx". A Dalvik VM comunica-se diretamente com o Kernel Linux para obter o máximo de eficiência em threads e no consumo mínimo de memória e o máximo de desempenho.
Arquitetura e Componentes Linux Kernel Android é construído sobre o Kernel Linux versão 2.6 e segue os mesmos conceitos de segurança, gerenciamento de memória e processos, rede e modelo de driver. O Kernel também age como uma camada de abstração entre o hardware e o resto da camada de software.
Android Virtual Devices (AVD)
Android Virtual Devices (AVD) Android Virtual Devices (Dispositivos Virtuais do Android) é um conceito criado a partir do Android SDK 1.5 que serve para: Armazenar um conjunto de características para que o emulador possa simular exatamente a configuração de um dispositivo real. É possível criar várias configurações para testar a aplicação em várias circunstâncias diferentes Por exemplo, um dispositivo com ou sem câmera, GPS, quantidade X de memória, suporte ou não à recursos 3D, gravador de vídeo e áudio, cartão de memória de Xmb, limitação de internet à Xkbps/s etc. As características podem ser combinadas para simular o ambiente que mais se aproxime da realidade
Android SDK (Software Development Kit)
Android SDK (Software Development Kit) Android SDK (Software Development Kit) é um conjunto de bibliotecas padrão (APIs) e ferramentas para que os desenvolvedores possam se interagir e desenvolver para o sistema Android de maneira fácil e padronizada. Algumas utilidades são: API básica de desenvolvimento Utilitários para compilação, depuração e monitoramento Emulador completo que simula exatamente as condições reais no computador; permitindo que a aplicação seja testada plena e confiavelmente, antes de ser instalada em um dispositivo real.
Android Development Tools (ADT)
Android Development Tools (ADT) Plugin para Eclipse 3.4 e 3.5 Interação completa com o emulador Visualização de threads e processos atuais Navegação no sistema de arquivos do emulador, permitindo inserir, excluir, atualizar arquivos etc. Assistente para criação fácil de novos projetos Automatiza o processo de compilação, empacotamento e instalação da aplicação no emulador Editor de código fonte com auto complete e edição facilitada dos arquivos XML de Layout Permite a geração do pacote.apk que poderá ser distribuído pela rede para ser instalado em um dispositivo real
Estrutura Básica de uma Aplicação Android
Estrutura Básica de uma Aplicação Android Arquivo AndroidManifest.xml Armazena as informações essenciais da aplicação que está sendo desenvolvida, por exemplo: nome do pacote atividades serviços componentes versão mínima do Android SDK requerido para execução etc. Atribui permissões de acesso que a aplicação precisa ter sobre o dispositivo, por exemplo: acesso à internet disco mapas GPS etc.
Estrutura Básica de uma Aplicação Android O que é uma Activity Uma Atividade é uma ação singular (uma tela) que o usuário pode realizar. A classe de implementação deve estender a classe Activity ou derivadas As atividades interagem com o usuário, então elas se responsabilizam por criar a janela na qual você coloca a interface com o usuário Precisa estar, obrigatoriamente, declarada no arquivo AndroidManifest.xml Principais métodos: oncreate(bundle) Ponto de entrada, chamado quando a atividade inicia. onpause() É chamado quando o dispositivo pausar a aplicação
Estrutura Básica de uma Aplicação Android Diretório de Recursos assets/: Coloque neste diretório todos os arquivos estáticos que você deseja empacotar junto com a sua aplicação e instalar no dispositivo. res/drawable/: Coloque neste diretório todas as imagens de sua aplicação (imagens de tela, de botões, ícones etc.). res/layout/: Coloque neste diretório todos os arquivos XML que representam o layout de uma tela (atividade). res/values/: Coloque neste diretório todos os recursos relacionados a textos. Um arquivo com todos os textos da sua aplicação, por exemplo.
Estrutura Básica de uma Aplicação Android A classe R.java Coração dos sistemas desenvolvidos no Android SDK Armazena em forma de atributos Java uma referência interna para todos os recursos que são colocados nos Diretórios de Recursos Não deve ser editada manualmente, o Eclipse fará isso automaticamente Por exemplo, temos dentro do diretório res/drawable a imagem icon.png ; podemos acessá-la de dentro da nossa aplicação Android com a seguinte expressão Java: R.drawable.icon, onde R é a classe, drawable é o diretório e icon é o nome do recurso.
Estrutura Básica de uma Aplicação Android Perspectiva DDMS do ADT plugin no Eclipse Permite interagir diretamente com o Emulador: Navegando no HD, entre os diretórios, inserindo e excluindo aplicações, colocando arquivos de banco de dados etc. Verificar Threads Heap (espaço consumido e livre) LogCat (os logs gerados pelo Android e pelas aplicações) etc.
Estrutura Básica de uma Aplicação Android Tipos de arquivo do Android.dex São os bytecodes das classes Java compiladas..apk É a aplicação Android completa, empacotada, pronta para ser instalada em um dispositivo móvel. Semelhante a um arquivo JAR (Java Archive); Contém todos os recursos, todos os arquivos.dex e todos os arquivos de configuração e identificação necessários para instalação e execução da aplicação Android em um dispositivo móvel compatível
Estrutura Básica de uma Aplicação Android Mais sobre o arquivo AndroidManifest.xml Elemento uses-permission: Indica as permissões que a aplicação terá para executar determinadas operações para que ela possa funcionar corretamente. Elemento instrumentation: Indica código que deverá ser executado em determinados eventos chave do sistema, por exemplo, ao iniciar uma Activity. Geralmente é utilizado para log e monitoramento. Elemento uses-library: Funciona como se fosse o import do Java. Permite que a aplicação acesse outras libs. O serviço de mapa é um exemplo do que precisa ser importado. Elemento uses-sdk: Indica em qual versão da SDK a aplicação foi construída, entre outros detalhes relacionados. Elemento application: Define os detalhes internos da aplicação
Estrutura Básica de uma Aplicação Android Definindo permissões no arquivo AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.com.discover.aplicacaoandroid "> <uses-permission android:name="android.permission.access_location" /> <uses-permission android:name="android.permission.access_gps" /> <uses-permission android:name="android.permission.internet" /> <application>... </application> </manifest> Neste exemplo, o elemento uses-permission indica algumas permissões que a aplicação precisa ter. É possível notar que é liberado o acesso para localização, GPS do dispositivo e também a internet. Caso estes atributos não tivessem sido explicitamente liberados, a aplicação não teria acesso a eles.
Estrutura Básica de uma Aplicação Android Declarando uma atividade no arquivo AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.commonsware.android.skeleton"> <application> <activity android:name=".principal" android:label="principal"> <intent-filter> <action android:name="android.intent.action.main" /> <category android:name="android.intent.category.launcher" /> </intent-filter> </activity> </application> </manifest> A tag android:name define a classe que implementa a atividade. A tag android:label define o nome da atividade. A tag ident-filter define as condições na qual a atividade será exibida (no caso que esta atividade é a principal e o usuário poderá executá-la através do menu de aplicações do Android)
Utilizando os componentes visuais do Android
Utilizando os componentes visuais do Android Layouts baseados em XML Definir a tela separadamente do código fonte A tela pode ser reajustada sem alterar o código fonte O código fonte consegue acessar os elementos da tela e alterar (ou obter) seus valores e propriedades em tempo de execução Todo objeto View do Android tem um correspondente em XML Não é obrigatório. A tela pode ser formada por código, como em Swing (Não recomendável) Os arquivos XML de layout devem ficar dentro do diretório de recursos /res/layout/
Utilizando os componentes visuais do Android Exemplo de Layout em XML: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:id= @+id/button android:text= android:layout_width= fill_parent android:layout_height= fill_parent /> </LinearLayout> Para referenciar o Layout na Activity, chame o método setcontentview : @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } setcontentview(r.layout.main); // o arquivo de layout chama-se main.xml
Utilizando os componentes visuais do Android Uso da anotação @ Definem comportamento dinâmico em arquivos XML do Android Definem características especiais e acessos a recursos dentro do XML Por exemplo, para definir um texto internacionalizado, basta fazer em um componente: android:text= @string/nomedastringdesejada A key nomedastringdesejada deve estar declarada dentro do arquivo /res/values/strings.xml, desta forma: <string name= nomedastringdesejada >Algum texto!!!</string> Quando o componente for renderizado, ele exibirá o texto Algum Texto!!!
Utilizando os componentes visuais do Android Uso da anotação @+id/... É o modo de definir um ID único para que o componente em XML possa ser acessado e modificado pelo código Java. Deve-se usar a tag no XML (para qualquer componente): <Button android:id= @+id/nomeiddesejado /> Para usar no código Java: @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } Button botao = (Button) findviewbyid(r.id.nomeiddesejado); botao.algumaacao...();
Utilizando os componentes visuais do Android Exemplo de uso do EditText Layout XML: <EditText android:id="@+id/ednomeusuario android:layout_width="fill_parent" android:layout_height="fill_parent" android:singleline="false /> android:inputtype= text Obter valor e alterar no código Java: @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } EditText ednomeusuario = (EditText) findviewbyid(r.id.ednomeusuario); String texto = ednomeusuario.gettext(); // obtem o texto digitado ednomeusuario.settext( Texto desejado ); // atribui texto
Utilizando os componentes visuais do Android Listagens A classe da Atividade deve estender ListActivity O Layout XML deve ter um componente ListView com o id @android:id/list Atribuir o Adaptador da Listagem, que fará a atribuição dos dados da lista: String[] items = { Item 1, Item 2, Item 3 }; setlistadapter( new ArrayAdapter<String>(this, android.r.layout.simple_list_item_1, items)); Criar o método que irá ser chamado quando um item for selecionado: public void onlistitemclick(listview parent, View v, int position, long id) { selection.settext(items[position]); }
Utilizando os componentes visuais do Android Chamar outras Atividades Uma atividade pode chamar outras atividades ou recursos do sistema através de Intents. A chamada ocorre através do método startactivity() A atividade a ser chamada deve estar declarada no arquivo AndroidManifest.xml Podem ser feitas chamadas à atividades e ser notificado quando ela terminar através do método startactivityforresult() e implementando o método de retorno onactivityresult() Exemplo de chamada simples (sem notificação de retorno): startactivity(new Intent(this, ClasseActivity.class));
Banco de Dados SQLite no Android
Banco de Dados SQLite no Android Suporte nativo ao banco de dados SQLite (http://www.sqlite.org) Banco de dados relacional com baixo consumo de memória e desempenho decente Instruções SQL O Banco de Dados pode ser criado pela própria aplicação ou pode ser colocado dentro dela no dispositivo móvel através do navegador de arquivos Pode ser feito backup, copiando-se o arquivo de banco de dados O arquivo de Banco de Dados fica dentro do diretório (no Dispositivo ou Emulador): \data\data\%nomedopacoteaplicacao%\databases\
Banco de Dados SQLite no Android Principais classes e métodos: Método SQLiteDatabase getapplicationcontext().openorcreatedatabase() SQLiteDatabase.execSQL() SQLiteDatabase.query() Cursor.isAfterLast() Cursor.getString(colPos); Cursos.getInt(colPos); Cursor.moveToNext(); Descrição Referência para um database... Abre ou cria um banco de dados e retorna uma referência do tipo SQLiteDatabase Executa uma instrução SQL (create database, por exemplo) Retorna o uma referência para um objeto Cursor contendo o resultado de uma instrução SQL de consulta (select, por exemplo) para poder ser processada Identifica se não é o último registro Retorna o valor em String de um valor retornado Retorna o valor em Integer de um valor retornado Move o cursor para o próximo registro
Utilizando Google Maps com Android
Utilizando Google Maps com Android Total suporte através do componente <MapView> Acessado através da Internet Mapas do mundo inteiro Permite interação (zoom, ir para pontos específicos, rotas etc.) No ambiente de desenvolvimento é necessário registrar-se no Google e obter uma chave de licença para uso
Referências e Leituras Recomendadas
Referências e Leituras Recomendadas Referências Online: Livros: Documentação oficial do Android: http://developer.android.com/guide/index.html http://developer.android.com/reference/packages.html http://developer.android.com/intl/en/community/index.html Portal em português sobre Android (local da comunidade Android): http://www.portalandroid.org/ Google Android: Aprenda a Criar Aplicações Para Dispositivos Móveis Ricardo R. Lecheta Android Essentials Chris Haseman Beginning Android 2 Mark L. Murphy
Discover www.discover.com.br