smartandroid€¦ · o presente minicurso introduz o sistema android, bem como as ferramentas e o...

198
SmartAndroid Laboratório Tempo www.tempo.uff.br Prof. Orlando Loques - [email protected] David Barreto - [email protected] Douglas Mareli - [email protected] Matheus Erthal - [email protected]

Upload: others

Post on 15-Sep-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

SmartAndroid

Laboratório Tempowww.tempo.uff.br

Prof. Orlando Loques - [email protected] Barreto - [email protected] Mareli - [email protected] Erthal - [email protected]

Page 2: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Prefácio

O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os potenciais e as limitações do ambiente, mantendo-se um ponto de vista prático. Além disso, será também apresentada uma infraestrutura para a criação de aplicações para ambientes inteligentes (smarthomes), considerando um ambiente populado com dispositivos Android, em desenvolvimento no Laboratório Tempo. Ao final do curso, o participante estará capacitado a criar aplicativos básicos e terá noções de técnicas mais avançadas.

Page 3: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Tópicos

1. Introdução

2. Instalação

3. Ambiente de Programação Android

4. Principais Componentes do Framework

5. Desenvolvimento de Aplicação

6. SmartAndroid

Page 4: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

1. Introdução

Laboratório Tempowww.tempo.uff.br

Page 5: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Introdução

Android ● Tecnologia acessível● Sistema portável para dispositivos embarcados● Componentes do seu framework facilitam a programação

○ Activity para interfaces○ Service para separar da estrutura da interface o código

essêncial○ ContentProvider para armazenamento de dados○ BroadcastReceiver para responder a eventos

Page 6: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Introdução

Arquitetura● Java● Dalvik VM● C/C++● Kernel

Fonte: developer.android.com

Page 7: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Características

Dalvik Virtual Machine

Page 8: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Características

Dalvik Virtual Machine● Adaptações para CPU baixa, pouca

RAM, e pouco consumo de bateria

Page 9: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Características

Dalvik Virtual Machine● Adaptações para CPU baixa, pouca

RAM, e pouco consumo de bateriaAndroid SDK

● Facilita emulação, depuração e avaliação de desempenho

Page 10: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Características

Dalvik Virtual Machine● Adaptações para CPU baixa, pouca

RAM, e pouco consumo de bateriaAndroid SDK

● Facilita emulação, depuração e avaliação de desempenho

SQLite● Versão leve do SQL

Page 11: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Características

Dalvik Virtual Machine● Adaptações para CPU baixa, pouca

RAM, e pouco consumo de bateriaAndroid SDK

● Facilita emulação, depuração e avaliação de desempenho

SQLite● Versão leve do SQL

Suporte de mídia● aceita os formatos padrões (PNG,

MP3, MPEG4, ...)

Page 12: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Ciclo do Aplicativo

Definição de versão● Principais versões

Desenvolvimento● Android Package (APK)

Publicação● Google Play Store

Page 13: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

Android possui 68,1% do mercado de smartphones, na frente do iOS com 16,9%, Blackberry com 4,8%, Symbian com 4,4%, Windows Mobile e Windows Phone 7 com 3,5%.

Dados do segundo trimestre de 2012

Fonte: g1.com.br

Page 14: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

1.0, 1.1, 1.5 e 1.6● Não aceitam atualização para versões 2.x

Page 15: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

1.0, 1.1, 1.5 e 1.6● Não aceitam atualização para versões 2.x

Eclair 2.(0;01;1), Froyo 2.2 e Gingerbread 2.3.x● Versões ainda encontrada em celulares

Page 16: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

1.0, 1.1, 1.5 e 1.6● Não aceitam atualização para versões 2.x

Eclair 2.(0;01;1), Froyo 2.2 e Gingerbread 2.3.x● Versões ainda encontrada em celulares

Honeycomb 3.x● Difundida em tablets

Page 17: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

1.0, 1.1, 1.5 e 1.6● Não aceitam atualização para versões 2.x

Eclair 2.(0;01;1), Froyo 2.2 e Gingerbread 2.3.x● Versões ainda encontrada em celulares

Honeycomb 3.x● Difundida em tablets

Ice Cream Sandwich 4.0.x ● API para comunicação

melhorada

Page 18: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Principais Versões

1.0, 1.1, 1.5 e 1.6● Não aceitam atualização para versões 2.x

Eclair 2.(0;01;1), Froyo 2.2 e Gingerbread 2.3.x● Versões ainda encontrada em celulares

Honeycomb 3.x● Difundida em tablets

Ice Cream Sandwich 4.0.x ● API para comunicação

melhoradaJelly Bean

● Mais rápido e fornece novas opções de acessibilidade

Page 19: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Ice Cream Sandwich 4.0

O Ice Cream Sandwich é capaz de funcionar em qualquer tipo de aparelho: de smartphones e tablets a câmeras, sons de carro, geladeiras e até no espelho do banheiro.

Page 20: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Android Package (APK)

Arquivo instalador do aplicativoColeção de componentes

● Componentes compartilham recursos○ E.g. preferências, base de dados e

espaços● Componentes compartilham processos

LinuxAPKs são isoladas

● Se comunicam através de Intent ou AIDL

