TDC 2011: Como executar comunicações entre aplicações Android

Empreendedor na cidade de Imperatriz, interior do Maranhão, onde mantém uma empresa de soluções de ponta para celulares, smartphones e PDAs chamada Runze, Eloi Jr. iniciou a carreira na área mobile em 2005. Desde então já fez algumas façanhas, como desenvolver uma aplicação da Copa do Mundo de 2010 que está disponível no GetJar e obteve mais de 50 mil downloads, aonde os usuários podiam acompanhar as partidas e monitorar o rankeamento dos times. Desenvolveu também um aplicativo chamado “Tranqueira“, baseado em LWUIT & Floggy para gerenciar empréstimos de pequenas coisas como livros (aqueles que normalmente vão e nunca voltam para o dono).

Em sua palestra no TDC 2011, Eloi Jr. apresentou um panorama bem detalhado da arquitetura do Android e, entre outras questões centrais, falou sobre a relação entre Activity e Intent (declaração e filtro de intenção), BroadcastReceiver, Notification e Service. E demonstrou no código fonte as opções de comunicação entre várias activities de uma aplicação proprietária com Activity de terceiros e de aplicações nativas do próprio Android. Mostrou também como usar a Intent para localizar uma Activity ou para encontrar alguma mensagem de Broadcast de forma que, a partir dessa mensagem, seja possível determinar a execução de um Notification ou Service.

Activity

Como navegar entre várias Activity’s de uma mesma aplicação?
Resposta: Trabalhe com a classe Intent. Tanto faz se você vai passar de uma activity para outra na sua aplicação ou chamar uma activity nativa do Android, use a classe Intent. Eloi explica detalhadamente formas de chamar uma activity pertencente à sua própria aplicação, tais como: Activity Simples e Activity enviando e recebendo parâmetros e Activity com parâmetros, e exemplifica com o código.

Como chamar Activity’s nativas do Android?

Eloi também explica o código em detalhes para:

– Tocar um MP3 na Web
– Visualizar agenda de contatos
– Abrir o Google Maps na área 51
– Fazer uma ligação
– Abrir o browser

Nos ambientes de programação em Android é preciso definir permissões, portanto se sua aplicação necessita fazer uma ligação, ler contatos da agenda ou acessar a internet, é necessário definir no arquivo AndroidManifest.xml que a sua aplicação tem permissão para acessar esses dados, que são nativos do Android, por questões de segurança.

Alguns recursos citados são:

#RECEIVE_SMS
#SEND_SMS
#CALL_PHONE
#READ_CONTACTS
#VIBRATE
#RECEIVE_BOOT_COMPLETED
#ACCESS_FINE_LOCATION

Outros códigos apresentados e detalhados por Eloi Jr. são Activity com Ação Denifida, definição de uma ação, ação de filtro de intenção, envio de mensagem por intent e alguns filtros nativos como: SMS_RECEIVED, HOME, CALL_BUTTON e BOOT_COMPLETED. E observa que “o Android permite que qualquer aplicação nativa seja substituída, bastando para isso adicionar um filtro de intenção correto no AndroidManifest.xml“.

BroadcastReceiver

Outra forma de se comunicar dentro de uma aplicação Android, com activities que fazem parte da sua aplicação ou outras activities. O BroadcastReceiver responde a eventos enviados por uma intent, não utiliza interface gráfica, não tem qualquer mecanismo de comunicação com o usuário e tem um tempo de vida curto, de apenas 10 segundos. Enquanto uma Activity é usada para apresentar objetos que são visualizados pelo usuário, já o BroadcastReceiver envia uma notificação ou mensagem discreta ou abre um processo de segundo plano usando a classe service.

Dicas de uso do BroadcastReceiver

“Um BroadCastReceiver deve interagir com o usuário apenas através da classe Notification. Para executar tarefas que demandam tempo e processamento, deve ser utilizado a classe Service”.

Notification

A notification envia uma mensagem especial na barra de status, e é o usuário quem decide quando deseja acessá-la, já que a atividade que estiver executando no momento da notificação não deverá ser interrompida, sendo necessário cancelá-la após a visualização.  Eloi detalha como criar o código para algumas notificações possíveis como: recuperar o serviço, gerar um notification e Activity a ser executada.

Service

O Service trabalha com tarefas em segundo plano. Abre uma thread e faz o upload de algo extenso, ou executa uma tarefa que demanda tempo, mas não deve nunca interferir na atividade do usuário, por isso é totalmente executado em segundo plano. A diferença entre usar uma classe Service e usar simplesmente uma thread é que a classe Service faz parte do gerenciamento do Android. Então se você usar um Service, o Android vai gerenciá-lo da forma correta. Se acontecer do seu sistema operacional estar perto de extrapolar a capacidade de memória, talvez o Android decida eliminar seu Service, porém deixará isso por último, já que o Service faz parte do controle de gerenciamento normal do Android. Já se você criar uma thread, caso precise de memória, ela será eliminada. Mas de qualquer forma você precisa da thread para trabalhar com a classe Service.

“O objetivo aqui é fazer com que vocês entendam como funciona o processo de comunicação entre activities da sua aplicação, de outras aplicações que você baixou, e até de aplicações nativas. E também demonstrar para vocês que, da mesma forma como podem acessar objetos pertencentes à sua aplicação, vocês também podem acessar objetos nativos do sistema operacional”, afirma Eloi Jr. “E assim é a forma que os fabricantes encontraram para personalizar completamente o ambiente Android. Mas não é nada que somente eles que fazem parte do consórcio tenham acesso: qualquer um de nós pode fazer isso”, conclui.

Assista à íntegra da palestra de Eloi Jr. na trilha Android do TDC 2011:

Veja também os slides da apresentação:

Para mais informações sobre desenvolvimento Android, acesse:

http://developer.android.com

Tags:, , , , , ,

Categorias:

Gonow

O blog Gonow Tecnologia é voltado para publicação de notícias sobre eventos e temas relacionados ao mercado de Tecnologia de Informação e Comunicação (TIC), Design e User Experience (UX), além de rico conteúdo técnico - incluindo ví­deos na íntegra de palestras sobre os assuntos divulgados - e referências sobre as mais diversas linguagens de programação, frameworks e plataformas de desenvolvimento.

Veja todos os posts de "Gonow"

Comments are closed.