2012-12-16 20 views
17

मैं उपयोग कर रहा हूँ:समय चार्ज होने में शेष, पूरा हो गया है आईओएस

UIDevice *myDevice = [UIDevice currentDevice]; 
[myDevice setBatteryMonitoringEnabled:YES]; 
float batLeft = [myDevice batteryLevel]; 
int i = [myDevice batteryState];  
int batinfo = batLeft * 100; 

बैटरी की स्थिति को खोजने के लिए। मैं यह देखने के लिए देख रहा हूं कि चार्ज पूरा होने तक शेष समय कैसे प्राप्त करें। पूर्व: 1 घंटा 20 मिनट शेष। मैं इसे प्रोग्रामेटिक तरीके से कैसे ढूंढ सकता हूं?

उत्तर

8

मुझे official documentation में इस के लिए कोई विधि नहीं मिली है, न तो कक्षा के वर्ग-डंप किए गए, private header में।

तो हमें कुछ के साथ आना होगा। इस समय सबसे अच्छा "समाधान" मेरे मन में है, डाउनलोड समय का अनुमान लगाने के दौरान किए गए दृष्टिकोण के समान है: डाउनलोड/चार्जिंग की औसत गति की गणना करना, और उस गति से शेष राशि (डेटा या चार्ज) को विभाजित करना:

[UIDevice currentDevice].batteryMonitoringEnabled = YES; 
float prevBatteryLev = [UIDevice currentDevice].batteryLevel; 
NSDate *startDate = [NSDate date]; 

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
     selector:@selector(batteryCharged) 
      name:UIDeviceBatteryLevelDidChangeNotification 
     object:nil 
]; 

- (void)batteryCharged 
{ 
    float currBatteryLev = [UIDevice currentDevice].batteryLevel; 
    // calculate speed of chargement 
    float avgChgSpeed = (prevBatteryLev - currBatteryLev)/[startDate timeIntervalSinceNow]; 
    // get how much the battery needs to be charged yet 
    float remBatteryLev = 1.0 - currBatteryLev; 
    // divide the two to obtain the remaining charge time 
    NSTimeInterval remSeconds = remBatteryLev/avgChgSpeed; 
    // convert/format `remSeconds' as appropriate 
} 
+4

यह मानता है कि चार्जिंग रैखिक है - यह नहीं है। चार्जिंग नाटकीय रूप से धीमा हो जाती है क्योंकि बैटरी पूरी तरह से बंद हो जाती है। – duskwuff

+0

@ डस्कवफ हां, और ओएस द्वारा रिपोर्ट की गई बैटरी स्तर भी सटीक नहीं हो सकती है, आदि। आपको क्यों लगता है कि मैंने पूरे शब्द ** "औसत" ** का उपयोग किया था? Shit होता है ... –

+0

धन्यवाद H2CO3, मैं बल्लेबाज चार्ज विधि कॉल करने में सक्षम नहीं हूं। कई सुझाव – iscavengers

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

  • कोई संबंधित समस्या नहीं^_^