2009-12-25 10 views
25

Aggiornamento

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html#//apple_ref/occ/instp/UIScreen/brightnessDim iPhone Screen, ma non lasciarlo dormire

Questo è il Doc di Apple per controllare la luminosità dello schermo. Di seguito è la domanda originale.


ho trovato tramite Google che posso disattivare l'iPhone di andare a dormire in un'applicazione utilizzando:

application.idleTimerDisabled = YES; 

in modo che il codice simile a questo:

- (void)applicationDidFinishLaunching:(UIApplication *)application {  

    // Override point for customization after application launch 

    // This disables the autosleep I added this to TEST, 
    // delete later if you want:- 
    application.idleTimerDisabled = YES; 
    [window addSubview:switchViewController.view]; 
    [window makeKeyAndVisible]; 

Perfetto , Funziona bene. Tuttavia, la mia domanda è, posso in qualche modo disabilitare l'iPhone di andare a dormire, pur consentendo allo schermo di attenuarsi? O forse oscurare lo schermo da solo nell'app per risparmiare la carica della batteria?

Io sicuramente non voglio che l'iPhone dorme, ma mi piacerebbe anche essere facile da usare/batteria e oscurare lo schermo. (Sai, come come puoi impostare l'iPhone per oscurare lo schermo X secondi prima che vada a dormire.) Esiste un modo efficace per farlo?

risposta

11

Sono abbastanza sicuro che non c'è nulla nell'SDK ufficiale.

[(id)[UIApplication sharedApplication] setBacklightLevel:0.3f]; // or whatever value 

funziona, ma è ovviamente non documentato. La recente esperienza con UIGetScreenImage indica che forse la strategia giusta con API utili ma prive di documenti è quella di usarli e vedere cosa succede.

In caso contrario, qualcuno ha mai misurato se il consumo di energia del telefono si interrompe se mostra un'immagine nera, o non aiuta a meno che non si possa abbassare la retroilluminazione?

+0

Fantastico, grazie per la tua opinione. Giocherò e vedrò se riesco a fare qualcosa. –

+4

Ricorda che Apple può/rifiuterà la tua applicazione se utilizzerai API private come questa. – shw

+0

Da iOS 5 ce n'è uno. – Rivera

1

Puoi impostare proximityState per indurre l'iPhone a pensare che sia vicino all'orecchio di qualcuno? Funzionerebbe con l'iPhone, ma non con l'iPod touch. Non c'è modo di girare selettivamente per regolare la luminosità ... le app che attenuano lo schermo in genere lo fanno mettendo un'immagine parzialmente trasparente su quella corrente.

+0

Come lo "impostare"? 'proximityState' è di sola lettura. – Rivera

2

Uso un'app sveglia tipo "nightstand" che, se si tocca due volte lo schermo dell'orologio, oscura lo schermo di una certa quantità.

Credo che quello che probabilmente sta davvero facendo è mettere un UIView nero parzialmente opaco su tutto il suo contenuto. Penso che la retroilluminazione non sia molto attenuata, ma il colore nero posto sopra lo schermo lo fa sembrare più debole. Funziona.

+0

Questo è quello che farei anch'io. – csano

0

È possibile utilizzare questo approccio http://oleb.net/blog/2014/02/alarm-clock-apps-ios/

Basta aggiungere un parametro in Info.plist. E la tua app funziona ancora quando lo schermo si oscura, il tuo dispositivo è bloccato.

Quando esegui il debug, l'app continua a funzionare e non si oscura automaticamente, basta premere il pulsante di blocco per eseguire il test.

Quando si esegue l'app senza eseguire il debug, è possibile vedere questa funzione, come l'app Music di Apple, la musica continua a suonare quando il dispositivo passa allo schermo.

0

partire con iOS 5 è possibile impostare UIScreen s' brightness:

Questa struttura è supportato solo sulla schermata principale. Il valore di questa proprietà deve essere un numero compreso tra 0.0 e 1.0, inclusi.

Le modifiche di luminosità apportate da un'app rimangono attive solo mentre l'app è attiva. Il sistema ripristina le impostazioni di luminosità fornite dall'utente alle ore appropriate quando l'app non è in primo piano. Quindi se modifichi il valore di questa proprietà con , non è necessario registrare il valore precedente e ripristinarlo quando l'app si sposta sullo sfondo.

Problemi correlati