Page 21: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Google Play Store

Page 22: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

2. Instalação

Laboratório Tempowww.tempo.uff.br

Page 23: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Instalação

SDK do Android● É o kit que permite desenvolver aplicativos para a plataforma

Android

ADT Plugin (Eclipse)● Plugin do Android para Eclipse que facilita o desenvolvimento

de aplicativos

Page 24: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Android SDK

Baixe o SDK do Android através do link http://developer.android.com/sdk/index.html

Windows● Execute o instalador e siga os passos indicados

○ Evite escolher pastas com espaços em branco no nomeLinux e Mac

● Descompacte o arquivo e siga os passos indicados

Page 25: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

ADT Plugin

Baixe o Eclipse Classic 4.2 http://www.eclipse.org/downloads/

Download do ADT Plugin● Na IDE escolha Help>Install New Software e clique em Add● Na nova caixa preencha com o nome "ADT Plugin" e com a URL

https://dl-ssl.google.com/android/eclipse/● Clique em OK e clique em Next em duas etapas, na terceira leia

e aceite os termos e clique em Finish● Reinicie a IDE e na tela de boas vindas do Android selecione

Use existing SDKs e o local do Android SDK

Page 26: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 27: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Finish

Page 28: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 29: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

3. Ambiente de Programação Android

Laboratório Tempowww.tempo.uff.br

Page 30: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Estrutura

O Android mantém os recursos (imagens, strings, etc) fora do código, possibilitando o uso de recursos alternativos (várias telas, outros idiomas) e maior facilidade de manutenção

● Recursos○ XMLs, Imagens, Sons, etc○ Organizados em pastas específicas

■ Podem especificar idioma, orientação e tamanho da tela, etc

■ Em tempo de execução, android utiliza o recurso apropriado, de acordo com a configuração do dispositivo

○ Classe R contém os "ponteiros" para um recurso

Page 31: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Estrutura

Page 32: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Classe R

"Liga os recursos com o código Java". Classe gerada automaticamente pelo ambiente Android. Contém constantes representam os recursos da aplicação

● Ex:

myButton.setText(“Constant string”);

Page 33: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Classe R

"Liga os recursos com o código Java". Classe gerada automaticamente pelo ambiente Android. Contém constantes representam os recursos da aplicação

● Ex:

myButton.setText(“Constant string”);

myButton.setText(R.strings.btnString);

Page 34: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Classe R

"Liga os recursos com o código Java". Classe gerada automaticamente pelo ambiente Android. Contém constantes representam os recursos da aplicação

● Ex:

myButton.setText(“Constant string”);

myButton.setText(R.strings.btnString);

<?xml version="1.0" encoding="utf-8"?><resources>

<string name="btnString">Constant string</string>...

</resources>

Page 35: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Classe R

"Liga os recursos com o código Java". Classe gerada automaticamente pelo ambiente Android. Contém constantes representam os recursos da aplicação

● Ex:

myButton.setText(“Constant string”);

myButton.setText(R.strings.btnString);

<?xml version="1.0" encoding="utf-8"?><resources>

<string name="btnString">Constant string</string>...

</resources>

<?xml version="1.0" encoding="utf-8"?><resources>

<string name="btnString">String constante</string>...

</resources>

Page 36: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Layout

Define a estrutura visual para uma interface de usuário● Como está organizada sua interface?

○ Componentes○ Landscape / Portrait○ Tamanhos○ LinearLayout, RelativeLayout, TableLayout, etc

● Elementos de IU○ View

■ Botões, caixas de texto, etc■ Podem ser customizados

○ Declarados em um XML○ Criados programaticamente

http://developer.android.com/guide/topics/resources/layout-resource.html

Page 37: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Drawable

Representa um gráfico que pode ser desenhado na tela● Bitmaps

○ Formatos PNG, 9.PNG, JPG, GIF● Pode especificar alternativas para outras configurações

○ Telas difeferentes○ Tamanho, resolução, etc○ Ex:

■ drawable-hdpi, drawable-ldpi, drawable-mdpi

Page 38: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Values

Arquivos XML que contém valores simples, como strings e cores

● strings.xml○ Usadas em Labels, Títulos e textos em geral

● colors.xml○ Cor no formato RGBA (Red, Green, Blue, Alpha)

● arrays.xml○ Declara arrays de qualquer tipo

● Pode haver um recurso para cada idioma○ values-en, values-ptBR

Page 39: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Manifest

Apresenta informações essenciais sobre uma aplicação para o sistema Android

● Nome, Pacote, Versão do código e do Android, Ícones● Principais componentes que usa

○ Activity○ Service○ BroadcastReceiver○ ContentProvider

● Permissões que requer

http://developer.android.com/guide/topics/manifest/manifest-intro.html

Page 40: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Manifest - Exemplo

http://developer.android.com/guide/topics/manifest/manifest-intro.html

Page 41: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Manifest - Permissões

Aplicações podem requisitar recursos que requerem permissões

● Declaradas no Manifest● Usuário ao instalar a app visualiza o que ela requer

○ Pode aceitar ou não● Exemplos

