Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro

Slides:



Advertisements
Apresentações semelhantes
SICAU – Sistema Integrado de Controle das Ações da União
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
BD em.NET: Passo a passo conexão com SQL Server 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Análise de Casos de Uso.
Editor de Slides BrOffice Impress
Profa. Ligia Flávia Antunes Batista
Diagramas de Seqüência
De 17 1 Linguagens de Programação Orientadas a Objetos Pós-Gradução(Lato-Sensu) em Sistemas de Banco de Dados - UFPa Marco Fagundes Aula.
1.
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Chapter 4: Threads.
Estatística Básica Utilizando o Excel
IMA - Instituto Mineiro de Agropecuária
Emitindo seu Certificado Digital
Emitindo seu Certificado Digital
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro
1 3. Ao fazer as alterações no slide master, estas irão ser aplicadas a todos os diapositivos "dependentes" dele.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria.
Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro
Revisão da Linguagem C.
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Compras - Controle de estoque por lote
OSA - Operação de Software e Aplicativos
Instalação e Configuração
NF-e (Federal) CC-e - Carta de Correção Eletrônica Webinar versão 2.0
Lógica do Sequenciamento das Operações
Desenvolvimento de Projetos e Aplicações Web
EBSCOhost Acesso móvel.
JAVA: Conceitos Iniciais
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Capítulo 2 Java Servlets.
SISTEMAS OPERACIONAIS
Rodrigo Cristiano Silva
Sistemas Operacionais
IGC do Brasil BT-1306: Como gerar seus relatórios especiais no ELF.net.
LEMBRA-SE?.
Entenda o processo de compra dentro do site
Sistemas Operacionais
Módulo: Gerenciamento de Incidentes e
Desenvolvimento para Android Aula 7 - Services
PLANO DE AÇÃO PARTICIPATIVO
Financeiro – Despesas Fixas e Variáveis
Financeiro – Despesas Fixas e Variáveis
MICROSOFT Windows XP.
Ambiente Virtual de Aprendizagem
ÁREA DE TRABALHO DO WINDOWS
GESTÃO DE FICHEIROS ÍNDICE Pág. I.Instalação do Software 2 II.Selecção de Empresas / Manutenção de Empresas 5 III.Criação da Base de Dados (Clientes,
Programação para Dispositivos Móveis
CONFIDENCIAL. Distribuição apenas para parceiros sob acordo de confidencialidade. A Microsoft não oferece garantias, expressas ou implícitas. © 2012 Microsoft.
Aula Prática 4 Monitoria IP/CC (~if669).
Programação Java em Android
Backup DE DADOS DO USUÁRIO. Cópia de segurança dos dados no computador, alguns fáceis e outros trabalhosos, de acordo com a quantidade de dados. Utilizado.
Solicitar o seu nome de usuário e senha pela sua ADO Envie um para sua ADO (sua organização de custódia) pelo endereço de que você registrou.
Curso Técnico em Informática Professor Igor Vale.
NA AULA DE HOJE VEREMOS A TRANSIÇÃO ENTRE ACTIVITYS. CRIE UM PROJETO COM O NOME TRANSICAO, A SEGUIR MONTE SUA ACTIVITY COMO A ABAIXO :
20/04/2017 MODULO: Sistemas Operacional Aula 08 –Configurando o Computador Profª. : Élida Tavares.
21/04/2017 MODULO: Sistemas Operacional Aula 08 –Configurando o Computador Profª. : Élida Tavares.
COMPUTAÇÃO MÓVEL Prof.: Jean Carlo Mendes
Programação para Dispositivos Móveis 03 – Activity e Intent.
COMPUTAÇÃO MÓVEL Prof.: Jean Carlo Mendes
Como Criar um Curso Utilizando o Editor de Aulas Viviane Guimarães Ribeiro.
Curso Básico de Android
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
Iniciando outras atividades. Intent INTENT = intenção? É um objeto-mensageiro usado para solicitar uma ação e mandar dados para alguma outra atividade.
Transcrição da apresentação:

Curso de Android Fevereiro de 2011 Cristiano Expedito Ribeiro Fabrício Firmino de Faria

Agenda das próximas aulas [excluir] Intent filter BroadcastReceiver, Threads, Services e Notification AlarmManager e Handler Banco de Dados e ContentProvider Mapas de GPS Sockets e Web Services Projeto

Agenda da Aula 2 Intent filter Aplicações em segundo plano BroadcastReceiver Threads e Services Notification AlarmManager Handler Banco de Dados Introdução: Tabelas e SQL SQLite ContentProvider Mapas de GPS

Intent Filter Criação de filtros que determinam quais Intents devem ser executadas para cada mensagem <activity android:name=".HelloActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> Action = MAIN Diz que activity é um ponto de partida, semelhante ao public static void main() da Java Category = LAUNCHER Indica que o ícone da activity deverá aparecer na tela pode ser aberta pelo usuário

IntentFilter - Exercício 17 Volte ao projeto LayoutSamples Abra o AndroidManifest.xml Remova o elemento <action> e salve Tente rodar a aplicação pelo eclipse Tente rodar a aplicação pelo menu do emulador Desfaça a remoção (Ctrl+Z) Remove o elemento <category> e salve Tente rodar a aplicação Tente rodar a aplicação. Apenas com os dois elementos que a aplicação rodará normalmente.

Ações de Intent úteis Lembra das ações “nativas” do Android? Action URI - chamar Uri.parse(uri) Descrição ACTION_VIEW http://www.gmail.com Abre browser na página ACTION_VIEW ACTION_EDIT content://com.android.contacts/contacts/1 Mostra ou edita o contato solicitado geo:0,0?q=Presidente+Vargas,Rio+de+Janeiro Busca no Google Maps ACTION_CALL ACTION_DIAL tel:12345678 Liga ou apenas disca para o número ACTION_INSERT content://com.android.contacts/contacts Abre activity padrão para inserir contatos ACTION_PICK ContactsContract.Contacts.CONTENT_URI Abre lista de contatos do celular ACTION_SET_WALLPAPER - Abre lista para escolha de papéis de parede

Ações de Intent – Exercício 18 Crie um novo projeto chamado IntentFilterTest Experimente chamar activities usando a tabela anterior Exemplo: Uri uri = Uri.parse("content://com.android.contacts/contacts"); Intent intent = new Intent(Intent.ACTION_INSERT, uri); startActivity(intent); intent = new Intent(Intent.ACTION_SET_WALLPAPER); Experimente também: Intent intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, "Maria"); Sim, você pode passar parâmetros via Intent, dependendo de qual ação está sendo executada!

