Autore Topic: Allarm manger e ricreazione di una sveglia  (Letto 2185 volte)

Offline Tizzi

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
Allarm manger e ricreazione di una sveglia
« il: 28 Febbraio 2011, 20:53:38 CET »
0
Salve a tutti, premetto che sono un novellino in android e grazie ai vostri consgli su questo forum sono risucito a ricreare un POI manager per un esame univesitario, quindi ringrazio in primis tutti coloro che mi sono stati di grande aiuto. E premetto che con me ho sempre il manuel del  prof. CARLI.
Ora mi sono tuffato alla ricreazione di una sveglia per android. Leggendo molti topic di mimmog ho cominciato a buttar giu un po di codice. Penso di essere arrivato a buon punto, posto di seguito il codice:
questa è una porzione del main...
Codice (Java): [Seleziona]
public void onClick(View arg0) {
                       
                       
                        Calendar calendar = Calendar.getInstance();
                        int Hour = Integer.parseInt(Pill.getString("pill1SetHour", "0"));
                calendar.set(Calendar.HOUR_OF_DAY, Hour);
                int Minute = Integer.parseInt(Pill.getString("pill1SetMinute", "0"));
                calendar.set(Calendar.MINUTE, Minute);
                calendar.set(Calendar.SECOND, 0);
                calendar.set(Calendar.MILLISECOND, 0);
                long OrarioAllarme = calendar.getTimeInMillis();
                Toast.makeText(main.this,""+calendar.getTimeInMillis()+"", Toast.LENGTH_SHORT).show();
               

               

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

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

                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                alarmManager.set(AlarmManager.RTC_WAKEUP, OrarioAllarme,invio);

                Toast.makeText(main.this, "Richiesta Inviata", Toast.LENGTH_SHORT).show();
                       
                }
tutto cio che avviene prima di questo codice è la memorizzazione dell'ora tramite time picker. In sintesi dopo la pressione del tasto si dovrebbe creare il penndig all'orario contenuto in OrarioAllarme.
Questa è la classe CallReciver
Codice (Java): [Seleziona]
public class CallReceiver extends BroadcastReceiver {

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

                PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);      
                WakeLock wake = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
                wake.acquire();
            Intent newIntent = new Intent(context, Prova.class);
            newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);          
            context.startActivity(newIntent);

    }
}  
e questa è la classe prova
Codice (Java): [Seleziona]
public class Prova extends Activity{

            public void onCreate(Bundle savedInstanceState) {          
                super.onCreate(savedInstanceState);
                setContentView(R.layout.prova);
                Toast.makeText(Prova.this,"DRIN DRIN", Toast.LENGTH_SHORT).show();
         }
}
Mi è stato suggerito di modificare il manifest aggiungendo:
Codice (XML): [Seleziona]
 <receiver android:name="CallReceiver"><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED"></action></intent-filter></receiver>ecco.. pare che tutto vada senza errori di crash. Ma quanto la richiesta viene inviata, all'orario stabilito non succede nulla.
Ringrazio in anticipo tutti i buoni samaritani ^^

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Allarm manger e ricreazione di una sveglia
« Risposta #1 il: 10 Maggio 2012, 16:36:30 CEST »
0
anche a me ha lo stesso comportamento, però al contrario tuo non è che non parte mai parte dopo un certo tot che non è mai preciso.
hai percaso mai risolto?

Offline Tizzi

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
Re:Allarm manger e ricreazione di una sveglia
« Risposta #2 il: 11 Maggio 2012, 10:46:20 CEST »
0
odio... questo post è un po vecchiotto.. e con il mio progettino sono andato avanti... mi sapresti dire che problema hai? forse posso risolverlo...

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Allarm manger e ricreazione di una sveglia
« Risposta #3 il: 11 Maggio 2012, 10:51:58 CEST »
0
Ti rimando al mio post che penso dia verlo spiegato meglio.

Mal funzionamento AlarmManager - Android Developers Italia

ho cominciato a capire che è più il modo di gestire il risveglio del telefono il problema che non l'alarm in se....

grazie dell'aiuto :D

Offline Tizzi

  • Nuovo arrivato
  • *
  • Post: 12
  • Respect: 0
    • Mostra profilo
Re:Allarm manger e ricreazione di una sveglia
« Risposta #4 il: 11 Maggio 2012, 11:46:33 CEST »
0
Nel mi ocaso l'allarm manager è molto preciso...
con questa porzione di codice setto l'orario di mio interesse.... e mi restituisce i millisecondi...

Codice (Java): [Seleziona]
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, "orario che vuoi");
cal.set(Calendar.MINUTE, "minuti che vuoi");
cal.set(Calendar.SECOND, "secondi che vuoi");
cal.set(Calendar.MILLISECOND, "millisecondi che vuoi");
long OrarioAllarme = cal.getTimeInMillis();

poi c'è l'allarm manager

Codice (Java): [Seleziona]
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, OrarioAllarme,"Cadenza","Pending Intent"); //in questo caso setRepeating perche a me serviva cosi
e nell'activity che vado a richiamare dal pending c'è :

Codice (Java): [Seleziona]
final PowerManager pm =    (PowerManager)this.getSystemService(Context.POWER_SERVICE);
wakelock = pm.newWakeLock((PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP), "tag");
wakelock.acquire();

// quando deve finire
wakelock.release();

 e tutto funziona in maniera precisa
« Ultima modifica: 11 Maggio 2012, 11:48:31 CEST da Tizzi »

Offline mambu

  • Utente normale
  • ***
  • Post: 167
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    Windows 7
Re:Allarm manger e ricreazione di una sveglia
« Risposta #5 il: 11 Maggio 2012, 12:11:27 CEST »
0
grazie, ora provo col tuo wakeclock che è diverso dal mio;)