smartandroid€¦ · o presente minicurso introduz o sistema android, bem como as ferramentas e o...
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/1.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/2.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/3.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/4.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/5.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/6.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/10.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/11.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/13.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/14.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/15.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/16.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/17.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/20.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/21.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/22.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/24.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/25.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/26.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/27.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/28.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/29.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/30.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/31.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/32.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/33.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/34.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/35.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/36.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/37.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/38.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/39.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/40.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/41.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/42.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/43.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/44.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/45.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/46.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/47.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/48.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/49.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/50.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/51.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/52.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/53.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/54.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/55.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/56.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/57.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/58.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/59.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/60.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/61.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/62.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/63.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/64.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/65.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/66.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/67.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/68.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/69.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/70.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/71.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/72.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/73.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/74.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/75.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/76.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/77.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/78.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/79.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/80.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/81.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/82.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/83.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/84.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/85.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/86.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/87.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/88.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/89.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/90.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/91.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/92.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/93.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/94.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/95.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/96.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/97.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/98.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/99.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/100.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/101.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/102.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/103.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/104.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/105.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/106.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/107.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/108.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/109.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/110.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/111.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/112.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/113.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/114.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/115.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/116.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/117.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/118.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/119.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/120.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/121.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/122.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/123.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/124.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/125.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/126.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/127.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/128.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/129.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/130.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/131.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/132.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/133.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/134.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/135.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/136.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/137.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/138.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/139.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/140.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/141.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/142.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/143.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/144.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/145.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/146.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/147.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/148.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/149.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/150.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/151.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/152.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/153.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/154.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/155.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/156.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/157.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/158.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/159.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/160.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/161.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/162.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/163.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/164.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/165.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/166.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/167.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/168.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/169.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/170.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/171.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/172.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/173.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/174.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/175.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/176.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/177.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/178.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/179.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/180.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/181.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/182.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/183.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/184.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/185.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/186.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/187.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/188.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/189.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/190.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/191.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/192.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/193.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/194.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/195.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/196.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/197.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051903/5ff42d879f3a64138d6d8e84/html5/thumbnails/198.jpg)
SmartAndroid
Laboratório Tempowww.tempo.uff.br
Prof. Orlando Loques - [email protected] Barreto - [email protected] Mareli - [email protected] Erthal - [email protected]