A plataforma Android: Uma Introdução © Markus Endler Android Iniciativa da Google de prover uma plataforma aberta para Web móvel Open p Handset Alliance Associação de um grupo bastante heterogêneo de empresas (operadoras, fabricantes de celulares) > 30 companhias Força do projeto se baseia no conceito de colaboração Set Set./08: /08: Google anunciou o Andoid Market para comercialização de aplicações Set./08: É lançado G1 Primeiro dispositivo para plataforma Android 2 1 O que é Android? Pilha de softwares para dispositivos móveis: Android SDK: Um sistema operacional Um middleware Conjunto de aplicações Projetos Ferramentas de desenvolvimento Emulador Conjunto de bibliotecas Linguagem de programação: Java Máquina virtual: Dalvik (Kernel GNU/Linux) 3 Android → Definição Características Application Framewok: Permite o reuso e a substituição de componentes Máquina virtual Dalvik: Otimizada para dispositivos móveis Um navegador integrado: Baseado no projeto WebKit (código aberto) Gráficos otimizados: Bibliotecas gráficas 2D Gráficos 3D baseado na especificação OpenGL 1.0 SQLite: Para armazenamento de dados estruturados Suporte para mídias: Aúdio, vídeo, formatos de imagens (MPEG4, H.264, MP3, AAC, AMR, JPG, PNG e GIF) 4 Android → Características 2 Características Questões dependentes do hardware: Telefonia T l f i GPRS/GSM e EDGE Telefonia 3G WiFi Câmera GPS Bússola Acelerômetro 5 Android → Características Arquitetura © Markus Endler 3 Aplicações Cliente de email Programa SMS Calendário Mapas Navegador Contatos Entre outros. 7 Android → Arquitetura → Aplicações Framework View Content Providers Resource Manager Notification Manager Activity Manager 8 Android → Arquitetura → Framework 4 Bibliotecas Andróid inclui um conjunto de bibliotecas C/C++ usadas por diversos componentes do sistema: System C Library Media Libraries Surface Manager LibWebCore SGL 3D Libraries FreeType SQLite 9 Android → Arquitetura → Bibliotecas Bibliotecas System C library – uma implementação derivada da biblioteca C padrão sistema (libc) do BSD adaptada para dispositivos rodando Linux. Media Libraries – baseado no PacketVideo’s OpenCORE; as bibliotecas suportam os mais populares formatos de audio e video, bem como imagens estáticas. Surface Manager –acesso ao subsistema de exibição bem como as múltiplas camadas de aplicações 2D e 3D; LibWebCore – um web browser engine utilizado no Android Browser SGL – o engine de gráficos 2D 3D libraries – uma implementação baseada no OpenGL 1.0; as bibliotecas utilizam aceleração 3D via hardware (quando disponível) ou o software ft d de renderização d i ã 3D altamente lt t otimizado ti i d iincluído l íd no A Android. d id FreeType – renderização de fontes bitmap e vector SQLite – um poderoso e leve engine de banco de dados relacional disponível para todas as aplicações © Markus Endler 5 Android Runtime Aplicação Android: É um processo Linux Possui sua própria instância da máquina virtual Dalvik Executa arquivos .dex (ferramenta dx) 11 Android → Arquitetura → Android Runtime Linux Kernel Versão do kernel: 2.6 O kernel atua como uma camada de abstração entre o hardware e o resto da pilha de software Serviços: Segurança Gerenciamento de memória Gerenciamento de processos Pilha de protocolos de rede Modelo de drives 12 Android → Arquitetura → Linux Kernel 6 Estrutura de uma aplicação Android Existem 4(5) tipos básicos de elementos: Activities Intents e IntentFilters (e ( BroadcastReceivers)) Services Content Providers Nem toda aplicação precisa ter todos os tipos, mas terá alguma combinação destes destes. Os componentes que compõem a aplicação são declarados no arquivo AndroidManifest.xml. © Markus Endler Android Manifest AndroidManifest.xml é necessário p/ cada aplicação. Descreve os elementos da aplicação: (Activities, Content Providers, Services, and Intent Receivers) globalmente visíveis, as classes de implementação de cada componente, e qual tipo de dado este pode tratar, quando pode ser ativado, etc. Compara-se cada Intent gerado com os Intentfilters registrados para identificar qual é a atividade mais apropriada p p p para tratar este intent Pode-se também descrever as permissões e parâmetros de instrumentação © Markus Endler 7 Tipos de Elementos Activity = uma tela de sua aplicação; cada uma é uma especialização da classe base Activity. Sua classe será composta de views que respondem a eventos; uma atividade pode retornar um valor para outra atividade; Intent = classe usada para passar o controle de uma atividade para outra; um intent consiste de uma ação (evento/requisição) e uma URI indicando um dado sobre o qual a ação deve ser executada. Valores comuns para ações: õ MAIN ((entrada t d d da aplicação), li ã ) VIEW, PICK, EDIT, etc. Exemplo: para visualizar informação de contato criase um intent com açãoVIEW e a URI indicando os dados associados a uma pessoa. © Markus Endler Tipos de Elementos IntentFilter = desrição de quais intents uma Activity (ou B d BroadcastReceiver) tR i ) é capaz d de ttratar t e são ã publicados no arquivo AndroidManifest.xml Exemplo: Uma Activity capaz de mostrar dados de uma pessoa iria publicar um IntentFilter com a capacidade VIEW para determinados dados; Obs: Activities com IntentFilters equivalentes podem ser trocadas a qualquer instante © Markus Endler 8 Tipos de Elementos BroadcastReceiver deve ser usado quando a aplicação deve reagir a eventos externos à aplicação (e.g. ligação telefônica, telefônica timer, timer rede wifi ifi disponí disponível, el etc etc.)) BroadcastReceivers são definidos no AndroidManifest.xml, ou são registrados usando método Context.registerReceiver(). Obs: A aplicação não precisa estar executando; o sistema vai inciá-la quando o BroadcastReceiver é di disparado d Aplicações também podem enviar seus IntentBroadcasts para outras aplicações © Markus Endler Tipos de Elementos Serviço = uma thread (processo) executando em background, independentemente de uma Interface do usuário (p.ex. tocar músicas de uma playlist) Activities (para escolha do album) podem se conectar a um serviço usando Context.bindService() para inicia-lo (se já não executa) .Uma vez conectado, pode-se interagir com ele através da interface exportada pelo mesmo (p.ex. p/ “pause”) ContentProvider = uma classe usada p para q que aplicações p ç compartilhem dados entre sí ; implementa um conjunto de métodos padrão para armazenar e recuperar dados de um determinado tipo; Obs: aplicações também podem interagir através de um banco de dados SQL ou de arquivos © Markus Endler 9 Aplicação Android Obs: Cada Activity representa uma tela Intent GUI Commands & Display y Act1 Act2 Act3 Act4 BcastReceiver Content Provider Manifest Act1 Act2 Manifest Intent Fiter Act3 CntxtBindService Service A Content Provider IntentBcast put/ get Android Application Framework/ Dalvik/ C libraries Linux Memory © Markus Endler Instalação do SDK Após realizar o download do SDK, descompactar o arquivo .zip zip Por exemplo, android_sdk_windows_m3-rc22a.zip Instalando o plugin para Eclipse (ADT) https://dl-ssl.google.com/android/eclipse/ 20 Data Funneling → Fases 10 Para saber mais... Leia a documentação Developer Toolbox http://code.google.com/android/toolbox/index.html Developing Applications: http://code.google.com/android/devel/index.html Consulte os grupos de discussão: http://code.google.com/android/groups.html http://code google com/android/groups html http://forum.portalandroid.org/ 21 11