○ Acesso à internet○ Acessar a câmera○ Bluetooth○ Utilizar o sistema de arquivos○ +++

http://developer.android.com/guide/topics/security/permissions.html

Page 42: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Emulador

Dispositivo virtual que roda no computador● Simula o HW e SW de um dispositivo móvel típico● Permite o desenvolvimento e teste de aplicações sem a

necessidade de se ter um dispositivo*○ Instalação de aplicações○ Recebimento de SMS○ Recebimento de ligações○ Rede

● No ambiente Android -> AVD (Android Virtual Device)

Page 43: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Emulador

Page 44: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

4. Principais Componentes

Laboratório Tempowww.tempo.uff.br

Page 45: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service

3. Intent

4. Content Provider

5. Broadcast Receiver

6. Aplication Context

Page 46: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

○ Componente de representação gráfica (tela)○ Uma aplicação pode possuir várias atividades

■ E.g. Agenda: 2 atividades: agendar tarefa, vizualizar tarefas

2. Service

3. Intent

4. Content Provider

5. Broadcast Receiver

6. Aplication Context

Page 47: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Activity

Uma aplicação pode ser composta de várias atividades

● Cada tela é implementada por uma atividade

● Quando se move para outra tela uma nova atividade é iniciada

● Uma atividade pode retornar resultados para a anterior

Fonte: http://www.opersys.com/downloads/cc-slides/embedded-android/

Page 48: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF Fonte: http://ofps.oreilly.com

Ciclo de vidaActivity

Page 49: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service○ Processamento de fundo (sem tela)

■ E.g. MP3 player

3. Intent

4. Content Provider

5. Broadcast Receiver

6. Aplication Context

Page 50: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Service

Características● Longas tarefas de execução fora de uma Activity

○ Exemplo: download de dados periodicamente

Page 51: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Service

Características● Longas tarefas de execução fora de uma Activity

○ Exemplo: download de dados periodicamente● Podem ser iniciados e parados explicitamente

Page 52: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Service

Características● Longas tarefas de execução fora de uma Activity

○ Exemplo: download de dados periodicamente● Podem ser iniciados e parados explicitamente● Comunicação com serviço

○ No mesmo processo se Service na mesma APK○ Entre processos em diferentes APK através de AIDL

Page 53: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF Fonte: http://ofps.oreilly.com

Ciclo de vida Service

Page 54: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service

3. Intent○ Basicamente é uma mensagem que informa sobre algo que

aconteceu ou que deseja que algo aconteça

4. Content Provider

5. Broadcast Receiver

6. Aplication Context

Page 55: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Estrutura de dados passiva

● Possui uma descrição abstrata de uma ação a ser executada ou uma descrição de algo que aconteceu e está sendo anunciado

Page 56: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Estrutura de dados passiva

● Possui uma descrição abstrata de uma ação a ser executada ou uma descrição de algo que aconteceu e está sendo anunciado

● Diferentes mecanismos são utilizados para entregar um intent a cada componente

● 3 dos componentes de uma aplicação são ativados através de Intents, são eles:

○ Activity, Service e Broadcast Receiver

Page 57: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Pode ser usado com:○ startActivity

■ para inicializar uma Activity

Page 58: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Pode ser usado com:○ startActivity

■ para inicializar uma Activity○ broadcastIntent

■ para ser enviado aos interessado em um BroadcastReceiver

Page 59: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Pode ser usado com:○ startActivity

■ para inicializar uma Activity○ broadcastIntent

■ para ser enviado aos interessado em um BroadcastReceiver

○ startService ou bindService■ para comunicação com um serviço background

Page 60: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Intent

● Intent Explícito○ Remetente especifica destinatário○ Exemplo: chamar outra atividade

● Intent Implícito○ Remetente especifica tipo de destinatário○ Exemplo: chamar navegador web passando uma URL

Page 61: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service

3. Intent

4. Content Provider○ Permite compartilhamento de dados

5. Broadcast Receiver

6. Aplication Context

Page 62: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider

● Interface para compartilhar dados entre aplicações

Page 63: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider

● Interface para compartilhar dados entre aplicações

● Pequenas quantidades de dados podem ser enviadas através de Intents

○ Content Provider são melhor capacitadospara enviar um grande conjunto de dados

Page 64: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider

● Interface para compartilhar dados entre aplicações

● Pequenas quantidades de dados podem ser enviadas através de Intents

○ Content Provider são melhor capacitadospara enviar um grande conjunto de dados

● Adere ao princípio CRUD○ Create, Read, Update, Delete

Page 65: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider - Exemplos de uso

● Contacts Provider○ expõe informações de

contato dos usuários○ Exemplo:

■ Contacts app não tem dados

■ Contacts Providernão tem interface

Page 66: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider - Exemplos de uso

● Contacts Provider○ expõe informações de

contato dos usuários○ Exemplo:

■ Contacts app não tem dados

■ Contacts Providernão tem interface

● Settings Provider○ expõe configurações do

sistema

Page 67: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Content Provider - Exemplos de uso

● Contacts Provider○ expõe informações de

contato dos usuários○ Exemplo:

■ Contacts app não tem dados

■ Contacts Providernão tem interface

● Settings Provider○ expõe configurações do

