2010-10-16 3 views
15

Gibt es eine Möglichkeit, das Display in iOS programmatisch auszuschalten? Nicht nur, um die Helligkeit zu verringern, sondern auch, wie es bei der Phone App der Fall ist. Ich bin glücklich, private API zu verwenden, da dies für den persönlichen Gebrauch ist.Display in iPhone OS (iOS) ausschalten

Danke!

+0

können Sie sagen, warum der Netzschalter nicht für Sie funktioniert? – nycynik

Antwort

4

Die einzige Möglichkeit, die ich kenne, öffentlich oder privat, ist die Verwendung der Power-Taste.

Sie bei -[UIApplication setProximitySensingEnabled:(BOOL)] aussehen könnten, oder -[UIApplication setIdleTimerDisabled:YES], könnte dies zu etwas nützlich führt

-1

Ich glaube nicht, dass irgend das Display auszuschalten ist (Simulation iphone Sleep-Taste), außer die Helligkeit zu ändern.

Diese link könnte helfen.

+0

GSEventSetBacklightFactor klang wie die richtige Funktion, aber leider wurde es aus dem SDK entfernt !! Irgendwelche Vorschläge für einen Ersatz? – nitsky

+0

'GSEventSetBacklightFactor' war nie ein Teil des offiziellen SDK aus dem einfachen Grund, weil Apple nicht möchte, dass Sie die Bildschirmhelligkeit anpassen oder ausschalten können, als Sie möchten, dass Sie in der Lage sind, Telefonanrufe zu tätigen oder App-Store-Käufe im Namen des Nutzers. – Tommy

+0

GSEventSetBacklightFactor wurde komplett entfernt (es ist nicht einmal mehr eine private API). –

22

Sie können das Display ausschalten, indem Sie die Näherungsüberwachung aktivieren. Der Bildschirm wird automatisch ausgeschaltet, wie in der Telefon-App, indem Sie das Telefon in die Nähe Ihrer Ohren legen oder einen Finger über den IR-Sensor an der Oberseite des Telefons legen.

[UIDevice currentDevice].proximityMonitoringEnabled = YES; 
+0

Kann ich eine Nähe irgendwie festlegen? Ich meine, ich kann nicht programmgesteuert einen Benutzer zu einem Telefon in der Nähe von Ohren zwingen :) Und ich muss es komplett programmgesteuert schwarz machen. –

+1

Ich versuchte, eine private Methode _setProximity: (BOOL) auf UIDevice zu verwenden, aber es Bildschirm nicht ausgeschaltet. –

0

Haben Sie versucht:

[[UIScreen mainScreen] setBrightness: yourvalue];

SO 8.936.999 Frage: iPhone: How can we programmatically change the brightness of the screen?

+0

Danke. Ich werde es morgen versuchen. Wie auch immer, meine Vermutung wird es in der Lage sein, die Helligkeit nur im selben Bereich zu steuern wie die Anwendung "Voreinstellungen" (die das Display nicht komplett ausschaltet, sondern nur viel dunkler sein kann) –

+1

Ich habe es versucht. Es verdunkelt den Bildschirm, macht es aber nicht schwarz. –

14

Sie dies tun können, (natürlich, private APIs natürlich mit):

auf iOS5 :

#include <stdio.h> 
#include <dlfcn.h> 

int (*SBSSpringBoardServerPort)() = (int (*)())dlsym(RTLD_DEFAULT, "SBSSpringBoardServerPort"); 
int port = SBSSpringBoardServerPort(); 
void (*SBDimScreen)(int _port,BOOL shouldDim) = (void (*)(int _port,BOOL shouldDim))dlsym(RTLD_DEFAULT, "SBDimScreen"); 

und dann

SBDimScreen(port,YES); 

verwenden, wenn Sie dimmen wollen, und

SBDimScreen(port,NO); 

, wann immer Sie wollen Aufblend.

Auf iOS6:

void (*BKSDisplayServicesSetScreenBlanked)(BOOL blanked) = (void (*)(BOOL blanked))dlsym(RTLD_DEFAULT, "BKSDisplayServicesSetScreenBlanked"); 

und dann verwenden:

BKSDisplayServicesSetScreenBlanked(1); // 1 to dim, 0 to undim 

"Dim" bedeutet hier völlig den Bildschirm auszuschalten. Dies verwendet das System, wenn z.B. Während eines Anrufs tritt ein Proximity-Ereignis auf.

+2

Hast du es auf iOS 6 versucht? Es scheitert still (tut nichts). Ich habe den Eindruck, dass es intern nach einer Berechtigung sucht. –

+1

BTW. Ich habe gesehen, dass du ein paar interessante Sachen auf Proximity Sensor und auf iPhoneDevWiki gepostet hast. Macht es Ihnen etwas aus, mir eine E-Mail zu schicken (meine E-Mail befindet sich in meinem Profil). Ich möchte, dass Sie etwas darüber fragen. –

+1

Sie haben Recht mit iOS6, nur getestet. Ich habe den Code für iOS6 hinzugefügt, damit er funktioniert. –

0

Proximity funktioniert nicht bei allen Geräten. Es gibt eine viel einfachere Lösung für dieses Problem, ohne auf private APIs zurückgreifen zu müssen.

Swift

UIScreen.main.wantsSoftwareDimming = true 
UIScreen.main.brightness = 0.0 

Ohne wantsSoftwareDimming, wird die Hintergrundbeleuchtung nie ganz auszuschalten. Die Dokumentation enthält diesen Warnsatz:

Der Standardwert ist false. Die Aktivierung kann zu Leistungseinbußen führen.