-
Q:
[iPhone] – hoe scherm dimmen zonder te slapen
Voor mijn applicatie wil ik dat de iPhone niet gaat slapen, maar dat wel het scherm gaat dimmen (om batterij te besparen). Het niet laten slapen doe ik met de volgende code:
[code:1:232d89de30]- (void)applicationDidFinishLaunching:(UIApplication *)application
{
// avoid sleeping when this application is running
application.idleTimerDisabled = YES;
}[/code:1:232d89de30]Weet iemand de oplossing om het scherm te dimmen of zelfs helemaal uit te laten gaan waarbij het scherm wel reageert op touch (net als bij een handsfree gesprek)?
”danielpunt”Ik weet niet of dat gaat werken in de officiële SDK, want dit is van een Toolchain forum.
Ahh weer wat geleerd… sorry wist niet dat dit niet bij de SDK hoorde, eerlijk gezegd was dit simpel weg mijn resultaat na een google search. Nog mooier verteld, mijn eerst (jawel) mac komt hopelijk deze week.
Kan dus eigenlijk officieel dan pas gaan spelen met het spul;)
Ook met de SDK werkt dit gewoon hoor, als je het in een applicatie voor eigen gebruik gebruikt is het verder ook geen probleem. De AppStore zal je er niet mee inkomen denk ik.
Wel moet je ervoor zorgen dat je het GraphicServices framework toevoegd aan je project, deze staat in
[code:1:209c67e883]
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.1.sdk/System/Library/PrivateFrameworks/
[/code:1:209c67e883]Vervolgens kun je de methode GSEventSetBacklightLevel gewoon gebruiken.
Let wel, omdat het een private framework betreft bevat het framework geen header file dus je zult warnings krijgen dat die methode mogelijk niet bestaat. Om dit weg te werken zou je met class-dump een header file kunnen dumpen, of zelf de header file van GraphicServices downloaden van internet (even googlen).
Let ook even op dat als je zelf de backlight levels aanpast, je ze ook zelf weer terug moet zetten. Anders blijft je scherm os wide gedimt.
Mijn fout was dat ik de headerfile wil importeren en die bestaat niet.
[code:1:966312c716]#import <GraphicsServices/GraphicsServices.h> [/code:1:966312c716]
Als ik dit niet doe, dan blijkt het inderdaad gewoon te werken. Alleen krijg ik nu een warning als ik de GS functie aanroep: “warning: implicit declaration of function ‘GSEventSetBacklightLevel'”. Enig idee hoe ik die warning weg krijg?
Allemaal bedankt voor het meedenken, super dat het werkt.
Ik heb de functie declaratie in mijn eigen header file gedaan en dat werkt inderdaad goed.
@Pascal: Blijkbaar heb ik iets te vroeg gejuicht, want het werkt eigenlijk niet goed. Welke float value ik ook geef aan de functie GSEventSetBacklightLevel (tussen 0.0f en 1.0f), het licht gaat helemaal uit en krijgt het pas weer aan als ik de iPhone uit en aan zet. Zou jij een klein testje kunnen doen om te kijken of het bij jou goed werkt?”MacSullivan”Ik heb de functie declaratie in mijn eigen header file gedaan en dat werkt inderdaad goed.
@Pascal: Blijkbaar heb ik iets te vroeg gejuicht, want het werkt eigenlijk niet goed. Welke float value ik ook geef aan de functie GSEventSetBacklightLevel (tussen 0.0f en 1.0f), het licht gaat helemaal uit en krijgt het pas weer aan als ik de iPhone uit en aan zet. Zou jij een klein testje kunnen doen om te kijken of het bij jou goed werkt?Ik heb het net even getest en bij mij werkt het prima. Ik zal je mijn test xcodeprojectje even sturen, dan kun je het even proberen.
Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.