sistema

● Media Store○ armazena e compartilha mídias, como fotos e músicas

Page 68: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service

3. Intent

4. Content Provider

5. Broadcast Receiver○ Resposta a eventos, os quais podem ativar processos

■ E.g. chamada de telefone

6. Aplication Context

Page 69: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Broadcast Receiver

● Implementação Publish-Subscribe do sistema○ padrão Observer

Page 70: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Broadcast Receiver

● Implementação Publish-Subscribe do sistema○ padrão Observer

● São eventos do sistema também:○ mensagens SMS recebidas, chamadas telefônicas, bateria

sem carga, sistema inicializado (boot)

Page 71: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Broadcast Receiver

● Implementação Publish-Subscribe do sistema○ padrão Observer

● São eventos do sistema também:○ mensagens SMS recebidas, chamadas telefônicas, bateria

sem carga, sistema inicializado (boot)

● Uma aplicação pode enviar mensagens broadcast internamente ou para outras aplicações

Page 72: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Componentes do Framework1. Activity

2. Service

3. Intent

4. Content Provider

5. Broadcast Receiver

6. Aplication Context○ Estado atual da aplicação

Page 73: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Aplication Context

● Ambiente da aplicação○ Processo dentro do qual todos os componentes estão rodando

● Possibilita:○ o compartilhamento de dados entre diversos componetes○ acesso a recursos específicos da aplicação e classes○ chamadas no nível da aplicação, como inicializar atividades,

disparar intents em broadcast, receber intents, etc

Page 74: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Aplication Context

● Pode-se dizer que Activities, Services, Content Providers e Broadcast Receivers, juntos, fazem uma aplicação

○ Pode-se dizer também que eles vivem em um outro Application Context

● Application Context X Activity Context○ Ambos implementam Context

■ Aplication Context está ligado ao ciclo de vida da aplicação■ Activity Contexto está ligado ao ciclo de vida da atividade

Page 75: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sumário: Componentes do Framework1. Activity

○ Componente de representação gráfica (tela)2. Service

○ Processamento de fundo (sem tela)3. Intent

○ Mensagem que informa sobre algo que aconteceu ou que deseja que algo aconteça

4. Content Provider○ Permite compartilhamento de dados

5. Broadcast Receiver○ Resposta a eventos, os quais podem ativar processos

6. Aplication Context○ Estado atual da aplicação

Page 76: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5. Desenvolvimento de Aplicação

Laboratório Tempowww.tempo.uff.br

Page 77: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Yamba

Objetivo● O Yamba é um aplicativo desenvolvido para demonstrar o uso

dos principais componentes do framework do AndroidDescrição

● O Yamba (Yet Another Micro Blogging App) é um micro-blog que imita o twitter, com uma tela de atualização de status e uma linha do tempo

Page 78: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Desenvolvimento

Fases do projeto Yamba● Interface de Usuário Android● Preferências, Sistema de arquivos, Menus e Intents● Android Services● Trabalhando com base de dados● Listas e adaptadores● Broadcast Receivers● Content Providers● Serviços do sistema

Page 79: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 80: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.1. Interface de usuário Android

Laboratório Tempowww.tempo.uff.br

Page 81: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 82: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android utiliza duas abordagens:● Declarativa

○ XML -> "Aparência dessa interface"○ Similar a uma página HTML○ Vantagens

■ Pode-se utilizar ferramentas WYSIWYG● "What you see is what you get"● Ferramentas visuais

○ Android ADT contém uma■ O documento é "human-readable"

● !(Especialistas) podem editar esse arquivo○ Desvantagens

■ Tratar input, definir comportamento

Page 83: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android utiliza duas abordagens:● Programática

○ Código em Java■ Similar a Java AWT, Swing etc.■ Basicamente:

● Declarar a variável● Instanciar● Adicionar a um container● Definir as propriedades

○ Cor, texto, aparência...○ Programático contém Declarativo

■ Pode-se fazer tudo que se faz declarativamente■ + Escrever o comportamento

Page 84: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Qual é a melhor?? Qual devo usar???

Page 85: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Qual é a melhor?? Qual devo usar???

Boa prática: Misturar as duas!!

Page 86: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Qual é a melhor?? Qual devo usar???

Boa prática: Misturar as duas!!

● Abordagem declarativa: Declarar tudo na interface que é estático (e.g. layout, todos os widgets)

Page 87: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Qual é a melhor?? Qual devo usar???

Boa prática: Misturar as duas!!

● Abordagem declarativa: Declarar tudo na interface que é estático (e.g. layout, todos os widgets)

● Abordagem programática: Definir o que acontece quando o usuário interage com os widgets

Page 88: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android Views e Android Layouts● Tudo o que se vê são Views

○ Botão, Rótulo, Caixa de Texto, etc● Layouts agrupam Views

○ Contém filhos■ Podem ser outros Layouts

Page 89: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android Views e Android Layouts

Page 90: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android Views e Android Layouts● Comparação com Java AWT / Swing

○ Layout■ ~ Java Container

○ View■ ~ Java Component■ View também pode ser chamado de Widget

Page 91: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Android Views e Android Layouts● Principais Layouts