Ações de Intent – Exercício 18 ACTION_CALL não irá funcionar pois é necessário pedir permissão através do AndroidManifest.xml Adicione esta permissão e tente novamente <uses-permission android:name="android.permission.CALL_PHONE”/> Outras permissões úteis android.permission.READ_CONTACTS android.permission.VIBRATE android.permission.INTERNET android.permission.BATTERY_STATS android.permission.BLUETOOTH android.permission.CAMERA android.permission.REBOOT android.permission.SEND_SMS Além disso, para usar o Google Maps é necessário rodar o emulador com Google Maps.

Categorias e parâmetros para Intent Algumas vezes Ação e URI não são suficientes É possível adicionar tantas categorias e parâmetros extras quanto forem necessários, além de outros dados: Os métodos setData() e setType() são antagônicos, ou seja, chamar um deles implica em limpar o outro. Método da Intent Descrição addCategory(String) Adiciona mais uma categoria à Intent putExtra(String, ...) Adiciona um parâmetro à Intent setData(Uri) Define o Uri. Equivalente ao parâmetro URI do construtor setType(String) Define o tipo MIME: text/plain, image/jpeg, etc setFlags(int) addFlags(int) Define os flags da Intent. Um flag útil é o FLAG_ACTIVITY_NEW_TASK, que faz a activity iniciar numa nova tarefa setAction(String) Define a ação desta intent. Note que, diferentemente de categorias e extras, apenas uma ação pode ser definida por intent.

Substituindo ações nativas Tecla Home <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.HOME"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> Tecla discar (call) <action android:name="android.intent.action.CALL_BUTTON" /> Intent.ACTION_SEARCH <action android:name="android.intent.action.SEARCH" /> Intent.ACTION_WEB_SEARCH <action android:name="android.intent.action.WEB_SEARCH" />

Ações nativas - Exercícios 19 e 20 Crie um projeto IntentFilterNativeSubst Modifique o manifest e rode a aplicação para cada exemplo do slide anterior Exercício 20 Após o último exemplo (web search) edite o projeto IntentFilterTest para chamar web search: intent = new Intent(Intent.ACTION_WEB_SEARCH); intent.putExtra(SearchManager.QUERY, "Maria"); startActivity(intent); Execute IntentFilterTest Veja que o emulador irá perguntar qual aplicação executar

Ações e categorias próprias e filtragem Para criar as próprias ações e categorias, faça: Configurá-las no manifest usando <intent-filter> Criar a Intent e executá-la Isto pode ser feito na mesma aplicação ou não Filtragem Ao executar uma Intent, uma activity só rodará caso seu intent-filter satisfaça a ação e todas as categorais definidas na Intent. Exemplos: Considere intent-filter: ACAO1, CATEG1, CATEG2 Intent: ACAO1, CATEG1  Executa Intent: ACAO1, CATEG1, CATEG2  Executa Intent: ACAO1, CATEG3  Não executa!

Ações próprias e filtragem – Exercício 21 No manifest de IntentFilterNativeSubst <action android:name="com.example.intentfilter.nativesubst.ACTION" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="com.example.intentfilter.nativesubst.CATEG1" /> <category android:name="com.example.intentfilter.nativesubst.CATEG2" /> Dê play na aplicação IntentFilterNativeSubst para instalá-la, note que nada rodará na tela, pois não há MAIN e LAUNCHER Em IntentFilterTest intent = new Intent("com.example.intentfilter.nativesubst.ACTION"); intent.addCategory("com.example.intentfilter.nativesubst.CATEG1"); intent.addCategory("com.example.intentfilter.nativesubst.CATEG2"); startActivity(intent); Rode IntentFilterTest e IntentFilterNativeSubst rodará Remova CATEG2 do manifest e repita a operação...

