Oi gente, tudo bem?
Estou tentando criar um app android para mim para que ele me rastreie todo o dia(quem sabe até disponibilizar no Google Play depois para outras pessoas usarem para rastreamento pessoal), ou seja, ele envia os dados da minha localização(como latitude, longitude e horário) para o meu banco de dados, ele deve fazer isso em um determinado intervalo de tempo(que vai ainda ser definido, mas penso em colocar um valor de 5 minutos).
É simples, porém tem alguns probleminhas:
1 - Lembro-me quando tentei criar widgtes para o android, o proprio google recomenda que os widgets nao sejam ativados num intervalor menor do que 30 minutos, pois isso consome muita bateria do celular, tem algo que possa ser feito em relação a isso?
2 - Para criar a comunicação do android com o banco de dados eu pensei em duas alternativas, a primeira e mais simples seria simplesmente mandar a aplicacação acessar uma pagina php(isso sem mostrar nada ao usuario, o app deveria fazer isso internamente) e passar para ela parametros por POST ou GET e assim a pagina trataria esses dados e os enviaria para o banco de dados(isso eu ja até sei fazer, pois implementei isso na primeira versão de um jogo meu chamado Jumping Bird, e a segunda seria criar um webservice, q não tenho muita ideia de como fazer, mas acho q deve ser mais seguro, o q vcs acham q seria uma melhor alternativa?
3 - Se estou disponibilizando minha localização, alguém teria de ter acesso ao banco de dados com as minhas informações de localização, porém eu caio no mesmo problema da parte 2, como fornecer esse acesso a pessoa que vai me localizar?
Gostaria da opinião de vcs sobre isso e caso tenham alguma idéia para melhorar esse sistema, será muito bem vindo os comentários
Obrigado
Push Notification seria a solução para disponibilizar o conteúdo de sua localização para os usuários do aplicativo.
Já leu sobre isso? Não? Procura por C2DM Google.
Já sobre guardar no banco de dados, acho que seria mais “viável” salvar no banco de dados do aplicativo e mandar pro servidor de tempos em tempos, pois as posições são atualizadas constantemente (dependendo da configuração do Criteria de seu LocationListener).
Já para mandar de tempos em tempos, voce pode utilizar do recurso do próprio Android chamado AlarmManager mesclado com um Service e um BroadcastReceiver.
Basicamente seria assim:
SQLite -> Banco de Dados.
AlarmManager -> Gerenciar o envio para o servidor e solicitar atualizações no GPS.
Service -> Gerenciar o AlarmManager e também ser responsável por ativar o GPS sem que o usuário seja avisado (SIM, DA PARA FAZER ISSO! HAHAHAHA).
BroadcastReceiver -> Responsável por esperar qualquer feedback do servidor para o celular do usuário que está sendo rastreado e o que está rastreando.
Mais ou menos isso,
Ajudou?
Gostei da idéia, tenho vontade de fazer isso também.
Esse C2DM do google é bem interessante, nunca tinha ouvido falar nele, ele traz mensagens no topo da tela como avisos? o serviço do C2DM é pago ou gratuito?
Realmente não havia pensado sobre guardar os dados internamente no aparelho e depois enviar para o server, pois se acontecer algum problema com o cel, como se a bateria acabar, o conteudo não sera enviado ao servidor, mas é uma boa proposta, vou avalia-la melhor.
Em vez de usar o AlarmManager, iria usar um LocationListener junto com LocationManager para identificar a posiçao(latitude e longitude) e ao verificar os valores ja envia-los ao banco de dados, mas como vc disse com o alarmManager poderia envia-los a hora que eu achasse mais pratica, é tbm uma ideia a se verificar melhor.
Acho que não sera necessario usar um broadcastReceiver, pois o servidor irá somente receber os dados e guarda-los, no maximo enviaria uma mensagem de confirmação de dados.
Vc ajudou bastante, preciso amadurecer a ideia um pouco mais,
valeu pelas dicas.
Se for utilizar dos serviços de C2DM, será obrigatório a utilização de um BroadcastReceiver.
Outra coisa, o AlarmManager seria apenas para requisitar uma atualização da posição do GPS de tempos em tempos, porque um rastreamento em tempo real seria meio que desgastante para a bateria. Outra solução seria um botão que você clica e ele faz toda a requisição, até porque ninguém fica 24 horas olhando para um celular para rastrear outro.
Você tem outro problema, qualquer usuário em Android está apto a limpar a memória retirando todos os Services de atividade.
Você deve pensar na posibilidade de rodar seu aplicativo no BOOT do aparelho, se não, em qualquer limpeza de memória seu Service vai por água abaixo.
Tais pensando em fazer isso via GitHub? Ou é um projeto pessoal teu?
Esse é um projeto pessoal meu.
Como qualquer usuario Android pode limpar a memoria? Vc fala utilizando aqueles programas “Matadores de Tarefas”, se for isso, a pessoa que estiver usando tem q saber o que esta fazendo uai…
Eu to querendo fazer a mesma coisa… porem não quero
que fique atualizando toda hora e sim somente quando eu enviar um comando… e possível fazer isto? atravéz da web enviar um comando que ative o gps e me devolva a localização? ou mandar mensagens sms porem que o usuario não veja estes sms somente a app veja o sms com o comando ative o gps e mande a localização exata para quem mandou o sms secreto… sera possivel fazer algo do genero? e como poupar o maximo de bateria do usuário com isto?
[quote=fabiobh]Esse é um projeto pessoal meu.
Como qualquer usuario Android pode limpar a memoria? Vc fala utilizando aqueles programas “Matadores de Tarefas”, se for isso, a pessoa que estiver usando tem q saber o que esta fazendo uai…[/quote]
Todos os aparelhos android em configurações possuem um comando para dar “kill” em serviços em background.
Isso é uma norma de segurança…
Se vocês quiserem, podemos trabalhar em um projeto GitHub.
Eu topo ajudar.
E como funciona isso de criar um projeto no github?
O problema é que cada um tem uma ideia de como deve funcionar o seu programa de localização, e fundir tudo isso num so programa ou trazer todas essas funções ficaria inviavel.
[quote=felipebonezi]Se vocês quiserem, podemos trabalhar em um projeto GitHub.
Eu topo ajudar.[/quote]
Eu tbm topo!