○ LinearLayout■ O mais simples. Põe seus filhos um ao lado do outro

○ TableLayout■ Trata tela como uma tabela. Semelhante a <table>

○ FrameLayout■ Semelhante a um deck de cartas. Útil para abas

○ RelativeLayout■ Posiciona um filho em relação a outro

○ AbsoluteLayout■ Posiciona em coordenadas absolutas

Page 92: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Código Fonte

Page 93: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread● "Sequência de instruções executadas em ordem"

○ CPUs executam uma instrução por vez○ SOs podem tratar múltiplas Threads em múltiplas CPUs○ Android é baseado em Linux

■ Pode tratar múltiplas Threads● Sistema Android

○ Default: Roda em uma única Thread■ Os comandos são executados sucessivamente

● O próximo comando não é executado até que o atual comando termine

● Chamadas são bloqueantes■ Thread conhecida como UI Thread

● Processa todos os comandos da IU

Page 94: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread● StatusActivity com thread única

○ Problemas com chamada de rede para atualizar status○ Chamadas de rede estão "fora do nosso controle"

■ Problemas com latência, disponibilidade○ Aplicação não irá responder até que termine a chamda

Page 95: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread● Execução com múltiplas Threads

○ Boa prática: por operações potencialmente longas em threads separadas

○ SO "divide" CPU disponível entre as threads■ Sensação de paralelismo

● No Yamba...○ Colocar a chamada de rede em uma thread separada

■ A chamada de rede deixará de ser bloqueante■ Rodará em background

● Na verdade, UI Thread e a Thread da chamada de rede se alternarão na execução

● Porém usuário terá a sensação de que a UI Thread está em foreground

Page 96: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 97: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 98: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 99: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...Instrução n

Page 100: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamada de Rede

Page 101: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamada de Rede

Page 102: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo single Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamada de Rede

Page 103: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 104: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 105: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Page 106: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...Instrução n

Page 107: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Cria nova Thread

Thread-1

Page 108: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamda de Rede

Thread-1

Page 109: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamda de Rede

Thread-1

Page 110: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Thread - Exemplo multi Thread

Yamba

InternetInstrução 1

Instrução 2

updateStatus

...

Instrução n

Chamda de Rede

Thread-1

Instrução n + 1

Page 111: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Interface de usuário Android

Código Fonte

Page 112: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.2. Preferências, Sistema de arquivos, Menus e Intents

Laboratório Tempowww.tempo.uff.br

Page 113: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 114: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 115: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Preferências

Configurações do Usuário para uma Aplicação● Ponto de vista da IU

○ Check-box○ Menus Pull-Down○ +++

● Ponto de vista da estrutura de dados○ Coleção de estruturas chave-valor

● Yamba○ Possui configurações específicas (parâmetros)

■ login■ senha■ URL do servidor

● Evita dados hardcoded

Page 116: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Preferências

Preferências no Android● Android provê uma API para criação dessas interfaces● Você precisa:

○ Criar um recurso de preferências (XML)○ Implementar uma subclasse de PreferenceActivity○ Registrar a atividade no Manifest○ Chamar essa nova atividade, de alguma forma

Page 117: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Preferências

Código Fonte

Page 118: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Menu de Opções

Componente de IU provido pelo Android, acionado quando botão menu padrão dos dispositivos Android é precionado

Page 119: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Menu de Opções

● O menu aparecerá na parte de baixo da tela, mostrando as opções desejadas

● Para criar o menu você precisa:○ Criar um recurso de menu (XML)

■ Especifica no que consiste o menu○ Sobrescrever onCreateOptionsMenu()○ Tratar os eventos de menu no método

onOptionsItemSelected()

Page 120: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Menu de Opções

Código Fonte

Page 121: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Shared Preferences

Um meio fácil de se acessar preferências por qualquer componente Android da aplicação

● Activity, Service, Broadcast Receiver, Content Provider○ Podem acessar programaticamente as preferências do

usuário

Page 122: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Shared Preferences

Código Fonte

Page 123: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sistema de Arquivos

Onde são gravadas essas preferências? Quão seguros estão meu login e senha?

● Duas maneiras de acessar o sistema de arquivos:○ Eclipse

■ "File Explorer"● Window / Show View / Other... / Android / File

Explorer■ Ou abrir Perspectiva DDMS

● Window / Open Perspective / Other... / DDMS○ Linha de comando

■ adb shell● Comandos unix

Page 124: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sistema de Arquivos

Partições● Partição do sistema

○ /system○ Local do OS Android○ Aplicações pré instaladas○ Bibliotecas do sistema○ read-olny (?)

● Partição do cartão SD○ /sdcard○ Aplicações podem ler e escrever livremente

■ Precisam de permissões no manifest

Page 125: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sistema de Arquivos

Partições● Partição do usuário

○ /data○ Onde os dados do usuário se encontram

■ Apps baixadas● /data/app

■ Dados de aplicações● /data/data● Dentro ainda uma pasta para cada app

○ /data/data/nome-do-pacote○ Somente a aplicação pode acessar sua pasta de dados

■ Ex: Somente aplicação br.tempo.uff pode acessar a pasta /data/data/br.tempo.uff

