2009-05-08 20 views
23

Lade ich nicht definitiv etwas my favourite tool mit nicht finden, aber ich dachte, ich es hier aus setzen würde ...erkennen, wenn das Gerät ist

Gibt es einen Weg, mit dem iPhone SDK, für eine Anwendung, wenn zu erkennen Das Gerät ist in einem Zustand der Stromversorgung (Laden, Dock, etc.)?

Ich möchte den idleTimer automatisch deaktivieren können, wenn das Gerät mit Strom versorgt wird (ansonsten ist es eine benutzerdefinierte Einstellung).

+0

Schöne Berührung auf Google zu verknüpfen, lachte ich. Gute Frage, rettete mir Zeit. Danke an Sie und die Mitwirkenden. –

Antwort

32

Ja, UIDevice der Lage, Ihnen dies zu sagen:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 

if ([[UIDevice currentDevice] batteryState] == UIDeviceBatteryStateCharging) { 
    NSLog(@"Device is charging."); 
} 

Siehe UIDevice Referenz in der Dokumentation für weitere Informationen und für andere Werte von batteryState.

39

Sie sind besser dran mit:

[[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; 

if ([[UIDevice currentDevice] batteryState] != UIDeviceBatteryStateUnplugged) { 
     [UIApplication sharedApplication].idleTimerDisabled=YES; 
    } 

Dies liegt daran, Sie beschäftigen müssen, sich mit zwei verschiedenen Staaten - eine ist, dass die Batterie Laden und die andere, wenn es ist voll geladen.

Wenn Sie wirklich darüber vollständig sein wollen - Sie würden registrieren, um Batterieüberwachung Benachrichtigungen zu erhalten, so können Sie den Leerlaufzeitgeber erneut aktivieren, wenn der Benutzer Netz getrennt usw.

0

Sie verwenden können darwin notification center und verwenden Sie den Ereignisnamen com.apple.springboard.fullycharged.

diese Weise erhalten Sie eine Benachrichtigung an Ihre eigene Methode erhalten wird, ist hier ein Code Schnipsel:

// Registering for a specific notification 
NSString *notificationName = @"com.apple.springboard.fullycharged"; 
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), 
           NULL, 
           yourCustomMethod, 
           (__bridge CFStringRef)notificationName, 
           NULL, 
           CFNotificationSuspensionBehaviorDeliverImmediately); 

// The custom method that will receive the notification 
static void yourCustomMethod(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) 
{ 
    NSString *nameOfNotification = (__bridge NSString*)name; 

    if([nameOfNotification isEqualToString:notificationName]) 
    { 
    // Do whatever you want... 
    } 
} 
+1

Die Antwort ist iOS ... Sie sollten den Snip-Code versuchen. Ich habe es in einigen meiner Projekte verwendet. Lesen Sie auch die obigen Hyperlinks. – OhadM

4

Swift

UIDevice.currentDevice().batteryMonitoringEnabled = true; 

if (UIDevice.currentDevice().batteryState != .Unplugged) { 
    print("Device is charging."); 
} 
4

Swift 3:

UIDevice.current.isBatteryMonitoringEnabled = true 
let state = UIDevice.current.batteryState 

if state == .charging || state == .full { 
    print("Device plugged in.") 
} 
+0

kann sein, es ist "let state = UIDevice.current.batteryState" –

+1

@BateroBui und alle, die das Update vorgeschlagen; Vielen Dank – UpSampler

Verwandte Themen