2012-09-10 19 views
12

Cách nhận mức pin với độ chính xác 1%.Cách nhận mức pin với độ chính xác 1% trong ios

 [UIDevice currentDevice].batteryLevel 

Sẽ cấp mức pin với độ chính xác 5%. Nhưng gần đây tôi đã sử dụng Battery Doctor App trên iPhone 4s của tôi chạy iOS 5.1, cấp độ pin với độ chính xác 1%. Bất cứ ai có bất kỳ ý tưởng, làm thế nào chúng ta có thể có được độ chính xác mà ... Tôi đã thử và đã tìm kiếm rất nhiều nhưng không nhận được cách thức chúng được tính toán nó .. Cảm ơn trước ...

+3

Tôi nghĩ bạn đang nói về độ chính xác, chứ không phải chính xác. Cả 19/20 và 99/100 đều chính xác như nhau, ngay cả đối với cùng một khoản phí bộ nhớ chính xác. Di chuyển tới số gia tăng 1 chữ số chính xác hơn, mặc dù có thể là số chính xác (ví dụ câu trả lời hài hước của @ tipicalflow dưới đây) –

+2

@AlexBrown Hài hước là khi mọi người cười vào câu trả lời cho câu hỏi mà họ không có câu trả lời: D. ngay bây giờ là demotivating các OP! – tipycalFlow

+0

@ AlexBrown Ông ** là ** nói về độ chính xác, không chính xác! Tôi không nghĩ rằng bạn hoàn toàn hiểu được khái niệm về mức pin iOS.Trong một môi trường iOS chặt chẽ đóng cửa, các dữ liệu chỉ có sẵn để nhà phát triển là lượng pin còn lại dưới dạng phần trăm.Chúng tôi không có mẫu số để đánh giá độ chính xác được đề cập - chỉ một giá trị phần trăm được kích hoạt sau khoảng thời gian 5%. – tipycalFlow

Trả lời

1

trả lời xuất phát từ this question:

Bạn có thể sử dụng NSTimer để thao tác các giá trị bạn hiển thị cho độ chính xác xuất hiện. Đối với mỗi phiên, ứng dụng đang hoạt động, tạo một bộ dữ liệu pin mẫu (như thời gian cần thiết cho mức pin giảm từ 100% xuống 95%, sau đó 95% đến 90%, v.v.) và lưu nó trên thiết bị . Sau đó, sử dụng bộ hẹn giờ để đặt giá trị pin được cập nhật (và ước tính) theo thời gian cần thiết cho mức pin giảm 5% chia cho 5 (giả sử mỗi phần trăm giảm sau cùng khoảng thời gian, sẽ khác nhau, nhưng nó đã thắng 't là một đáng chú ý độ lệch). Đúng là thời lượng pin giảm theo thời gian nhưng vì chúng tôi điều chỉnh giá trị hẹn giờ theo các giá trị được lưu trong phiên trước, nên tiếp tục chính xác hơn rất nhiều so với tuổi thọ của thiết bị.

Chỉnh sửa- Đối với trạng thái ban đầu, bạn có thể cung cấp giá trị mặc định tùy thuộc vào kiểu iPhone (3,3G, 4,4S). Các giá trị khác nhau có thể được tính toán cho các thiết bị khác nhau này.

+0

Bạn không thể có sự xuất hiện của độ chính xác, điều đó không có nghĩa là bất cứ điều gì - hoặc là chính xác hoặc không. Bạn có thể làm cho nó chính xác hơn, mặc dù điều này có thể làm giảm hoặc tăng độ chính xác, tùy thuộc vào cách dữ liệu nguồn và mô hình thời gian của bạn tốt như thế nào. –

+0

Có, chúng tôi có thể thực hiện tính toán chính xác hơn bằng phương pháp này nhưng chúng tôi phải đợi khi ứng dụng khởi chạy lần đầu tiên để tính toán dữ liệu và cung cấp mức pin chính xác..Nhưng hãy xem ứng dụng này "http: // itunes.apple.com/in/app/battery-doctor/id438159515?mt=8 "cho độ chính xác mức pin tối đa 1% ... Hy vọng liên kết trợ giúp .. vì vậy tôi nghĩ rằng phải có một cách để tính toán mức độ chính xác hơn lưu trữ dữ liệu và nội suy .. – Ankit

+0

@AlexBrown * Hình thức * của độ chính xác là dành cho ** người dùng **, không phải là lập trình viên (tất nhiên nó không chính xác cho người lập trình)! – tipycalFlow

7

Nếu bạn tắt Cài đặt-> Chung-> Sử dụng-> Tỷ lệ phần trăm pin, Bác sĩ pin hiển thị mức pin của bạn với độ chính xác% 5 ... Vì vậy, tôi đoán rằng họ đang chạy một số thuật toán nhận dạng hình ảnh cho góc trên bên phải của thiết bị, nơi phần trăm pin được hiển thị.

3

Nếu bạn đang jailbroken, bạn chỉ có thể sử dụng

int percent = [(SBUIController*)[objc_getClass("SBUIController") sharedInstance] displayBatteryCapacityAsPercentage]; 

Phương pháp này có mặt trên iOS 4.3+, và có lẽ là những gì Battery Doctor đang sử dụng.

9

Bắt đầu với iOS 8,

[UIDevice currentDevice].batteryLevel 

cung cấp 1% độ chính xác :)

1

Trong iOS 8.1.x tôi đã nhận thấy rằng mức pin hiện đang báo cáo mức pin chính xác cho các ứng dụng ngay bây giờ. Trước đây, sẽ báo cáo 5% một lần. Không có gì khác để bạn thực hiện trong iOS 8.1.x dưới dạng [UIDevice currentDevice].batteryLevel nên tự động báo cáo điều này ngay bây giờ.

+0

Cần phải kiểm tra, cảm ơn .. – Ankit

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