Page 126: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sistema de Arquivos

Page 127: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Sistema de Arquivos

Page 128: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.3. Android Services

Laboratório Tempowww.tempo.uff.br

Page 129: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Android Services

Ao contrário de uma Activity, não tem IU● Roda em segundo plano

○ Porém, não em uma Thread diferente■ http://developer.android.com/reference/android/app/Service.html

● Principal uso: Processos que devem ser executados independentes de Activities

○ Ou seja, independente de ter IU (tela)● No Yamba...

○ Um Service que periodicamente se conecta à nuvem para checar atualizações no status dos seus amigos

○ Estará sempre rodando■ Independente do usuário estar usando a IU do Yamba

Page 130: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Android Services

Código Fonte

Page 131: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.4. Trabalhando com base de dados

Laboratório Tempowww.tempo.uff.br

Page 132: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Base de dados open source estável e popular em dispositivos pequenos

○ Motor de base de dados mais implantado no mundo

Page 133: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Base de dados open source estável e popular em dispositivos pequenos

○ Motor de base de dados mais implantado no mundo

● Vantagens:○ Ausência de configuração

■ simplifica o uso

Page 134: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Base de dados open source estável e popular em dispositivos pequenos

○ Motor de base de dados mais implantado no mundo

● Vantagens:○ Ausência de configuração

■ simplifica o uso○ Ausência de servidor

■ base de dados não está rodando em um processo, então também não há preocupação com um servidor

■ basicamente é um conjunto de bibliotecas

Page 135: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Base de dados open source estável e popular em dispositivos pequenos

○ Motor de base de dados mais implantado no mundo

● Vantagens:○ Ausência de configuração

■ simplifica o uso○ Ausência de servidor

■ base de dados não está rodando em um processo, então também não há preocupação com um servidor

■ basicamente é um conjunto de bibliotecas○ Base de dados em arquivo único

■ torna a segurança mais simples, no que diz respeito a segurança do sistema de arquivos

Page 136: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Outras bases de dados podem ser usadas○ É necessário incluir as respectivas bibliotecas na app

Page 137: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● Outras bases de dados podem ser usadas○ É necessário incluir as respectivas bibliotecas na app

● SQLite não é uma alternativa a um sistema SQL completo○ É uma alternativa a se usar um arquivo com formato

arbitrário

Page 138: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● 4 principais operações - CRUD:○ insert()

■ Inserir uma ou mais linhas

Page 139: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● 4 principais operações - CRUD:○ insert()

■ Inserir uma ou mais linhas○ query()

■ Requisitar linhas que respeitam o critério especificado

Page 140: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● 4 principais operações - CRUD:○ insert()

■ Inserir uma ou mais linhas○ query()

■ Requisitar linhas que respeitam o critério especificado○ update()

■ Substituir uma ou mais linhas que respeitam o critério especificado

Page 141: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLite

● 4 principais operações - CRUD:○ insert()

■ Inserir uma ou mais linhas○ query()

■ Requisitar linhas que respeitam o critério especificado○ update()

■ Substituir uma ou mais linhas que respeitam o critério especificado

○ delete()■ Remover linhas que respeitam o critério especificado

Page 142: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 143: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLiteOpenHelper

● Classe auxiliar abstrata que ajuda na manipulação de bases de dados e no gerenciamento de versões

Page 144: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLiteOpenHelper

● Classe auxiliar abstrata que ajuda na manipulação de bases de dados e no gerenciamento de versões

● A subclasse deve implementar:○ onCreate

■ chamado quando a base de dados é criada pela 1ª vez○ onUpgrade

■ chamado quando a base de dados precisa ser atualizada (ALTER TABLE)

Page 145: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLiteOpenHelper

● Classe auxiliar abstrata que ajuda na manipulação de bases de dados e no gerenciamento de versões

● A subclasse deve implementar:○ onCreate

■ chamado quando a base de dados é criada pela 1ª vez○ onUpgrade

■ chamado quando a base de dados precisa ser atualizada (ALTER TABLE)

● getReadableDatabase e getWritableDatabase○ Retornam SQLiteDatabase○ Criar e/ou abrir uma base de dados○ Se aberta corretamente, a base de dados é armazenada em

cache

Page 146: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

SQLiteOpenHelper

DBHelper

Código Fonte

Page 147: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Cursor

● Uma query retorna um conjunto de linhas referenciadas através de um ponteiro chamado Cursor

Page 148: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Cursor

● Uma query retorna um conjunto de linhas referenciadas através de um ponteiro chamado Cursor

● Através do Cursor podem ser recuperas das as linhas uma-a-uma

Page 149: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Cursor

● Uma query retorna um conjunto de linhas referenciadas através de um ponteiro chamado Cursor

● Através do Cursor podem ser recuperas das as linhas uma-a-uma

● Operações de interesse:○ moveToNext, +++○ getPosition, getCount○ getString, getInt, getFloat, getBlob, +++○ +++

Page 150: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

StatusData

StatusData - getStatusTextById e getLatestStatusCreatedAtTime

Código Fonte

Page 151: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.5. Listas e adaptadores

Laboratório Tempowww.tempo.uff.br

