2 Stimmen

Wie kann man programmatisch erkennen, ob die Hintergrundbeleuchtung in iOS eingeschaltet ist?

Ich möchte iOS-Code, der anzeigen kann, ob der Bildschirm beleuchtet ist oder nicht, so dass meine App den Batterieverbrauch aufgrund der (energiehungrigen) Hintergrundbeleuchtung überwachen kann. Dieser Code darf nur die öffentliche API verwenden, da ich beabsichtige, die App schließlich im App Store einzureichen.

Zunächst dachte ich, es handele sich vielleicht nur um eine Überprüfung der Helligkeit Eigenschaft des UIScreen, etwa so:

-(BOOL)isBackLightOn {
    float brightness = [UIScreen mainScreen].brightness;
    return brightness > 0;
}

aber das ist falsch denn [UIScreen mainScreen].brightness steht für den Wert des Schiebereglers, den der Benutzer auf dem Bildschirm Einstellungen->Helligkeit ausgewählt hat, ノット die aktuelle Lichtleistung des Bildschirms.

Apple hat eindeutig eine Möglichkeit, diesen Wert zu ermitteln, da er in der Energiediagnose enthalten ist, die in Instruments angezeigt werden kann (siehe z. B. Protokollierung des Energieverbrauchs in einem iOS-Gerät ), aber vielleicht wurde diese Messung nicht über die öffentliche API veröffentlicht?

0voto

Flipper Punkte 2591

Eine Frage, die Ihnen dabei helfen könnte, ist folgende:

Ändern der Beleuchtungsstärke, iPhone

Es scheint so, als ob Sie dies mit einbeziehen:

#include "GraphicsServices.h"

Und dann etwas wie dieses:

NSNumber *bl = (NSNumber*) CFPreferencesCopyAppValue(CFSTR("SBBacklightLevel" ), CFSTR("com.apple.springboard"));
float previousBacklightLevel = [bl floatValue];

Sollte Ihnen die Beleuchtungsstärke anzeigen. Denken Sie daran, dass der Bildschirm immer eine Form von Hintergrundbeleuchtung haben wird.

0voto

Hiren Punkte 12632

Zuerst habe ich versucht, @Flipper's Antwort, aber es ist nicht half mir viel dann habe ich F & E auf diese und ich habe eine Lösung mit dem folgenden Code gefunden

    NSLog(@"%f", [[[NSMutableDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.apple.springboard.plist"] objectForKey:@"SBBacklightLevel2"] floatValue]);

Es gibt mir den Float-Wert, die aktuelle Helligkeitsstufe des Geräts

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X