2015-05-21 12 views
5

हमेशा [myDevice batteryLevel] लौटने -1 और [myDevice batterystate] 0 लौटा रहा है (डिफ़ॉल्ट मामले में प्रवेश)।सही बैटरी स्तर और बैटरी स्थिति कैसे प्राप्त करें IOS?

मैं सही मूल्य कैसे प्राप्त कर सकता हूं? क्या कोई इसे हल करने में मेरी मदद कर सकता है? नीचे मेरा कोड है। (हमेशा बैटरी लिफ्ट को "-100%" और बैटरी स्थिति "अज्ञात" के रूप में प्रिंट करें)।

कोड:

UIDevice *myDevice = [UIDevice currentDevice]; 
[myDevice setBatteryMonitoringEnabled:YES]; 
float batLeft = [myDevice batteryLevel]*100; 
int status=[myDevice batteryState]; 
NSLog(@"level:%0.0f",batLeft); 
NSString *status_str; 
switch (status) 
{ 
    case UIDeviceBatteryStateUnplugged: 
    { 
     NSLog(@"UnpluggedKey"); 
     [email protected]"UnPlugged"; 
     break; 
    } 
    case UIDeviceBatteryStateCharging: 
    { 
     NSLog(@"ChargingKey"); 
     [email protected]"Charging"; 
     break; 
    } 
    case UIDeviceBatteryStateFull: 
    { 
     NSLog(@"FullKey"); 
     [email protected]"BatteryFul"; 
     break; 
    } 

default: 
{ 
    NSLog(@"UnknownKey"); 
    [email protected]"Unknown"; 
    break; 
} 
} 
NSLog(@"Battery status:%@",status_str); 
+4

आप डिवाइस या सिम्युलेटर पर परीक्षण कर रहे हैं? सिम्युलेटर पर परीक्षण आपको वह आउटपुट देगा जो अब आप प्राप्त कर रहे हैं। :-) –

उत्तर

8

आपका कोड ठीक होने के लिए लग रहा है, यह एक ही है कि मैं अपने एप्लिकेशन में से एक में प्रयोग किया जाता है:

-(void) battery 
{ 
    UIDevice *myDevice = [UIDevice currentDevice]; 
    [myDevice setBatteryMonitoringEnabled:YES]; 

    int state = [myDevice batteryState]; 
    NSLog(@"battery status: %d",state); // 0 unknown, 1 unplegged, 2 charging, 3 full 

    double batLeft = (float)[myDevice batteryLevel] * 100; 
    NSLog(@"battery left: %ld", batLeft); 
} 

आपकी समस्या यह है कि आप में यह कोशिश हो सकती है सिम्युलेटर, जहां यह काम नहीं कर सकता है।

एक असली डिवाइस पर आज़माएं।

+0

यह कोड किसी भी प्रश्न से पहले से अलग है? कृपया बताएं कि यह समस्या कैसे हल करता है। – rmaddy

+0

आप सही हैं, मैं अब अपनी पोस्ट संपादित करने जा रहा हूं –

3

मुझे आशा है कि आप अपने सिम्युलेटर :)

पर यह जाँच नहीं कर रहे हैं आप अपने डिवाइस का सही बैटरी स्तर नहीं मिलेगा, इसकी हमेशा 0.05 के गुणक में। इसका मतलब है कि यदि आपका डिवाइस बैटरी स्तर 78% है तो यह 75% दिखाएगा।

अगर आपको सटीक बैटरी स्तर संकेत चाहते हैं तो आप इस लिंक का अनुसरण कर सकते हैं: http://blog.coriolis.ch/2009/02/14/reading-the-battery-level-programmatically/

संबंधित मुद्दे