2016-08-12 28 views
9

Làm cách nào để phát hiện pin tốc độ sạc trong thiết bị Android? Tôi có thể phát hiện tình trạng pin bằng cách sử dụng mã bên dưới. nhưng không sạc được tốc độ.Làm thế nào để kiểm tra tốc độ sạc pin?

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_BATTERY_CHANGED); 
BatteryChangeReceiver receiver = new BatteryChangeReceiver(subscriber); 
registerReceiver(receiver, filter); 


public class BatteryChangeReceiver extends BroadcastReceiver { 

    @Override public void onReceive(Context context, Intent intent) { 
       // here I get all battery status. 
    } 
    } 

Tôi cũng tham khảo this, thisthis nhưng không thể tìm ra cách để kiểm tra tốc độ sạc.

Có một ứng dụng (Ampere) hiển thị tốc độ sạc. enter image description here enter image description here Tôi làm cách nào để đạt được điều này?

Xin cảm ơn trước.

+0

Hãy dành thời gian và tính phí kết hợp phần trăm. – Amy

+0

Không, nó sẽ hiển thị ngay sau khi tôi kết nối với bộ sạc. Nếu tôi kết nối với cáp USB thì sẽ hiển thị sạc chậm và nếu sạc tường và sạc nhanh. –

+0

Tôi nghĩ bạn có thể tìm thấy nó trong nhật ký dmesg của thiết bị. –

Trả lời

4

Sử dụng BatteryManager. Nó cung cấp các tài sản BATTERY_PROPERTY_CURRENT_AVERAGE, cung cấp cho bạn pin trung bình hiện tại trong microamperes. Thật không may, khoảng thời gian mà thông tin này được thu thập có thể khác nhau giữa thiết bị và thiết bị. Giá trị âm nghĩa là xả, giá trị dương nghĩa là điện thoại đang sạc. Bạn có thể sử dụng BATTERY_PROPERTY_CURRENT_NOW (có vẻ như Ampere đang sử dụng phương pháp này). Nó trả về dòng pin tức thời. Nó có thể không chính xác, do đó, gọi điện thoại này một vài lần và tính toán trung bình có vẻ như một ý tưởng tốt.

Ví dụ mã:

BatteryManager batteryManager = (BatteryManager) Context.getSystemService(Context.BATTERY_SERVICE); 
int averageCurrent = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CURRENT_AVERAGE); 
+0

Nó được thêm vào API 21. Bạn có thể cung cấp giải pháp cũng hoạt động ở phiên bản thấp hơn không. –

+0

Chỉ những điện thoại có đồng hồ đo nhiên liệu pin (https://source.android.com/devices/tech/power/device.html) mới có thể báo cáo lại BATTERY_PROPERTY_CURRENT_AVERAGE. Ví dụ: Nexus 5 chỉ có thể cung cấp cho bạn BATTERY_PROPERTY_CAPACITY. – Jehy

1

Tôi không nghĩ theo cách của họ bất kỳ để phát hiện tốc độ sạc: Nhưng bạn có thể làm điều đó còn gì phải bàn: 1) Bạn có thể ghi lại mức tính phí (tỷ lệ phần trăm hoặc số) bởi

int level = intent.getIntExtra (BatteryManager.EXTRA_LEVEL, 0); batteryTxt.setText (String.valueOf (level) + "%");

2) Và sau một thời gian xử lý, bạn có thể nhận lại mức cước hiện tại bằng cách sử dụng cùng một mã. 3) Sau đó tính toán sự khác biệt và sau đó bạn sẽ có thể biết tốc độ sạc.

Đây chỉ là ý tưởng về cách bạn có thể triển khai.

Hy vọng điều này sẽ giúp bạn

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