A plataforma Android: Uma Introdução Android Iniciativa da Google de prover uma plataforma aberta para Web móvel Open 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./08: Google anunciou o Andoid Market para comercialização de aplicações Set./08: É lançado G1 Primeiro dispositivo para plataforma Android 2
O que é Android? Pilha de softwares para dispositivos móveis: Um sistema operacional Um middleware Conjunto de aplicações Android SDK: Projetos Ferramentas de desenvolvimento Emulador Conjunto de bibliotecas Linguagem de programação: Java Máquina virtual: Dalvik (Kernel GNU/Linux) Android Definição 3 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) Android Características 4
Características Questões dependentes do hardware: Telefonia GPRS/GSM e EDGE Telefonia 3G WiFi Câmera GPS Bússola Acelerômetro Android Características 5 Arquitetura
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
System C Library Media Libraries Surface Manager LibWebCore Bibliotecas Andróid inclui um conjunto de bibliotecas C/C++ usadas por diversos componentes do sistema: SGL 3D Libraries FreeType SQLite Android Arquitetura Bibliotecas 9 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 de renderização 3D altamente t otimizado i incluído no Android. 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
Android Runtime Aplicação Android: É um processo Linux Possui sua própria instância da máquina virtual Dalvik Executa arquivos.dex (ferramenta dx) Android Arquitetura Android Runtime 11 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
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. Os componentes que compõem a aplicação são declarados no arquivo AndroidManifest.xml. 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 para tratar este intent Pode-se também descrever as permissões e parâmetros de instrumentação
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 da aplicação), 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. Tipos de Elementos IntentFilter = desrição de quais intents uma Activity (ou BroadcastReceiver) é capaz de tratar 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
Tipos de Elementos BroadcastReceiver deve ser usado quando a aplicação deve reagir a eventos externos à aplicação (e.g. ligação telefônica, timer, rede wifi disponível, 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 é disparadod Aplicações também podem enviar seus IntentBroadcasts para outras aplicações 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 para que aplicações 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
Aplicação Android Obs: Cada Activity representa uma tela GUI Commands & Display Intent Intent Fiter Act1 Act2 Act3 Act4 Act1 Act2 Act3 CntxtBindService BcastReceiver Manifest Content Provider Manifest Content Provider Service A IntentBcast Android Application Framework/ Dalvik/ C libraries Linux put/ get Memory Instalação do SDK Após realizar o download do SDK, descompactar o arquivo.zip Por exemplo, android_sdk_windows_m3-rc22a.zip Instalando o plugin para Eclipse (ADT) https://dl-ssl.google.com/android/eclipse/ Data Funneling Fases 20
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 com/android/groups html http://forum.portalandroid.org/ 21