2012-12-16 25 views
17

Tôi đang sử dụng:thời gian còn lại cho đến khi phí hoàn tất, iOS

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

để tìm ra tình trạng pin. Tôi đang tìm kiếm để tìm, cách tìm thời gian còn lại cho đến khi khoản phí hoàn tất. ví dụ: Còn lại 1 giờ 20 phút. Làm thế nào tôi có thể tìm thấy nó theo lập trình?

Trả lời

8

Tôi chưa tìm thấy bất kỳ phương pháp nào cho điều này trong số official documentation, không phải trong lớp được bán phá giá, private header của lớp .

Vì vậy, chúng tôi phải tìm ra thứ gì đó. "Giải pháp" tốt nhất mà tôi có trong thời điểm này tương tự như cách tiếp cận được thực hiện khi ước tính thời gian tải xuống: tính tốc độ tải xuống/tính phí trung bình và chia số tiền còn lại (dữ liệu hoặc phí) cho tốc độ đó:

[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

Giả định rằng tính phí là tuyến tính - không phải như vậy. Việc sạc pin sẽ giảm đáng kể khi pin gần đầy. – duskwuff

+0

@duskwuff có, và thậm chí mức pin được báo cáo bởi hệ điều hành có thể không chính xác, vv Tại sao bạn nghĩ rằng tôi đã sử dụng thuật ngữ ** "trung bình" ** trong suốt? Shit xảy ra ... –

+0

Cảm ơn H2CO3, tôi không thể gọi batterChú pháp lớn.Chúng tôi đề nghị – iscavengers

Các vấn đề liên quan