2009-12-25 14 views
25

Aktualizacja

https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIScreen_Class/index.html#//apple_ref/occ/instp/UIScreen/brightnessDim iPhone ekran, ale nie pozwól, by spać

to Doc Jabłko dla kontrolowania jasności ekranu. Poniżej jest oryginalne pytanie.


Znalazłem za pomocą Google, że mogę wyłączyć iPhone pójściem spać w aplikacji za pomocą:

application.idleTimerDisabled = YES; 

więc kod wygląda następująco:

- (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]; 

Doskonały , to dobrze działa. Jednak moje pytanie brzmi: czy mogę w jakiś sposób wyłączyć iPhone'a od zasypiania, jednocześnie pozwalając ekranowi przyciemnić? A może sam przyciemnić ekran w aplikacji, aby oszczędzać baterię?

Zdecydowanie nie chcę, aby iPhone spał, ale chciałbym również być przyjazny dla użytkownika/przyjazny dla baterii i przyciemnić ekran. (Wiesz, jak możesz ustawić iPhone'a, żeby przyciemnił ekran X sekund zanim przejdzie w stan uśpienia.) Czy jest na to skuteczny sposób?

Odpowiedz

11

Jestem prawie pewien, że nie ma niczego w oficjalnym SDK.

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

działa, ale jest oczywiście nieudokumentowane. Ostatnie doświadczenia z UIGetScreenImage wskazują, że być może właściwą strategią z przydatnymi, ale nieudokumentowanymi API jest ich użycie i zobaczenie, co się stanie.

W przypadku braku tego, czy ktoś kiedykolwiek zmierzył, czy zużycie energii telefonu spada, gdy wyświetla się czarny obraz, czy też nie pomaga, chyba że można wyłączyć podświetlenie?

+0

Fajnie, dzięki za twój wgląd. Będę się bawił i zobaczę, czy mogę coś zrobić. –

+4

Należy pamiętać, że Apple może/odrzuci Twoją aplikację, jeśli użyjesz prywatnego interfejsu API, takiego jak ten. – shw

+0

Od iOS 5 jest jeden. – Rivera

1

Czy możesz ustawić proximityState, aby oszukać iPhone'a, myśląc, że jest blisko czyjegoś ucha? To działałoby z iPhonem, ale nie iPodem touch. Nie ma możliwości selektywnego skorygowania jasności ... Aplikacje, które przyciemniają ekran, zwykle robią to, umieszczając częściowo przezroczysty obraz nad bieżącym.

+0

Jak byś go "ustawić"? 'proximityState' jest tylko do odczytu. – Rivera

2

Używam aplikacji budzika typu "nocny", która po dwukrotnym dotknięciu ekranu zegara przyciemnia ekran o pewną ilość.

Wierzę, że tak naprawdę to naprawdę jest układanie częściowo nieprzejrzystego, czarnego UIView na całej zawartości. Myślę, że podświetlenie nie jest naprawdę przyciemnione, ale czarny kolor umieszczony na ekranie sprawia, że ​​wydaje się on ciemniejszy. To działa.

+0

To też zrobię. – csano

0

Można użyć tej metody http://oleb.net/blog/2014/02/alarm-clock-apps-ios/

Wystarczy dodać parametr do Info.plist. Twoja aplikacja wciąż działa, gdy ekran jest przyciemniony, a urządzenie zablokowane.

Podczas debugowania aplikacja wciąż działa i nigdy nie ściemnia się automatycznie, wystarczy nacisnąć przycisk blokady, aby przetestować.

Po uruchomieniu aplikacji bez debugowania można zobaczyć tę funkcję, np. Aplikacja Muzyka firmy Apple, muzyka wciąż jest odtwarzana po włączeniu urządzenia, aby wyłączyć ekran.

0

Począwszy iOS 5 można ustawić UIScreen „s brightness:

Ta właściwość jest obsługiwana tylko na głównym ekranie. Wartość tej właściwości powinna być liczbą z zakresu od 0,0 do 1,0 włącznie.

Zmiany jasności wprowadzone przez aplikację obowiązują tylko wtedy, gdy aplikacja jest aktywna. System przywróci ustawione przez użytkownika ustawienie jasności pod adresem , gdy aplikacja nie znajduje się na pierwszym planie. Jeśli więc zmienisz wartość tej właściwości na , nie musisz zapisywać poprzedniej wartości i przywracać jej, gdy aplikacja zostanie przeniesiona na tło.

Powiązane problemy