Android app communication
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Android app communication

on

  • 7,170 views

The talk will present the model of communication between applications, called Intent, which allows you to request services from other applications and to provide services for use by any other ...

The talk will present the model of communication between applications, called Intent, which allows you to request services from other applications and to provide services for use by any other application in the Android environment.

Statistics

Views

Total Views
7,170
Views on SlideShare
2,883
Embed Views
4,287

Actions

Likes
1
Downloads
59
Comments
0

19 Embeds 4,287

http://www.techgig.com 2171
http://www.gonow.com.br 1558
http://eloisjr.blogspot.com.br 298
http://eloisjr.blogspot.com 165
http://10.150.200.57 38
http://paper.li 13
http://115.112.206.131 11
http://eloisjr.blogspot.pt 8
http://10.150.200.102 5
http://10.150.200.76 5
http://eloisjr.blogspot.ru 5
http://gonow-site.gonow.com.br 2
http://twitter.com 2
http://translate.googleusercontent.com 1
http://eloisjr.blogspot.de 1
http://webcache.googleusercontent.com 1
http://www.eloisjr.blogspot.com.br 1
http://localhost 1
http://www.linkedin.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Android app communication Presentation Transcript

  • 1. Comunicação entre aplicações Android @eloijr http://eloisjr.blogspot.com
  • 2. Eloi Jr
    • Iniciou na área mobile em 2005
    • 3. Palestrou em diversos eventos de TI
    • 4. Escreveu artigos técnicos
    • 5. Trabalha com Java ME e Android
    • 6. Possui uma app no GetJar com + 50K downloads
    • 7. Projeto hospedado no java.net: Tranqueira
    • 8. Empreendedor no Maranhão!?!??
  • 9. Arquitetura
    • Activity
    • 10. Intent (declaração e filtro de intenção)
    • 11. BroadcastReceiver
    • 12. Notification
    • 13. Service
  • 14. Activity
    • Controla os eventos e define a View
    • 15. Uma tela para cada Activity
    • 16. Activity stack
    • 17. Conceito presente em todas as aplicações Android
  • 18. O Android trata todas as Activity's da mesma forma: nativas ou criadas pelo desenvolvedor!
  • 19. Questão sobre Activity's
    • Como navegar entre várias Activity's de uma mesma aplicação?
    • 20. Como chamar Activity's nativas do Android?
  • 21. Resposta Única! Intent!
  • 22. Intent
    • Mensagem enviada ao S.O. (broadcast)
    • 23. Descrição abstrata de uma operação a ser realizada
    • 24. Activity, BroadcastReceiver e Service
  • 25. Intent e Activity 1: Activity simples Intent it = new Intent(this, ClasseActivity2.class); startActivity(it); 2: Activity enviando parâmetros Intent it = new Intent(this, ClasseActivity2.class); it.putExtras(“codigo”, “1”); startActivity(it);
  • 26. Intent e Activity 3: Activity recebendo parâmetros Intent it = getIntent(); if (it != null) { String codigo = it.getStringExtra(“codigo”); if (codigo != null) { // AQUI JÁ TEM O CÓDIGO RECEBIDO } }
  • 27. Intent e Activity com retorno 4: Activity com retorno Intent 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); }
  • 28. 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);
  • 29. 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);
  • 30. 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);
  • 31. Chamando Apps Nativas 4/5 8: Fazer uma ligação: Uri u = Uri.parse(“tel:9981115328”); Intent it = new Intent( Intent.ACTION_CALL , u); startActivity(it);
  • 32. 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);
  • 33. Permissões no AndroidManifest.xml
    • android.permission.RECEIVE_SMS
    • 34. android.permission.SEND_SMS
    • 35. android.permission.CALL_PHONE
    • 36. android.permission.READ_CONTACTS
    • 37. android.permission.VIBRATE
    • 38. android.permission.RECEIVE_BOOT_COMPLETED
    • 39. android.permission.ACCESS_FINE_LOCATION
  • 40. Intent e Activity 10: Chamada usando o nome de uma ação: Intent it = new Intent( “ATIVIDADE1” ); startActivity(it);
  • 41. Activity com Ação Definida É necessário existir uma Activity com a ação ATIVIDADE1 definida para atender ao chamado e ser executada!
  • 42. Definição de uma Ação 6: AndroidManifest.xml <activity android:name=”Atividade1”> <intent-filter> <action android:name= ”ATIVIDADE1” /> <category android:name = ”android.intent.category.DEFAULT” /> </intent-filter> </activity>
  • 43. Uma ação de um filtro de intenção Uma ação é definida dentro do arquivo AndroidManisfest.xml utilizando a tag <intent-filter> e deve ter pelo menos uma categoria, DEFAULT!
  • 44. Envio de Mensagem por uma Intent Quando uma Intent envia uma mensagem ao S.O., este tenta localizar algum filtro de intenção (intent-filter) devidamente configurado para receber a mesma mensagem!
  • 45. Filtro de Intenção O filtro de intenção para uma determinada ação pode estar definido em qualquer aplicação ou Activity nativa do S.O. ou criada pelo desenvolvedor!
  • 46. Filtro de Intenção Além do nome da ação, um filtro de intenção pode definir ainda uma categoria específica e um conjunto de dados de entrada que o identifica unicamente no S.O.
  • 47. Filtro de Intenção
    • Activity com mesma ação e categoria?
    O S.O. o questionará sobre qual Activity executar!
  • 48. Alguns Filtros Nativos
    • android.provider.telephony.SMS_RECEIVED
    • 49. android.intent.category.HOME
    • 50. android.intent.action.CALL_BUTTON
    • 51. android.intent.action.BOOT_COMPLETED
  • 52. O Android permite que qualquer aplicação nativa seja substituída, bastando para isso adicionar um filtro de intenção correto no AndroidManifest.xml!
  • 53. HOME's Personalizadas
  • 54. BroadcastReceiver
    • Responde a eventos enviados por uma Intent
    • 55. Não utiliza interface gráfica
    • 56. Sem comunicação com o usuário
    • 57. Timeout de 10 seg
    • 58. Boas práticas: uso de Notification e Service
  • 59. Enviando um Broadcast SuaActivity.sendBroadcast(new Intent( “BR” ));
  • 60. Recebendo um BroadcastReceiver 1: Configurar o receptor no AndroidManifest.xml <receiver android:name=”Rec”> <intent-filter> <action android:name= ”BR” /> <category android:name = ”android.intent.category.DEFAULT”/> </intent-filter> </receiver>
  • 61. Recebendo um BroadcastReceiver 2: Definição da classe Rec public class Rec extends BroadcastReceiver { @override public void onReceive(Context c, Intent it) { // execute algo rapidamente aqui } }
  • 62. Dicas de uso do BroadcastReceiver
    • Um BroadCastReceiver deve interagir com o usuário apenas através da classe Notification
    • 63. Para executar tarefas que demandam tempo e processamento, deve ser utilizando a classe Service.
  • 64. Notification
    • Mensagem especial na barra de status
    • 65. O usuário decide quando vê-la!
    • 66. A atividade atual do usuário não deve ser interrompida
    • 67. Uma notificação pode disparar uma Activity
    • 68. É necessário cancelá-la após sua visualização
    • 69. Exemplos: SMS, chat, updates e etc.
  • 70. Notification: Uso 1: Recupera o serviço NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 2: Gera um Notification Notification n = new Notification(icone, MS_BARRASTATUS, System.currentTimeMillis());
  • 71. Notification: Uso 3: Activity a ser executada PendingIntent p = PendingIntent.getActivity (this, 0, new Intent(this, acNotifica ), 0); 4: Informações n.setLatestEventInfo(this, TITULO, MSG, p);
  • 72. Notification: Uso 4: Algum efeito? Vibrate? n.vibrate = new long[] {100, 250, 100, 500}; 5: Posta a notificação na barra de status nm.notify(R.string.app_name, n);
  • 73. Notification: Uso 5: Encerra a notificação na Activity receptora ( acNotifica ) nm.cancel(R.string.app_name);
  • 74. Service
    • Executar processamento em segundo plano
    • 75. Geralmente iniciado a partir de um BroadcastReceiver
    • 76. O Android gerencia o seu clico de vida juntamente com outros processos
    • 77. Somente é encerrado pelo S.O. em casos extremos
    • 78. Cada serviço deve iniciar sua própria thread
  • 79. @eloijr http://eloisjr.blogspot.com Referências: http://developer.android.com Google Android – Ricardo R. Lecheta