O objetivo deste post-tutorial é implementar um exemplo de uma aplicação que faz a comunicação entre um service e uma activity usando a técnica de enviar os dados por broadcast.
Para isso vamos continuar usando os dados do GPS (como nos exemplos anteriores) recebidos no service e via intents mensageiras entregá-las à activity através de broadcasts.
Vamos usar um worker bound service em que implementamos um LocationListener para receber os Locations do GPS Provider, cada location é colocado numa intent com um putExtra e enviado por meio do método sendBroadcast.
Na activity, definimos um objeto da classe BroadcastReceiver, que receberá cada intent com o location enviado pelo service. No método onReceive recuperamos os dados do location via getParcelableExtra e enviamos para uma linkedList com o autoexplicativo nome de filaUltimosLocations e desta para a tela. Para avisar o Android que a activity está apta para receber os broadcasts registramos o broadcast por meio de um registerReceiver e "unregistramos" com o unregisterReceiver.
O código é simples, mas a idéia que engloba o mecanismo é poderosa. É só soltar as rédeas da imaginação e ver este esquema sendo usado em uma app de pedidos, de notícias, ou uma que mostra eventos de um esporte on line.
Mas vamos voltar para a realidade.
Seguem os códigos.
Do Service:
Da Activity:
Do List Adapter:
Da tela:
main.xml
Das linhas do ListView:
linhalista.xml
E finalmente uma cópia da tela:
Bons códigos!
Ola, estou colocando aqui pq não sei por onde começar, a procurar oque quero
ResponderExcluirPreciso fazer uma aplicação onde irá capturar a localização, mas para isso preciso
fechar uns pontos antes de começar com o GPS
1. Preciso de uma forma que o app seja executado automaticamento junto com o SO(Android)
2. Que ele fique rodando como um serviço, em segundo plano
Olá
ResponderExcluir1. Procure por "boot completed". Após ligar o dispositivo, vai iniciar um Receiver que deve iniciar um Service.
2. Para não drenar a bateria o recomendado é que o Service seja executado periodicamente via um alarme.
Boa noite, sou iniciante e estou tendo algumas dificuldades e acredito que isso que vc fez seja a resposta porem, eh meio complexo e nao entendi muito,
ResponderExcluirbom eu tenho uma activity quem tem um button que chama uma classe java, um service, nesse service, eu falo algumas verificacoes e todo uma theard que analisa algumas coisas e quando consegue ele vibra o celular, quando eu quero que pare de vibrar eu clico em um button para parar e ele stopservice, eu queria que alem de vibrar eu mostrasse em um view analisando e depois quando vibrasse mostrasse encontrado, porem ela nao faz comunicalçao com minha activity ou seja nao conseigo dar o findByid, eu teria que fazer isso que vc ta fazendo? funcionaria?