Autore Topic: AllarmManager, BroadcastReceiver e WakeLock  (Letto 1048 volte)

Offline Gambanera

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    Vodafone ideos
  • Play Store ID:
    Gambanera
  • Sistema operativo:
    Ubuntu 10.10 / Windows 7
AllarmManager, BroadcastReceiver e WakeLock
« il: 23 Febbraio 2011, 10:58:54 CET »
0
Buon giorno a tutti!
Ho un problema che mi porto dietro da un po di tempo, ma ancora non riesco a venirne a capo. La situazione è questa:

Activity - Ho una Activity principale dove setto le opzioni di un timer. Una volta cliccato su un bottone imposto un allarm manager con i dati inseriti e faccio terminare la mia classe.

Codice (Java): [Seleziona]
public void onClick(View v) {

                Calendar calendar = Calendar.getInstance();
                calendar.add(Calendar.MINUTE, timerSharedPreference.getInt("minute", 0));
                calendar.add(Calendar.SECOND, timerSharedPreference.getInt("second", 0));

                Intent intent = new Intent(getApplicationContext(), CallReceiver.class);

                PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent,
                                PendingIntent.FLAG_UPDATE_CURRENT);

                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
                                sender);

                Log.i("Main", "Richiesta inviata");

                finish();

        }


BroadcastReceiver - Al momento opportuno parte il mio broadcastReceiver che lancia una nuova activity.

Codice (Java): [Seleziona]
public class CallReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {

                Log.i("CallReciver", "Richiesta ricevuta");

                Intent newIntent = new Intent(context, MiaClasse.class);
                newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                context.startActivity(newIntent);

        }

}

Problema - Come faccio a evitare che il cellulare vada in standby tra il lancio del pendig intet a la ricezione da parte del brodcast?
Oppure, come faccio a far "svegliare" il cellulare nel momento in cui il BroadcastReceiver riceve la richiesta?

L'utente mimmog mi ha suggerito, in un post precedente, di utilizzare il gestore del wakeLook nel broadcastReceiver: la cosa non risulta fattibile poiché non essendo un Activity non posso instanziare un PowerManager

Codice (Java): [Seleziona]
PowerManager pm = (PowerManager) getSystemService(android.content.Context.POWER_SERVICE);
Qualcuno sa come io ne possa venire a capo?
« Ultima modifica: 23 Febbraio 2011, 11:14:53 CET da Gambanera »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:AllarmManager, BroadcastReceiver e WakeLock
« Risposta #1 il: 23 Febbraio 2011, 23:15:15 CET »
+1
Enjoy:

Codice (Java): [Seleziona]
        @Override
        public void onReceive(Context context, Intent intent) {
                PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
                [...]
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline Gambanera

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: +11
    • Mostra profilo
  • Dispositivo Android:
    Vodafone ideos
  • Play Store ID:
    Gambanera
  • Sistema operativo:
    Ubuntu 10.10 / Windows 7
Re:AllarmManager, BroadcastReceiver e WakeLock
« Risposta #2 il: 24 Febbraio 2011, 10:48:52 CET »
0
Grazie :)
Ieri sera sono arrivato alla tua stessa soluzione, ma ancora non ho avuto tempo di implementarla. Una volta testata cambio la status del thread in risolto.
_______________________________________________

Il rilascio del look lo invoco all'interno del metodo onRecive, giusto?
« Ultima modifica: 24 Febbraio 2011, 10:53:28 CET da Gambanera »

Offline mimmog

  • Utente senior
  • ****
  • Post: 731
  • Respect: +11
    • MisterX_Dev
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Note e Galaxy Nexus
  • Play Store ID:
    MisterX_Dev
  • Sistema operativo:
    Windows 7
Re:AllarmManager, BroadcastReceiver e WakeLock
« Risposta #3 il: 28 Febbraio 2011, 13:43:48 CET »
0
Stò cavolo di wake lock quanti problemi che dà!  8-) ricordati di fare il release quando hai finito altrimenti il telefono non si spegne più ;)