Page 152: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 153: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

ScrollView

● ScrollView é como uma janela que usa uma scroll bar para apresentar parte de um componente maior, que toma mais espaço do que a tela provê

○ Propósito de apresentar muitos dados na tela

Page 154: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

ScrollView

● ScrollView é como uma janela que usa uma scroll bar para apresentar parte de um componente maior, que toma mais espaço do que a tela provê

○ Propósito de apresentar muitos dados na tela

● Para usá-la basta englobar o componente com a ScrollView○ Só aceita um "filho" diretamente

Page 155: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

ScrollView

Yamba 5 - timeline_basic.xml, TimelineActivity1

Código Fonte

Page 156: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Gerência do Cursor

● startManagingCursor(Cursor)○ Método que diz à atividade para gerenciar o ciclo de vida do

cursor da mesma maneira que ela gerencia o próprio■ Implica dizer que, quando a atividade estiver para ser

destruída, ela cuidará para liberar o dado referenciado pelo Cursor

■ Ajuda ao Garbage Collector a limpar a memória rapidamente

Page 157: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Gerência do Cursor

● startManagingCursor(Cursor)○ Método que diz à atividade para gerenciar o ciclo de vida do

cursor da mesma maneira que ela gerencia o próprio■ Implica dizer que, quando a atividade estiver para ser

destruída, ela cuidará para liberar o dado referenciado pelo Cursor

■ Ajuda ao Garbage Collector a limpar a memória rapidamente

○ Método depreciado

Page 158: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Gerência do Cursor

● startManagingCursor(Cursor)○ Método que diz à atividade para gerenciar o ciclo de vida do

cursor da mesma maneira que ela gerencia o próprio■ Implica dizer que, quando a atividade estiver para ser

destruída, ela cuidará para liberar o dado referenciado pelo Cursor

■ Ajuda ao Garbage Collector a limpar a memória rapidamente

○ Método depreciado● API Loader

○ Não se deve confiar a gerência do Cursor ao GC, e sim manipular o Cursor explicitamente

○ A partir da versão 3.0 do Android, mas existe suporte para versões anteriores

Page 159: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Consulta ao BD

é equivalente a:

cursor = db.query(DbHelper.TABLE, null, null, null, null, null, DbHelper.C_CREATED_AT + " DESC");

SELECT * FROM timeline ORDER BY created_at DESC

Page 160: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Consulta ao BD e Cursores

Yamba 5 - TimelineActivity1

Código Fonte

Page 161: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Adapter

● ScrollView vai funcionar para algumas linhas, mas e se tivermos centenas ou milhares, esperando para ser impressas?

Page 162: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Adapter

● ScrollView vai funcionar para algumas linhas, mas e se tivermos centenas ou milhares, esperando para ser impressas?

○ Sol.: Adaptadores (Adapters)

Page 163: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Adapter

● Adaptadores servem para conectarmos uma view com alguma fonte de dados

○ Tipicamente a view será uma ListView e os dados virão na forma de um Cursor ou Array

Page 164: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Criação do ListView

Layout: timeline.xml

Código Fonte

Page 165: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Criação do Layout da Linha

Layout: row.xml

Código Fonte

Page 166: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Criação do Adaptador

● SimpleCursorAdapter requer:○ A descrição de uma linha única de dados

■ row.xml○ O dado

■ cursor, no nosso caso■ também poderia ser um array

○ O mapeamento entre uma entrada única de dados para uma linha da lista

■ mapeia cada coluna do cursor para uma view da lista

Page 167: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Adapter

TimelineActivity1 para o TimelineActivity2 - onResume

Código Fonte

Page 168: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 169: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.6. Broadcast Receivers

Laboratório Tempowww.tempo.uff.br

Page 170: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 171: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Broadcast Receivers

BootReceiver● Inicia UpdaterService após carregada a aplicação

TimelineReceiver● Atualiza linha do tempo com novos status vindos do

UpdaterServiceNetworkReceiver

● Inicia ou para o UpdaterService de acordo com o estado da rede

Page 172: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

1. Cria classe herdando BroadcastReceiver2. Implementa evento onReceive(context, intent)3. Configurar os ativadores do evento

Page 173: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

BootReceiver1. Cria classe herdando BroadcastReceiver2. Implementa evento onReceive(context, intent)

● cria Intent para iniciar o UpdaterService3. Configurar os ativadores do evento

● No manifest do projeto, cria o intent-filter para a ação de boot completo dentro da declaração do BootReceiver

○ inserir permissão de acesso ao estado de boot completo● Quando a aplicação terminar a inicialização o evento de boot

completo é ativado

Page 174: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

BootReceiver

Código Fonte

Page 175: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

TimelineReceiver1. Cria classe herdando BroadcastReceiver

● Cria classe interna à TimelineActivity2. Implementa evento onReceive(context, intent)

● atualiza consulta a base de dados ● atualiza a ListView com os novos estados

3. Configurar os ativadores do evento● No código da TimelineActivity, cria o intent-filter para a ação

personalizada de novo status● Registra ou remove registro do TimelineReceiver de acordo

com estado da TimelineActivity● No UpdaterService envie o Intent de novo status

