COMPUTAÇÃO MÓVEL
Prof. M.Sc Sílvio Bacalá Jr
www.facom.ufu.br/~bacala/ANDROID
O que é computação Móvel
• Acesso à informação a qualquer lugar, a qualquer momento.
O que é computação Móvel
• Tecnicamente:
• Processamento
• Mobilidade
• Comunicação sem fio
Dispositivos móveis
• O tamanho é importante
Dispositivos
Outros Dispositivos
Características comuns
• Interface limitada
• Processamento
• Comunicação
• Energia
Mobilidade
Introdução
• Atualmente, a Computação Móvel vem surgindo como um novo paradigma computacional.
• As redes que suportam a computação móvel são as Redes Móveis, que trazem novos requisitos e desafios não encontrados em redes de computadores tradicionais.
Introdução (cont.)
• A Mobilidade é a principal característica das Redes Móveis. Ela traz problemas e desafios que até então, não víamos, ou ignorávamos em ambientes fixos.
• A mobilidade impõe requisitos e gera problemas:
• roteamento;
• velocidade do canal;
• interferências do ambiente;
• localização da estação móvel;
• duração da energia da bateria da estação parada e em movimento;
• entre outros.
Portabilidade
• É a capacidade de um terminal móvel operar a partir de diferentes pontos de conexão, mas perde o contato durante o tempo de mudança do ponto de acesso.
• ao se mover, as conexões são encerradas e reinicializadas no novo ponto de conexão. Ex: WLANs (IEEE 802.11).
Mobilidade
• É a capacidade de um terminal móvel continuar em contato contínuo com os recursos da rede.
• nem o sistema, nem as aplicações precisam ser encerrados e reinicializados;
• modo de acesso a rede: interface sem-fio ;
• redes móveis.
Redes Móveis São redes de computadores sem fio que
possuem nós móveis:
• Redes Infra-Estruturadas:
• Rede de telefonia celular;
• Wireless LANs (IEEE 802.11, HIPERLAN);
• Wireless ATM;
• Redes via satélite.
• Redes Sem Infra-Estrutura:
• Redes Móveis Ad-hoc (MANET);
• WPAN – IEEE802.15(Bluetooth);
• Redes de Sensores;
• Redes Tolerantes a Atraso (DTN)
Estrutura das Redes Móveis
• Parte Fixa (redes de computadores tradicionais):
• ERB- Estação Rádio Base;
• ESM - Estação de suporte à mobilidade;
• Estações Fixas (servidores, roteadores).
• Parte Móvel (equipamentos móveis):
• Estações Móveis (notebook, celular, palmtop, PDA, sensores).
• Existem pesquisas propondo redes totalmente móveis:
• Ex : Rede Móvel Ad hoc.
Problemas em Redes Móveis
• Mobilidade do usuário;
• Instabilidade (variação das condições do canal de comunicação sem fio);
• Baixa largura de banda (bandwidth);
• Alta taxa de erros (10-5 bits errados);
• Gerenciamento do consumo de energia da estação móvel;
• Suporte à QoS;
• Segurança.
Desenvolvimento de aplicativos para dispositivos móveis
usando Android
Plataforma Android
• Ambiente de software para dispositivos móveis
• Não é uma plataforma de hardware
• Inclui
• Sistema operacional baseado em kernel de Linux
• UI rica
• Aplicações de usuário
• Bibliotecas de código
• Frameworks de aplicação
• Suporte a multimídia
• Funcionalidades de telefonia
• etc
Introdução a Android
• Plataforma de software
• Esforço principal da Google
• Colaboração com a Open Handset Alliance
• Quase 50 organizações
• Comprometida com uma plataforma móvel melhor e mais aberta
• Considerada apenas uma novidade por muitos a princípio
• Tornou-se um divisor de águas no mercado móvel
• Baseado em Linux e na máquina virtual Dalvik
Plataforma
• Android é um Sistema Operacional que utiliza em seu núcleo a versão 2.6 do kernel do Linux. É um sistema leve porém poderoso;
• Atualmente o Android equipa Celulares, Tablets PC, SmartPhones, etc;
• Utiliza a Máquina Virtual Dalvik (desenvolvida pela Google).
Características
Desenvolvido para tirar o maior proveito do que os dispositivos podem oferecer
Construído em Java
Suporta um Subset da linguagem Java
Plataforma Android
• Componentes do SO estão em C ou C++
• Aplicações são desenvolvidas em Java
• Na sua imensa maioria
• Aplicações do sistema estão em Java também
• Nenhuma diferença entre aplicações do sistema e aplicações desenvolvidas usando o SDK
• Open-source
Dalvik – Máquina virtual
Possui um conjunto de bibliotecas C/C++
SQLite – Banco de dados relacional
Redes e comunidades disponíveis pelo Google
Android market
Características
Camadas • Kernel linux
• Drivers de hardware
• Bibliotecas
• WebKit, SQLite, gráficos 2D, 3D, mídia, etc
• Managers
• Telefonia, Activities (views), janelas, recursos, etc
• Android runtime
• Core java
• Dalvik VM
Camadas
• Linux kernel
• Base de um kernel linux e JVM otimizada
• Duas tecnologias são cruciais para ambiente
• Porque linux?
• Capacidades e poder de programação
• Open-source
• Cobre mudança rápida de produtos
• Plataforma comprovadamente estável
• Confiabilidade é mais importante que desempenho em mercado móvel
• Voz X características de programação
• Camada de abstração de hardware
Camadas
• Dalvik VM
• Criado por Dan Bornstein;
• Nome de uma cidade em Iceland
• Diminui o tamanho do arquivo executável;
• Formato .dex (Dalvik Executable);
• Não é baseado em byte code Java mas sobre instâncias de arquivos .dex;
• Neste caso para instanciar uma classe Java é necessário convertê-la para .dex;
Camadas
• Dalvik VM
• Não é JME
• Não é Java (??)
• Aplicações são escritas em Java, são compiladas para bytecode Java, mas traduzidas para uma representação similar, porém diferente, chamada “arquivos dex”
• Logicamente equivalentes a bytecodes java, mas permite a aplicações Android rodar em sua própria VM (livre de direitos)
• Do ponto de vista do programador, Android é Java
• Mas o runtime não é estritamente uma Java VM
• Código legado (bibliotecas, por exemplo) são quase compatíveis em fonte (nearly souce compatible)
• Tente recompilar em Android, mas não espere resultados corretos todo o tempo
Introdução a Android
• Palavras chave para o programador:
• Activity
• Intent *
• Resource *
• Service
• ContentProvider *
• BroadcastReceiver
Programação Android - Intents
• Intents
• O que se quer fazer
• Buscar um registro
• Lançar um website
• Facilitam navegação de forma inovadora
• É uma declaração de necessidade
• Desejo de ação ou serviço
• IntentFilter
• Declaração de capacidade e interesse em oferecer assistência para uma necessidade
• Pode ser genérico ou específico em relação a qual Intent se oferece o serviço
Intents
• O atributo de ação de um Intent é tipicamente um verbo
• VIEW, PICK, EDIT
• Várias ações de Intents existentes são definidos como membros da classe Intent
• Programadores podem criar novas ações
• Para ver uma informação, o Intent seguinte é usado:
• android.content.Intent.ACTION_VIEW
• O componente de dados de um Intent é expresso na forma de uma URI e pode ser qualquer informação
Intents – URIs comuns
• Contact lookup
• content://contacts/people
• Map lookup/search
• Gei:0,0?q=23+Route+206+Stanhope+NJ
• Website em navegador
• http://www.google.com
Intents
Intents - Exemplo
• Selecionar um registro em contatos
• Intent pickIntent = new Intent(Intent.ACTION_PICK, Uri.parse(“content://contacts/people”));
• startActivity(pickIntent);
• Este Intent será avaliado e passado para o handler mais apropriado
• Provavelmente uma Activity do sistema chamada com.google.android.phone.Dialer
• Mas pode ser qualquer outra Activity que receba esse tipo de Intent
Intents
• IntentFilter
• Define a relação entre o Intent e a aplicação
• Quando Intent é lançado, o sistema avalia as Activities, Services e BroadcastReceivers disponíveis
• Envia o Intent para o receptor mais apropriado
• Ver registro de contatos e ligar, enviar um SMS, buscar um endereço, ver um vídeo, ver um website, etc
• IntentFilters são definidos geralmente no arquivo de manifesto
• AndroidManifest.xml
Componentes Android - Activity
• É uma tela visível, relação quase de um para um
• Controller do MVC
• Se uma aplicação precisar de uma interface, terá ao menos uma Activity
• Aplicações Android geralmente contém mais de uma
• Cada Activity responde a eventos do usuário e do sistema
• Emprega uma ou mais Views para apresentar os elementos de UI para o usuário
• Classe herdada pelo programador
ARQUITETURA
Arquitetura
Cliente de e-mail
SMS
Calendário
Mapas
Navegador
Contatos e outros.
Aplicações
Fornece uma plataforma de desenvolvimento aberta, o que oferece aos desenvolvedores a capacidade de construir aplicações ricas e inovadoras
Desenvolvedores tem pleno acesso às APIs
A arquitetura do aplicativo é projetado para simplificar a reutilização de componentes
Framework
Conjunto de Views que podem ser usados para construir uma aplicação
Possui um conjunto de serviços e sistemas
Views
41 Android → Arquitetura → Framework → View
Views (1/3)
42 Android → Arquitetura → Framework → View
Views (2/3)
43 Android → Arquitetura → Framework → View
Views (3/3)