Universidade Federal do Maranhão UFMA Programa de Pós-graduação em Engenharia de Eletricidade PPGEE Área de Concentração: Ciência da Computação Disciplina: Introdução a Computação Móvel Professor: Dr. Francisco José da Silva e Silva PLATAFORMA ANDROID Ariel Soares Teles arielsoaresteles@gmail.com
Agenda Conceitos Principais Características Técnicas Arquitetura Blocos de Construção (de uma aplicação) Ciclo de Vida (Aplicação e Atividade) Como desenvolver para Android? Exemplo Simples de Aplicação Referências 23/09/2010 Plataforma Android 2
O que é o Android? É uma plataforma de software de código aberto que inclui um sistema operacional para dispositivos móveis baseado em Linux; É uma plataforma completa para dispositivos móveis, e inclui: Sistema Operacional (Kernel GNU Linux) Middleware Aplicações Android surgiu da parceria da Google com a Open Handset Alliance (OHA), aliança onde figuram os principais atores do mercado móvel mundial. 23/09/2010 Plataforma Android 3
Open Handset Alliance Criada e fundada pela Google, nasceu para o desenvolvimento e implementação do Android em terminais móveis; Atualmente é formada por mais de 30 organizações do setor móvel, com o objetivo de acelerar as inovações nas comunicações móveis e oferecer a seus consumidores um melhor serviço; Dentre as empresas que a formam estão: Fabricantes de Dispositivos Móveis Samsung, LG, HTC, Motorola... Fabricantes de Componentes Texas Instruments, Intel, Nvidia... Fabricantes de Software PV, Ebay, Esmertec... Operadoras Móveis de todo mundo T-Mobile. Italia Telecom, China Mobile... Empresas de Comercialização Aplix, Noser, Systems... 23/09/2010 Plataforma Android 4
Filosofia de Desenvolvimento Android nasceu com uma filosofia de código aberto; A ideia é que programadores de todo o mundo contribuam de maneira livre e constante com o seu desenvolvimento; É liberado também para que os fabricantes desenvolvam aplicações específicas para seus telefones; É importante ressaltar que não é pelo fato da licença ser de código aberto que os desenvolvedores não cobrem pelos programas que venham a desenvolver. 23/09/2010 Plataforma Android 5
Principais Características Técnicas Baseado em Linux, onde todos os serviços básicos, como gerenciamento de drivers, memória e segurança, estão baseados nesse SO de código aberto; Dalvik é o nome da máquina virtual onde executam as aplicações; Ela é otimizada para requerer pouca memoria e poder usar várias instancias simultaneamente sem que o dispositivo fique lento; Os executáveis tem uma extensão.dex, que é uma versão otimizada do.class; A linguagem em que se programa é Java (estratégia da Google). 23/09/2010 Plataforma Android 6
Principais Características Técnicas Navegador web integrado, baseado no projeto open source Webkit o mesmo do iphone e Nokia série 60; Ele é de código aberto; Atua como base para varias aplicações que existem atualmente no mercado, como o navegador Safari. Utiliza o SQLite para armazenamento de dados estruturados; Já vem incluído na SDK; Pode acessar totalmente as suas classes; É possível utilizar também outros BDs. Bluetooth, EDGE, 3G e WiFi: foco nas principais tecnologias de transmissão de dados sem fio; Câmera e GPS: Ter o celular como uma ferramenta para interação com redes sociais; 23/09/2010 Plataforma Android 7
Principais Características Técnicas Biblioteca de gráficos otimizada para dispositivos móveis: biblioteca para gráficos 2d e 3d baseada na especificação OpenGL ES 1.0; Suporte multimídia: compatibilidade com os principais formatos existentes, dentre eles: mpeg4, mp3, aac, amr, jpg, png e gif. Telefonia com tecnologia GSM: As aplicações podem manipular operações telefônicas, caso o fabricante permita esse acesso; 23/09/2010 Plataforma Android 8
Principais Características Técnicas Framework de desenvolvimento de aplicações: Reutilização de código; Facilidade de acesso a recursos exclusivos e manutenção; Ambiente de desenvolvimento com plugin para Eclipse, incluindo: Emulador; Ferramentas para debug e supervisão de memória e desempenho. 23/09/2010 Plataforma Android 9
23/09/2010 Plataforma Android 10
Arquitetura do Android A arquitetura da plataforma Android é dividida em quatro camadas: Kernel GNU Linux; Bibliotecas. Framework para aplicações; As próprias aplicações; Além da porção runtime, necessária para a execução dos aplicativos no dispositivo. 23/09/2010 Plataforma Android 11
23/09/2010 Plataforma Android 12
Linux Kernel A camada mais baixa da arquitetura, Kernel Linux, é a responsável por gerenciar: Processos e threads; Memória; Arquivos e pastas Redes; Drivers dos dispositivos; Energia. Os drivers de dispositivo fornecidos incluem Display, câmera, teclado, WiFi, memória Flash, áudio, etc. 23/09/2010 Plataforma Android 13
Android Runtime A base de desenvolvimento do Android é Java, porém não existe uma JVM e sim outra maquina virtual, a Dalvik, otimizada para interpretar códigos em dispositivos móveis; Ao compilar o bytecode (.class), este é convertido para o formato específico da máquina virtual Dalvik, o.dex (Dalvik Executable), que representa a aplicação compilada; Depois da aplicação Android ter sido compilada é gerado um arquivo único, neste caso com a extensão.apk (Android Package File). 23/09/2010 Plataforma Android 14
Native Libraries A camada de Bibliotecas é formada por um conjunto de bibliotecas escritas em C/C++; Tudo disponível para os desenvolvedores através do Framework de aplicações; Entre as mais importantes encontra-se o SQLite, OpenGL, WebKit, FreeType, Secure Sockets Layer (SSL) e as bibliotecas de mídia que permitem reproduzir arquivos de áudio, vídeo e imagem. 23/09/2010 Plataforma Android 15
Java SDK O Framework é uma base para as aplicações, onde os desenvolvedores tem acesso completo; Pensando na reutilização dos componentes, uma aplicação pode capturar funcionalidades de outra criada anteriormente para o seu desenvolvimento; Nele estão inclusos: Telephony manager: gerência de hardware do dispositivo; View system: conjunto de telas (componentes gráficos) para desenvolver uma aplicação; Content providers: dados que são compartilhados entre várias aplicações, como por exemplo, a agenda; Resource Manager: administrador de recursos que permite acessar a recursos como Strings, gráficos, arquivos de layout; 23/09/2010 Plataforma Android 16
Java SDK Notification Manager: administrador de notificações para mostrar alertas. As aplicações podem adicionar eventos numa barra de de notificações; Activity Manager: administrador de atividades. Este gerencia o ciclo de vida das aplicações e da navegação entre elas; Location Manager: serviço de localização. Permite o celular receber avisos, notificações, eventos, etc. de um lugar específico ou de sua localização atual; Serviço XMPP. Envio de mensagens para aplicações entre terminais Android. Pode ser utilizado entre jogos multiusuário, por exemplo. 23/09/2010 Plataforma Android 17
Applications Conjunto de aplicações do Android, dentre as básicas encontra-se um navegador Web, um cliente de e-mail, um calendário, entre outras; Todas feitas em linguagem Java. 23/09/2010 Plataforma Android 18
Blocos de Construção Na hora de desenvolver aplicações, estes são construídos com baseados em blocos de construção básicos, onde se pode citar os mais importantes: Activity; Intent e IntentReceiver; Service; Content Provider. Nem todas aplicações necessitam de todos os blocos. 23/09/2010 Plataforma Android 19
Activity É o mais utilizado; Uma definição para este bloco seria uma tarefa que é executada com a aplicação e tem uma interação com o usuário; Se implementa extendendo a classe activity e cada uma delas tem um processo de vida próprio; Funcionamento: A maioria das aplicações tem telas múltiplas e cada vez que se adiciona uma nova, a anterior é retirada e guardada numa pilha; Graças a essa pilha o usuário pode navegar para trás pelas activities que estão ativas; Se o Android considerar melhor, pode priorizar ou excluir uma activity da pilha por questões de memória; Exemplo: Mensagem SMS x Calculadora. 23/09/2010 Plataforma Android 20
Intent Intent é um pedido para realizar uma ação; É como fazer uma tentativa de algo ou dizer quero fazer uma coisa ; É um evento genérico de uma aplicação, criado por ela mesma; Pode ser um evento predefinido pelo Android, como fazer chamada, abrir um navegador, enviar um e-mail; Intent é necessário para navegar entre as telas de uma aplicação. 23/09/2010 Plataforma Android 21
IntentReceiver Um IntentReceiver é chamado para executar uma aplicação, por um Intent de outra aplicação que já está em execução; Diferentemente de um Intent, a aplicação não tem que está em execução para que execute um IntentReceiver; Ou seja, o usuário não tem que está interagindo com o programa no momento da chamada de um IntentReceiver. 23/09/2010 Plataforma Android 22
Service Um serviço é equivalente a uma Daemon ou serviço de um sistema operacional tradicional; É executado em background sem necessidade de interagir com o usuário. 23/09/2010 Plataforma Android 23
Content Provider Um provedor de conteúdo é usado quando os dados de uma aplicação são compartilhados com outras; Essa classe implementa um conjunto de métodos padrões para as aplicações que compartilham dados armazenados e extraem a informação que contém no Content Provider. 23/09/2010 Plataforma Android 24
Ciclo de Vida de uma Aplicação No Android é o sistema que determina o cliclo de vida de uma aplicação e não ela mesma; Ou seja, ele determina sua duração baseado nas partes da aplicação que estão rodando no momento e a importância destas para o usuário e na memória disponível; Ele classifica os processos de maneira hierárquica de acordo com sua importância num determinado momento para o sistema, da seguinte maneira: Foreground process: processo em primeiro plano no qual o usuário pode está interagindo, utiliza uma Activity e o sistema só o mata em última opção alta prioridade; 23/09/2010 Plataforma Android 25
Ciclo de Vida de uma Aplicação Visible process: é um processo que utiliza uma Activity, mas não está em primeiro plano, apesar de visível; Um exemplo sería uma tela lançada como diálogo, onde se interage com ele, mas se continua vento a tela principal por trás. Este tipo de processo também tem prioridade e só é eliminado em estados de memória muito crítico, igual um Foreground process. Background process: processo que utiliza uma Activity, mas não está visível na tela; Ou seja, se esse processo for morto não terá uma repercussão direta para o usuário. 23/09/2010 Plataforma Android 26
Ciclo de Vida de uma Aplicação Empty process: processo que não utiliza nenhum componente visualmente ativo; O sistema os eliminará com frequência e pode mantê-los vivos se haver memória suficiente para melhor o tempo de ativação de outro componente dessa aplicação. É importante ressaltar que Activity, IntentReceiver e Services influenciam de maneira importante no tempo de execução das aplicações; Possíveis erros no uso deste podem fazer que processos importantes para o usuário finalizem antes do tempo. 23/09/2010 Plataforma Android 27
Ciclo de Vida de uma Atividade (Activity) Parecido com o ciclo de vida de uma aplicação, porém trabalha com uma pilha de activities ; Nela o sistema empilha exclusivamente activities que estão em execução; Quando se muda de uma Activity para outra, a nova Activity que é criada, é colocada na parte superior da pilha e passa a ser a Activity que executa nesse momento, enquanto a anterior fica por baixo na pilha; Com isso, deve-se preocupar para que a Activity principal que está no topo da pilha não seja eliminada (morta) da pilha. 23/09/2010 Plataforma Android 28
Ciclo de Vida de uma Atividade (Activity) Uma Activity pode ter quatro estados, de acordo com sua interação com o usuário: Ativa ou em execução: ocorre quando a Activity está em execução na parte superior da pilha, sendo a última Activity criada pela aplicação e última que o sistema tentará eliminar; Em pausa: ocorre quando a Activity deixa de ser a principal, mas ainda continua visível na tela. Isto é possível em activities transparentes que deixam ver a inferior. Ela continua viva mantendo toda informação do usuário; Parada: diferencia de pausa por não ser visível na tela. Continua mantendo toda informação do usuário, mas pode ser eliminada pelo sistema para liberar memória; Eliminada: Activity morta caso o sistema necessite de memória ou simplesmente porque a aplicação tenha pedido. 23/09/2010 Plataforma Android 29
23/09/2010 Plataforma Android 30
23/09/2010 Plataforma Android 31
Ciclo de Vida Se pode ver que o ciclo de vida de uma aplicação está diretamente relacionado com o ciclo de vida de uma Activity, dando prioridade para os processos que tem pelo menos uma ativa; Conclui-se então que o Android considera com prioridade aqueles processos que o usuário está interagindo e faz o possível para que não seja afetado em estados críticos de memória. 23/09/2010 Plataforma Android 32
O que é necessário para desenvolver para a plataforma Android? JDK; Eclipse; Android SDK; Plug-in ADT (Android Development Tools) para o Eclipse; Configuração de variáveis de ambiente. 23/09/2010 Plataforma Android 33
Exemplo Simples Localizador GPS 23/09/2010 Plataforma Android 34
Referências Rick Rogers, John Lombardo, Zigurd Mednieks, and Blake Meike. Android Application Development. First Edition. USA, Sebastopol, CA. O Reilly Media, Inc., 2009. Judit Balaguero Peña. Trabalho de Conclusão de Curso: Ingeniería Técnica de Telecomunicaciones, especialidad Telemática. Estudio de la plataforma Android. Orientador: Antoni Oller Arcas. 2008 Ed Burnette. Hello, Android: Introducing Google s Mobile Development Platform. 3rd Edition. The Pragmatic Bookshelf Raleigh, USA, 2010. Sayed Hashimi, Satya Komatineni and Dave MacLean. Pro Android 2. USA, 2010. 23/09/2010 Plataforma Android 35
Dúvidas? Perguntas? Sugestões? 23/09/2010 Plataforma Android 36
Obrigado!!! 23/09/2010 Plataforma Android 37