Page 176: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

TimelineReceiver

Código Fonte

Page 177: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

NetworkReceiver1. Cria classe herdando BroadcastReceiver2. Implementa evento onReceive(context, intent)

● verifica o estado da rede através do intent ● se a rede caiu para o UpdaterService● caso contrário inicia o UpdaterService

3. Configurar os ativadores do evento● No manifest do projeto, cria o intent-filter para a ação de

mudança de conectividade dentro da declaração do NetworkReceiver

○ inserir permissão para acesso ao estado da rede● Quando estado da rede mudar NetworkReceiver é ativado

Page 178: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

NetworkReceiver

Código Fonte

Page 179: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.7. Content Providers

Laboratório Tempowww.tempo.uff.br

Page 180: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Page 181: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

ContentProvider

StatusProvider● Expõe a StatusData do Yamba para outras aplicações● Possui quatro métodos principais (CRUD):

○ insert (Create)○ query (Read)○ update○ delete

Yamba App Widget● Aplicação que é executada na tela inicial do Android e mostra o

status mais recente da linha do tempo● É um tipo especial de BroadcastReceiver

Page 182: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

StatusProvider

Etapas de desenvolvimento1. Criar classe herdando ContentProvider2. Declarar a referência ao conteúdo (CONTENT_URI)3. Sobrescrever os métodos CRUD, getId() e getType()4. Declarar o StatusProvider no AndroidManifest

Page 183: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas de desenvolvimento

2. Declarar a referência ao conteúdo (CONTENT_URI)content://com.marakana.yamba.statusprovider/status/47 A B C D

● A: diretiva obrigatória ("http:")● B: autoridade é indicada pelo nome completo da classe em

lowercase e deve ser declarada no AndroidManifest● C: tipo de dado manipulado pelo provedor● D: ID de dado específico da base

Page 184: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

2. Declarar a referência ao conteúdo (CONTENT_URI)

Código Fonte

Page 185: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas de desenvolvimento

3. Sobrescrever os métodos CRUD, getId() e getType()● CRUD

○ Invoca métodos do StatusData e do SQLite tratando possíveis exceções

● getId() e getType()○ o getType() identifica se foi retornado apenas um dado ou

um conjunto destes○ o getId() retorna o id de uma Uri específica

Page 186: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Etapas do desenvolvimento

3. Sobrescrever os métodos CRUD, getId() e getType()

Código Fonte

Page 187: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Yamba App Widget

onUpdate● Método invocado sempre que o widget for atualizado

○ periodo de atualização indicado no AndroidManifest● Consulta o StatusProvider passando a URI correspondente

onReceive● Método que é ativado sempre que há um novo status na linha

de tempo● Semelhante ao TimelineReceiver

Configurações● Layout: yamba_widget.xml● Atualização: yamba_widget_info.xml

Page 188: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Yamba App Widget

Código Fonte

Page 189: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

5.8. Serviços do sistema

Laboratório Tempowww.tempo.uff.br

Page 190: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Serviços do Sistema

Compass● Rosa dos ventos que responde a valores de orientação do

acelerômetroLocation Service

● Utiliza o GPS para indicar o local onde uma postagem é feitaAlarm

● Tornar configurável a atualização automática da linha do tempo

Page 191: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Compass

CompassActivity● Implementa SensorEventListener● Orientações capturadas no

método onSensorChangedRose widget

● É do tipo ImageView● Posição da imagem é atualizada no

método onDraw● onDraw é chamado sempre que

direção é modificada pela CompassActivity

Page 192: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Compass

Código Fonte

Page 193: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Location Service

WhereAmI● Atividade que implementa LocationListener● Coordenadas e endereço são capturadas no método

onLocationChangedAndroidManifest

● Devem ser configuradas as permissões de acesso a localização fornecida pelo GPS

No Yamba● Adicionar lista com opções para escolher fonte de localização

nas preferências● Fazer StatusActivity implementar LocationListener e

configurar periodo e distância de atualização

Page 194: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Location Service

Código Fonte

Page 195: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Alarm

IntentService● Tipo especial de serviço que possui o método onHandleIntent

que executa em outra Thread sem travar a interface● Com isso a linha do tempo é atualizada pelo botão Refresh

Alarm● Configurar o Intervalo de atualização nas preferencias ● Configura BootReceiver para iniciar periódicamente o

UpdaterService

Page 196: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Alarm

Código Fonte

Page 197: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

Laboratório TempoIC/UFF

Referências

Android Learning - Marko Gargent - O'reilly ● Contém o Yamba como exemplo

Android for Programmers - Deitel● Propõe diferentes aplicações para explicar o uso dos

componentesProgramming Android - Zigurd Mednieks - O'reilly

● Contém uma descrição mais profunda sobre a arquitetura da plataforma Android

Page 198: SmartAndroid€¦ · O presente minicurso introduz o sistema Android, bem como as ferramentas e o framework para desenvolvimento de aplicações para o mesmo. Serão discutidos os

SmartAndroid

Laboratório Tempowww.tempo.uff.br

Prof. Orlando Loques - [email protected] Barreto - [email protected] Mareli - [email protected] Erthal - [email protected]