O que é o Android? O Android é um sistema operacional para dispositivos móveis, baseado em uma plataforma de código aberta sob a licença apache, permitindo que os fabricantes possam modificar seu código fonte, essa liberdade permite adicionar novos recursos e incorporá-los ao sistema, desta forma o software evolui constantemente. O sistema possui cerca de 12 milhões de linhas de código, sendo: 3 milhões em XML; 2.8 milhões em C; 2.1 milhões em Java; e 1.75 milhões em C++. Ao contrário do que muita gente pensa, o Android não é desenvolvido apenas pela Google, existe um grupo de empresas como a Motorola, Samsung, LG, Sony Ericsson, HTC, China Mobile, Intel, Asus e muitas outras, que forma o Open Handset Alliance (OHA) com o objetivo de desenvolver a plataforma. Primeiro dispositivo para plataforma Android foi lançado em setembro de 2008 O que é o Android Características
Arquitetura Android A arquitetura do sistema operacional Android é uma pilha de programas agrupados em camadas. Podemos dividir essas camadas em níveis zero, um, dois e três, conforme figura abaixo.
Nível zero No nível zero, temos a base da pilha, ou seja, o Kernel (Linux Kernel), para desenvolvê-la foi utilizado à versão 2.6 do Sistema Operacional Linux. Nele encontraremos os programas de gerenciamento de memória, configurações de segurança e vários drivers de hardware. Nível um No nível um, temos as camadas de bibliotecas (Libraries) e tempo de execução (Android RunTime). ƒ 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 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 soft d d i ã 3D lt t ti i d i l íd A d id ftware de renderização 3D altamente otimizado 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 A camada de biblioteca é um conjunto de instruções que dizem ao dispositivo como lidar com diferentes tipos de dados, incluindo um conjunto de biblioteca C / C + + usadas por diversos componentes do sistema e são expostas a desenvolvedores através da estrutura de aplicativo Android. A camada de tempo de execução inclui um conjunto de bibliotecas do núcleo Java (Core Libraries). Para desenvolver aplicações para o Android, os programadores utiliza a linguagem de programação Java, nesta camada encontraremos a Máquina Virtual Dalvik (DVM). O Android usa a máquinas virtuais Dalvik para rodar cada aplicação com seu próprio processo. Isso é importante por algumas razões: nenhuma aplicação é dependente de outra e se uma aplicação parar, ela não afeta quaisquer outras aplicações rodando no dispositivo e isso
simplifica o gerenciamento de memória, pois a máquina virtual está baseada em registradores e desenvolvida de forma otimizada para requerer pouca memória e permitir que múltiplas instâncias executem ao mesmo tempo. Ao contrário do que se afirma, que a Dalvik é uma máquina virtual Java, isso não é verdadeiro, pois ela executa seu próprio tipo de bytecodes. Nível dois No nível dois, temos a camada de framework de aplicação (Application Framework), programas que gerenciam as aplicações básicas do telefone. Os desenvolvedores têm acesso total ao framework como um conjunto de ferramentas básicas com o qual poderá construir ferramentas mais complexas. Nível três No nível três, temos a camada de aplicações e as funções básicas do dispositivo. Esta é a camada de interação entre o usuário e o dispositivo móvel, nela encontramos aplicativos cliente de e-mail, programa de SMS, calendário, mapas, navegador, contatos entre outros.
Estrutura de uma aplicação Activities Intents e IntentFilters (e BroadcastReceivers) Services Content Providers Nem toda aplicação precisa ter todos os tipos, mas terá alguma combinação. 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) 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 app p ro riada para tratar este intent Pode-se também descrever as permissões e parâmetros de instrumentação 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ção MAIN (entrada da aplicação), VIEW, PICK, EDIT, etc.. Exemplo: para visualizar informação de contato cria-se um intent com ação VIEW e a URI indicando os dados associados a uma pessoa IntentFilter Descrição de quais intents uma Activity (ou BroadcastReceiver) é capaz de tratar 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. Activities com IntentFilters equivalentes podem ser trocadas a qualquer instante 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 iniciá-la quando o BroadcastReceiver é disparado Aplicações também podem enviar seus IntentBroadcasts para outras aplicações. 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 si; 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
Referências: http://www.tiselvagem.com.br/geral/desenvolvendo-para-android-arquitetura-android/ (Acessado em 17:37 29/02/2016) http://www-di.inf.puc-rio.br/~endler/courses/mobile/dev-tools/android.pdf (acessado em 18:01 29/02/2016)