Android app communication

download Android app communication

If you can't read please download the document

Transcript of Android app communication

Comunicao entre aplicaes Android

@eloijr

http://eloisjr.blogspot.com

Eloi Jr

Iniciou na rea mobile em 2005

Palestrou em diversos eventos de TI

Escreveu artigos tcnicos

Trabalha com Java ME e Android

Possui uma app no GetJar com + 50K downloads

Projeto hospedado no java.net: Tranqueira

Empreendedor no Maranho!?!??

Arquitetura

Activity

Intent (declarao e filtro de inteno)

BroadcastReceiver

Notification

Service

Activity

Controla os eventos e define a View

Uma tela para cada Activity

Activity stack

Conceito presente em todas as aplicaes Android

O Android trata todas as Activity's da mesma forma: nativas ou criadas pelo desenvolvedor!

Questo sobre Activity's

Como navegar entre vrias Activity's de uma mesma aplicao?

Como chamar Activity's nativas do Android?

Resposta nica!

Intent!

Intent

Mensagem enviada ao S.O. (broadcast)

Descrio abstrata de uma operao a ser realizada

Activity, BroadcastReceiver e Service

Intent e Activity

1: Activity simplesIntent it = new Intent(this, ClasseActivity2.class);startActivity(it);

2: Activity enviando parmetrosIntent it = new Intent(this, ClasseActivity2.class);it.putExtras(codigo, 1);startActivity(it);

Intent e Activity

3: Activity recebendo parmetrosIntent it = getIntent();if (it != null) { String codigo = it.getStringExtra(codigo); if (codigo != null) { // AQUI J TEM O CDIGO RECEBIDO }}

Intent e Activity com retorno

4: Activity com retornoIntent it = new Intent(this, ClasseActivity2.class);startActivityForResult(it, CODIGO_ACTIVITY);...protected void onActivityResult(int codigo, int resultado, Intent it) {// it.getData(); it.getExtras() ; getIntExtras(x,1);}

Chamando Apps Nativas 1/5

5: Tocar um mp3 na web:Uri u = Uri.parse(http://music.com/Black.mp3);Intent it = new Intent(Intent.ACTION_VIEW, u);it.setType(audio/*);startActivity(it);

Chamando Apps Nativas 2/5

6: Visualizar os contatos:Uri u = Uri.parse(content://com.android.contacts/contacs/ );Intent it = new Intent(Intent.ACTION_PICK, u);startActivity(it);

Chamando Apps Nativas 3/5

7: Abrir Google Maps na rea 51:Uri u = Uri.parse(geo: 37.240000,-115.810000);Intent it = new Intent(Intent.ACTION_VIEW, u);startActivity(it);

Chamando Apps Nativas 4/5

8: Fazer uma ligao:Uri u = Uri.parse(tel:9981115328);Intent it = new Intent(Intent.ACTION_CALL, u);startActivity(it);

Chamando Apps Nativas 5/5

9: Abrir o browser:Uri u = Uri.parse(http://www.runze.com.br);Intent it = new Intent(Intent.ACTION_VIEW, u);startActivity(it);

Permisses no AndroidManifest.xml

android.permission.RECEIVE_SMS

android.permission.SEND_SMS

android.permission.CALL_PHONE

android.permission.READ_CONTACTS

android.permission.VIBRATE

android.permission.RECEIVE_BOOT_COMPLETED

android.permission.ACCESS_FINE_LOCATION

Intent e Activity

10: Chamada usando o nome de uma ao:

Intent it = new Intent(ATIVIDADE1);startActivity(it);

Activity com Ao Definida

necessrio existir uma Activity com a ao ATIVIDADE1 definida para atender ao chamado e ser executada!

Definio de uma Ao

6: AndroidManifest.xml

Uma ao de um filtro de inteno

Uma ao definida dentro do arquivo AndroidManisfest.xml utilizando a tag e deve ter pelo menos uma categoria, DEFAULT!

Envio de Mensagem por uma Intent

Quando uma Intent envia uma mensagem ao S.O., este tenta localizar algum filtro de inteno (intent-filter) devidamente configurado para receber a mesma mensagem!

Filtro de Inteno

O filtro de inteno para uma determinada ao pode estar definido em qualquer aplicao ou Activity nativa do S.O. ou criada pelo desenvolvedor!

Filtro de Inteno

Alm do nome da ao, um filtro de inteno pode definir ainda uma categoria especfica e um conjunto de dados de entrada que o identifica unicamente no S.O.

Filtro de Inteno

Activity com mesma ao e categoria?

O S.O. o questionar sobre qual Activity executar!

Alguns Filtros Nativos

android.provider.telephony.SMS_RECEIVED

android.intent.category.HOME

android.intent.action.CALL_BUTTON

android.intent.action.BOOT_COMPLETED

O Android permite que qualquer aplicao nativa seja substituda, bastando para isso adicionar um filtro de inteno correto no AndroidManifest.xml!

HOME's Personalizadas

BroadcastReceiver

Responde a eventos enviados por uma Intent

No utiliza interface grfica

Sem comunicao com o usurio

Timeout de 10 seg

Boas prticas: uso de Notification e Service

Enviando um Broadcast

SuaActivity.sendBroadcast(new Intent(BR));

Recebendo um BroadcastReceiver

1: Configurar o receptor no AndroidManifest.xml

Recebendo um BroadcastReceiver

2: Definio da classe Recpublic class Rec extends BroadcastReceiver { @override public void onReceive(Context c, Intent it) { // execute algo rapidamente aqui }}

Dicas de uso do BroadcastReceiver

Um BroadCastReceiver deve interagir com o usurio apenas atravs da classe Notification

Para executar tarefas que demandam tempo e processamento, deve ser utilizando a classe Service.

Notification

Mensagem especial na barra de status

O usurio decide quando v-la!

A atividade atual do usurio no deve ser interrompida

Uma notificao pode disparar uma Activity

necessrio cancel-la aps sua visualizao

Exemplos: SMS, chat, updates e etc.

Notification: Uso

1: Recupera o servioNotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

2: Gera um NotificationNotification n = new Notification(icone, MS_BARRASTATUS, System.currentTimeMillis());

Notification: Uso

3: Activity a ser executadaPendingIntent p = PendingIntent.getActivity (this, 0, new Intent(this, acNotifica), 0);

4: Informaesn.setLatestEventInfo(this, TITULO, MSG, p);

Notification: Uso

4: Algum efeito? Vibrate?n.vibrate = new long[] {100, 250, 100, 500};

5: Posta a notificao na barra de statusnm.notify(R.string.app_name, n);

Notification: Uso

5: Encerra a notificao na Activity receptora (acNotifica)nm.cancel(R.string.app_name);

Service

Executar processamento em segundo plano

Geralmente iniciado a partir de um BroadcastReceiver

O Android gerencia o seu clico de vida juntamente com outros processos

Somente encerrado pelo S.O. em casos extremos

Cada servio deve iniciar sua prpria thread

@eloijr

http://eloisjr.blogspot.com

Referncias:http://developer.android.comGoogle Android Ricardo R. Lecheta