Autore Topic: Temporizzazione del silenzioso con l'AlarmManager  (Letto 1220 volte)

Offline LP84

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • LPirro
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus 3D, HTC Magic, Samsung Galaxy S, Samsung Galaxy SII
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Temporizzazione del silenzioso con l'AlarmManager
« il: 05 Giugno 2012, 13:35:06 CEST »
0
Ciao ragazzi, ho intenzione di creare un app usando l'AlarmManager, dove imposto un intervallo di tempo durante il quale il cellulare deve essere impostato su silenzioso. (ES: Impostato dalle 14.00 fino alle 16.00).

In giro per il forum ho visto che per settare il silenzioso si utilizza l'audio manager e ci sono riuscito:
Codice (Java): [Seleziona]
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);  
Ora però non riesco a trovare il modo di temporizzare l'evento con l'AlarmManager, qualcuno mi da una mano?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #1 il: 05 Giugno 2012, 14:25:42 CEST »
0
Dalla doc ufficiale:
Citazione
When an alarm goes off, the Intent that had been registered for it is broadcast by the system, automatically starting the target application if it is not already running.

Ti serve un componente che intercetti l'intent fatto scattare dall'AlarmManager, e che in risposta a questo evento manipoli l'audiomanager.

Offline LP84

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • LPirro
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus 3D, HTC Magic, Samsung Galaxy S, Samsung Galaxy SII
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #2 il: 05 Giugno 2012, 16:14:58 CEST »
0
Dalla doc ufficiale:
Ti serve un componente che intercetti l'intent fatto scattare dall'AlarmManager, e che in risposta a questo evento manipoli l'audiomanager.

E saresti in grado di farlo? Magari dandomi qualche dettaglio in più...

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #3 il: 05 Giugno 2012, 16:27:08 CEST »
0
Basta un Service  :-)

Per un esempio sull'AlarmManager, prova a dare un'ochiata qui: http://www.anddev.it/index.php/topic,7540.msg42737.html#msg42737


Offline LP84

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • LPirro
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus 3D, HTC Magic, Samsung Galaxy S, Samsung Galaxy SII
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #4 il: 05 Giugno 2012, 19:13:10 CEST »
0
Basta un Service  :-)

Per un esempio sull'AlarmManager, prova a dare un'ochiata qui: http://www.anddev.it/index.php/topic,7540.msg42737.html#msg42737

Si grazie, ma diciamo che la temporizzazione l'ho fatta. Cioè,  se fisso un orario (esempio le 19.00) e mando in esecuzione alle 19 esatte imposta il silenzioso, il problema è che non so come andare a creare un intervallo (esempio dalle 19.00 alle 20.00).

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #5 il: 05 Giugno 2012, 21:17:05 CEST »
0
Ammesso che si possa impostare un intervallo, per come è impostato l'AlarmManager non otterresti altro che richiamare due volte lo stesso componente (l'intent è sempre lo stesso). Tant'è che uno dei modi per usarlo è quello di far lanciare l'intent ogni X intervallo di tempo.
In sintesi, il comportamento "toggle" te lo devi creare da te: l'AlarmManager funge da scheduler.

Offline LP84

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Google+
    • LPirro
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus 3D, HTC Magic, Samsung Galaxy S, Samsung Galaxy SII
  • Sistema operativo:
    Windows 7, Ubuntu 10.10
Re:Temporizzazione del silenzioso con l'AlarmManager
« Risposta #6 il: 05 Giugno 2012, 21:26:56 CEST »
0
Ammesso che si possa impostare un intervallo, per come è impostato l'AlarmManager non otterresti altro che richiamare due volte lo stesso componente (l'intent è sempre lo stesso). Tant'è che uno dei modi per usarlo è quello di far lanciare l'intent ogni X intervallo di tempo.
In sintesi, il comportamento "toggle" te lo devi creare da te: l'AlarmManager funge da scheduler.

Perfetto, è questo che voglio fare io. Lanciare l'intent 2 volte, una per attivare il silenzioso, e una per disattivarlo, così creo l'AlarmManager io:

Codice (Java): [Seleziona]
Intent myIntent = new Intent(AndroidAlarmService.this, MyAlarmService.class);
                                pendingIntent = PendingIntent.getService(AndroidAlarmService.this, 0, myIntent, 0);
                                AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
                                Calendar calendar = Calendar.getInstance();
                                calendar.setTimeInMillis(System.currentTimeMillis());
                                calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour());
                                calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute());
                                calendar.set(Calendar.SECOND, 0);
                                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
                                Toast.makeText(AndroidAlarmService.this, "Start Alarm", Toast.LENGTH_LONG).show();

ora per lanciare l'intent ad ogni X intervallo come faccio?