Aplicação "Serviço" no Android

Rapaziada, eu tô tentando achar algum exemplo de como fazer tipo um serviço, uma aplicação que inicie automaticamente junto com o Android e sem janela. Alguém conhece algum exemplo?

Abraços à todos,

pra iniciar junto com o sistema, procura sobre BroadcastReceiver…

no manifest vc vai ter que fazer algo parecido com isso:

    <receiver
        android:name="pacote.nomedaclasse"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

daí lá na classe “nomedaclasse”, vc extende o BroadcastReceiver, daí no onReceive vc implementa pra startar o seu serviço…

Só um adendo… da versão 3.1 pra frente do android você não consegue iniciar um serviço sem estar vinculado a uma tela para o usuario abrir pelomenos na primeira vez manualmente…

a aplicação instala com o status desativado, até que o usuario interaja e abra a aplicação manualmente pela primeira vez… depois disso sim vc conseguirá abrir automaticamente ao iniciar…
se for em versão menor que 3.1, aí não tem problema… vai iniciar de boa.

daí, dependendo do que você for fazer, te recomendo que inicie o serviço periodicamente usando um AlarmManager, que acorda o telefone do modo de espera, daí vc roda teu serviço repetindo de tempo em tempo, e finalizando quando acabar de fazer o que ele está programado…

[quote=saryoromulo]pra iniciar junto com o sistema, procura sobre BroadcastReceiver…

no manifest vc vai ter que fazer algo parecido com isso:

    <receiver
        android:name="pacote.nomedaclasse"
        android:enabled="true" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

daí lá na classe “nomedaclasse”, vc extende o BroadcastReceiver, daí no onReceive vc implementa pra startar o seu serviço…

Só um adendo… da versão 3.1 pra frente do android você não consegue iniciar um serviço sem estar vinculado a uma tela para o usuario abrir pelomenos na primeira vez manualmente…

a aplicação instala com o status desativado, até que o usuario interaja e abra a aplicação manualmente pela primeira vez… depois disso sim vc conseguirá abrir automaticamente ao iniciar…
se for em versão menor que 3.1, aí não tem problema… vai iniciar de boa.

daí, dependendo do que você for fazer, te recomendo que inicie o serviço periodicamente usando um AlarmManager, que acorda o telefone do modo de espera, daí vc roda teu serviço repetindo de tempo em tempo, e finalizando quando acabar de fazer o que ele está programado…[/quote]

Então amigão, obrigado pela resposta. Sobre o final da sua mensagem, o serviço é rastreamento, ele vai pegar a posição do GPS e enviar via GPRS pro meu servidor, sendo assim essa aplicação jamais deve parar de se comunicar. Alguma ideia?

Abraços.

eu tenho um sistema de rastreamento também, só que eu nao pego todos os pontos… pois ficam MUITAS informações, e a bateria do aparelho vai rapidinho…

eu fiz 2 serviços… 1 que salva temporariamente no sqlite o ponto do gps de 5 em 5 minutos… e outro que envia as informações, que roda de 15 em 15.

nesse meio tempo o celular entra em modo de espera sozinho, e só desperta quando o serviço for iniciar de novo…

mas enfim, respondendo sua pergunta… se vc realmente quer que ele fique acordado o tempo inteiro, pegando todos os pontos e enviando direto, pesquisa sobre wakelock…

é mais ou menos isso:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, “descrição que vc quiser”);
wl.acquire(); //liga o wake lock
wl.release(); //desliga o wake lock

só que daí vc nao vai usar o FULL_WAKE_LOCK, pq ele deixa a tela acesa, e tudo mais… dá uma pesquisada melhor pra saber qual se encaixa pra vc.

[quote=saryoromulo]eu tenho um sistema de rastreamento também, só que eu nao pego todos os pontos… pois ficam MUITAS informações, e a bateria do aparelho vai rapidinho…

eu fiz 2 serviços… 1 que salva temporariamente no sqlite o ponto do gps de 5 em 5 minutos… e outro que envia as informações, que roda de 15 em 15.

nesse meio tempo o celular entra em modo de espera sozinho, e só desperta quando o serviço for iniciar de novo…

mas enfim, respondendo sua pergunta… se vc realmente quer que ele fique acordado o tempo inteiro, pegando todos os pontos e enviando direto, pesquisa sobre wakelock…

é mais ou menos isso:

PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, “descrição que vc quiser”);
wl.acquire(); //liga o wake lock
wl.release(); //desliga o wake lock

só que daí vc nao vai usar o FULL_WAKE_LOCK, pq ele deixa a tela acesa, e tudo mais… dá uma pesquisada melhor pra saber qual se encaixa pra vc.[/quote]

Você tem Skype/msn/Facebook/Telefone pra gente poder conversar melhor?

Abraços.

passa teu skype aí que eu adiciono.

Passei via MP.