Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Hỗ trợ thiết bị không dùng pin

Trang này mô tả cách Android xử lý các sản phẩm có pin rời hoặc không có pin bên trong. Thay vào đó, các thiết bị thứ hai được kết nối với nguồn điện bên ngoài, chẳng hạn như ổ cắm điện AC hoặc cổng USB trên thiết bị khác.

Có pin không?

Các ứng dụng có thể sử dụng mã sau để phát hiện xem thiết bị hiện có pin hay không:

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

Hành vi không dùng pin của thiết bị

Nếu Android không phát hiện thấy thiết bị pin cho sản phẩm của bạn, thì các giá trị mặc định liên quan đến pin sau sẽ được sử dụng. Lưu ý rằng các mặc định đã thay đổi trong bản phát hành Android 9. Bảng này cho thấy sự khác biệt.

Trạng thái pin Android 9 trở lên Android 8.1 trở xuống
Món quà sai thật
Trạng thái không xác định sạc pin
Dung lượng còn lại 0 100%
Sức khỏe không xác định tốt
Trạng thái trực tuyến của bộ sạc AC không sửa đổi buộc phải đúng

Các nhà sản xuất có thể thay đổi các thiết lập mặc định sử dụng một hạt nhân power_supply lái xe hoặc sức khỏe HAL .

Android 9 trở lên

Android 9 loại bỏ một số mã trước đó cho các thiết bị không có pin mà theo mặc định, giả vờ là có pin, đang được sạc ở mức 100% và có sức khỏe tốt với nhiệt độ bình thường đọc trên điện trở nhiệt của nó.

Hầu hết các API khuôn khổ thỏa thuận với thông tin này tiếp tục xử lý các tình huống thông thường giống như trước đây: hệ thống sẽ được xem xét để được sạc (có nghĩa là, không phải chạy bằng nguồn pin), và sẽ không được coi là có một pin thấp. Nếu giao diện người dùng vẽ biểu tượng pin, biểu tượng này sẽ xuất hiện với dấu chấm than và tỷ lệ phần trăm pin sẽ được hiển thị là 0%. Nhưng thiết bị sẽ không tắt do pin yếu và các công việc yêu cầu sạc pin hoặc pin tốt sẽ được lên lịch.

Android 8.1 trở xuống

Bởi vì tình trạng pin là không rõ, các API khuôn khổ Android sẽ xem xét hệ thống được sạc (hoặc, không chạy bằng nguồn pin) và sẽ không được coi là có một pin thấp. Nếu giao diện người dùng hiển thị biểu tượng pin, biểu tượng này sẽ xuất hiện với dấu chấm than và phần trăm pin sẽ được hiển thị là 0%. Nhưng thiết bị sẽ không tắt do pin yếu và các công việc cần sạc hoặc pin tốt sẽ được lên lịch.

Thực hiện

Mã mặc định của Android 9 có thể hoạt động bình thường đối với thiết bị của bạn, nhưng bạn nên thực hiện thay đổi nhân hoặc HAL để phản ánh chính xác nguồn điện và trạng thái pin cho sản phẩm của bạn, như được mô tả ở trên. Nếu Android 9 và cao hơn không phát hiện ra một nguồn cung cấp điện lớp Linux thiết bị sạc, sau đó theo mặc định tất cả các loại sạc (AC, USB, Wireless) sẽ có tình trạng ngoại tuyến. Nếu tất cả các bộ sạc đang ngoại tuyến nhưng không có thiết bị pin nào được phát hiện, hệ thống sẽ vẫn được coi là đang sạc theo nghĩa là nó đang chạy bằng nguồn bên ngoài, không phải nguồn pin, như đã mô tả trước đây.

Nếu sản phẩm của bạn không có một pin và luôn được kết nối với một nguồn năng lượng, tốt nhất là để thực hiện một Linux kernel điều khiển sạc lớp power_supply cho AC hoặc nguồn điện USB mà bộ trực tuyến của mình sysfs thuộc tính để true . Hoặc bạn có thể định cấu hình thuộc tính trực tuyến bộ sạc AC trong Health HAL cho thiết bị của mình. Để làm điều này thực hiện một HAL sức khỏe như mô tả trong thực hiện y tế 2.0 .

Tùy chỉnh này sức khỏe HAL thực hiện một phiên bản tùy chỉnh của Health::getHealthInfo() mà sửa đổi giá trị của BatteryProperties.chargerAcOnline = true .

Để bắt đầu, sao chép tập tin hardware/interfaces/health/2.0/default/Health.cpp để riêng thực hiện Health HAL của bạn và thay đổi nó theo 2.0 README sức khỏe .