2011-12-19 17 views
5

Sto provando a creare un'app di allarme che possa attivare un allarme in modalità schermo bloccato (l'app è in primo piano, ma lo schermo è bloccato). L'allarme deve essere attivato da un NSTimer non tramite la notifica uilocal.Prevenzione del sonno profondo iOS 5

In iOS 4 ho utilizzato il trucco "Riproduci suono silenzioso ogni 10 secondi" per impedire all'app di andare in modalità di sospensione profonda e gli eventi del timer funzionavano correttamente. Tuttavia, in iOS 5 questo non sembra funzionare.

Qualche idea? O questo dovrebbe funzionare e sto facendo qualcosa di sbagliato?

+0

Peter, stai usando https://github.com/marcop/iPhoneInsomnia con il volume impostato a 0,1? –

+0

come base - sì. Tuttavia c'erano alcuni problemi con il codice, quindi ho cambiato alcune cose. –

+0

Ti ricordi le modifiche che hai apportato? –

risposta

4

Sembra che in realtà si può utilizzare il 'riprodurre audio in silenzio' Hack in iOS 5, ma l'audio deve essere udibili significa che non si può giocare a volume impostato 0.0.

+0

Quindi il volume 0.1 è accettabile quando si invia? – Gon

2

Probabilmente è una soluzione sporca, ma in passato ho usato il sensore di prossimità per spegnere lo schermo invece di bloccare il telefono. È sufficiente posizionare il telefono capovolto e lo schermo si spegnerà automaticamente.

[[UIDevice currentDevice] setProximityMonitoringEnabled:YES]; 

Questo vi permetterà di mantenere il pieno controllo del dispositivo, mentre lo schermo non si spegne.

+0

Questa è un'idea interessante. Non proprio quello che sto cercando, ma comunque utile. –

+0

Mi piace! L'app non passerà mai alla modalità schermata bloccata utilizzando questa tecnica? – jimmystormig

+0

No, mai. È quello che usano anche altre app. Si noti che la batteria si scarica ancora, quindi alla fine il telefono andrà in stato "bloccato". ;-) –

4

È possibile utilizzare github.com/marcop/iPhoneInsomnia e impostare il volume su un valore maggiore di 0, ma non funziona ancora perché il file audio è talmente breve che il sistema uccide l'applicazione prima che il timer venga attivato e riproduce il suono. Ho risolto questo problema impostando il numeroOfLoops di audioPlayer su -1 (ripetizione infinita). Quindi dovrebbe funzionare.

E si dovrebbe anche impostare la chiave plist UIBackgroundMode ad una matrice di una stringa chiamata "audio"