BroadcastReceiver Chamado pelo Android para reagir a mensagens broadcast Usado para executar tarefas rápidas em segundo plano Não interromper o usuário por meio de activities Use notificações! (Serão explicadas em breve) O que são mensagens broadcasts? São mensagens enviadas pelo Android quando ocorre algum evento do sistema ou de uma aplicação Interceptada pelos BroadcastReceiver’s apropriados Definido pelos <intent-filter>

Tipos de broadcast Ordered ou Síncrono Normal ou Assíncrono Os receivers são executados em sequência e a falha de um interrompe o processamento dos demais Não está no escopo deste curso Normal ou Assíncrono Todos os receivers executam simultaneamente em paralelo e de forma independente Método para disparar: Context.sendBroadcast(Intent) BroadcastReceiver1 Mensagem Evento ... BroadcastReceiverN

Configurando um receiver É necessário adicionar o elemento <receiver> dentro de <aplication> no AndroidManifest.xml <receiver android:name="NomeReceiver"> <intent-filter> <action android:name="com.example.broadcastreceiver.ACTION"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </receiver> Implementar uma classe filha de BroadcastReceiver com o callback onReceive(Context, Intent) public class NomeReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // ... } Atenção: onReceive deve retornar em menos de 10 s.

Disparando mensagens broadcast Criar uma Intent com a mensagem Enviar via Context.sendBroadcast(Intent) Context é uma classe base de activity, logo o método pode ser chamado diretamente Intent intent = new Intent("com.example.broadcastreceiver.ACTION"); sendBroadcast(intent);

Broadcast Receiver – Exercício 22 Crie um projeto chamado ReceiverTest Crie um broadcast conforme slide anterior Dentro do método onReceive escreva algo no log Edite o projeto IntentFilterTest para enviar o broadcast

Mensagens broadcast do sistema Mensagens broadcast enviadas apenas pelo sistema Não podem ser enviadas pelo método sendBroadcast() * Requer permissão android.permission.RECEIVE_BOOT_COMPLETED ** Não podem ser usados com <intent-filter> serão mostrados em breve android.intent.action Condição de envio (pelo sistema) WALLPAPER_CHANGED Papel de parece alterado BOOT_COMPLETED* Sistema concluiu o bootstrap ACTION_SHUTDOWN Sistema está desligando (antes de desligar o aparelho) BATTERY_CHANGED** Estado de carga da bateria mudou BATTERY_LOW Estado de carga da bateria baixo BATTERY_OKAY Estado de carga da bateria voltou a níveis normais ACTION_POWER_CONNECTED Carregador conectado ACTION_POWER_DISCONNECTED Carregador desconectado

Mensagens broadcast do sistema ** Não podem ser usados com <intent-filter> serão mostrados em breve android.intent.action.* Condição de envio (pelo sistema) TIME_SET Data e/ou hora do sistema foram alterados TIMEZONE_CHANGED Fuso horário foi modificado TIME_TICK** Hora do sistema mudou normalmente (enviado a cada minuto) SCREEN_ON Tela do dispositivo acendeu (estava inativa, mas usuário ativou) SCREEN_OFF Tela do dispositivo apagou (normal para economizar bateria) PACKAGE_ADDED Uma nova aplicação foi instalada no dispositivo PACKAGE_REMOVED Uma aplicação foi removida do dispositivo PACKAGE_REPLACED Uma aplicação foi substituída. Normalmente por upgrade de versão. PACKAGE_RESTARTED Uma aplicação foi reiniciada, tendo seus processados terminados. PACKAGE_DATA_CLEARED Dados de uma aplicação foram apagados. Enviado após PACKAGE_RESTARTED

Broadcast de sistema – Exercício 23 Adicione mais um receiver no projeto ReceiverTest <receiver android:name="WallpaperReceiver"> <intent-filter> <action android:name="android.intent.action.WALLPAPER_CHANGED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> Adicione o seguinte no callback onReceive() Log.i(this.getClass().getCanonicalName(), intent.getAction()); Instale a aplicaçao Tenta mudar o papel de parede no emulador Menu > Wallpaper > Wallpapers Analise o LogCat.

Configuração de receivers via código Indicado quando um receiver deve executar apenas quando uma acitivity está executando É possível registrar dinamicamente via código registerReceiver(BroadcastReceiver, Intent) unregisterReceiver(BroadcastReceiver) Recomendável: Registrar em Activity.onCreate() ou onResume() Desregistrar no Activity.onDestroy() ou onPause() Note que são necessários para actions TIME_TICK e BATTERY_CHANGED da tabela

Threads