Android 10 giới thiệu một lựa chọn lịch biểu cho trình tiết kiệm pin có tên là dựa trên thói quen. Lựa chọn này cho phép một ứng dụng do nhà sản xuất thiết bị gốc (OEM) chọn cung cấp tín hiệu cho hệ thống để lập lịch trình tiết kiệm pin thông minh hơn. Bạn cần phải định cấu hình lựa chọn này và không bắt buộc phải triển khai.
Cấu hình thiết bị
Quy cách của nhà cung cấp
Để thông báo cho giao diện người dùng Cài đặt rằng thiết bị được định cấu hình chính xác, hãy dùng lớp phủ cấu hình để ghi đè giá trị config_batterySaverScheduleProvider
bằng tên gói của ứng dụng.
Ví dụ: nếu muốn gói ứng dụng com.google.android.apps.turbo
kiểm soát chế độ cài đặt dựa trên thói quen, thì bạn sẽ đặt giá trị cấu hình này:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Lúc này, điện thoại sẽ hiển thị lựa chọn dựa trên thói quen. Để xác minh, hãy tạo hình ảnh, chuyển hình ảnh đó vào điện thoại rồi chuyển đến phần Cài đặt > Pin > Trình tiết kiệm pin > Lịch trình của Trình tiết kiệm pin. Lựa chọn dựa trên quy trình sẽ xuất hiện.
Ngưỡng tắt mặc định
Trường config_dynamicPowerSavingsDefaultDisableThreshold
mới chỉ định mức pin mà hệ thống sẽ tắt chế độ tiết kiệm pin (nếu chế độ này được bật bởi trình lập lịch dựa trên thói quen). Giá trị mặc định của hệ thống là 80%, nhưng bạn có thể thay đổi giá trị này.
Cấu hình ứng dụng
Quyền
Các API cần thiết để ứng dụng bật chế độ tiết kiệm pin được bảo vệ bằng quyền android.permission.POWER_SAVER
. Đây là một quyền đặc biệt/chữ ký, vì vậy, hãy cấp cho ứng dụng mà bạn muốn có thể kích hoạt chế độ tiết kiệm pin quyền này trong privapp-whitelist
.
Ví dụ về việc cấp quyền privapp
cho một ứng dụng:
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
Nếu bạn không cấp trước quyền này cho phiên bản ứng dụng trên hình ảnh hệ thống, thì ứng dụng sẽ không thể có được quyền hoặc gọi đúng các API. Hệ thống không cung cấp thông tin phản hồi nào ngoài các lỗi thông thường về quyền, vì vậy, hãy xác minh rằng bạn có thể gọi các API và quan sát hiệu ứng của chúng.
Cài đặt
Để dựa trên thói quen hoạt động đúng cách, bạn phải cài đặt trước ứng dụng trên hình ảnh hệ thống có quyền cần thiết. Chỉ cấp quyền POWER_SAVER
cho một ứng dụng và cho phép ứng dụng đó kiểm soát dựa trên các APIthường dùng. Hành vi của tính năng khi có nhiều ứng dụng cố gắng sử dụng quyền và API này là không được hỗ trợ và không xác định.
Kích hoạt trình tiết kiệm pin
API
Giả sử quá trình thiết lập diễn ra thành công cho đến nay, ứng dụng OEM được chỉ định trong cấu hình sẽ có thể gọi thành công phương thức được liên kết trong PowerManager để kích hoạt chế độ tiết kiệm pin:
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
Nếu bạn bật chế độ cài đặt lịch biểu trình tiết kiệm pin dựa trên quy trình và ứng dụng gọi phương thức này bằng giá trị true
cho powerSaveHint
, thì trình tiết kiệm pin sẽ bật. Chỉ định disableThreshold
để nếu ứng dụng không thể giao tiếp với hệ thống, thì hệ thống vẫn biết mức pin mà tại đó có thể tắt chế độ tiết kiệm pin một cách an toàn.
API này phải tuân theo các chế độ cài đặt thay thế của người dùng và chế độ tạm ngưng trình tiết kiệm pin theo cách tương tự như trình tiết kiệm pin tự động dựa trên tỷ lệ phần trăm. Hãy xem tài liệu về API để biết thêm thông tin.
Để xác minh rằng các API được gọi thành công, hãy truy vấn chế độ cài đặt chung để xác minh rằng giá trị chế độ cài đặt hỗ trợ đã thay đổi theo các lệnh gọi API.
Ví dụ: nếu người dùng chọn chế độ trình tiết kiệm pin theo thói quen và ứng dụng đang gọi setDynamicPowerSaveHint(true, 10)
, thì chế độ cài đặt chung sẽ có các giá trị sau:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
Nếu sau đó bạn gọi setDynamicPowerSaveHint(false, 25)
, các giá trị sẽ là:
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
Bạn có thể kiểm tra các giá trị này bằng lệnh adb
sau:
adb shell settings get global <setting-name>
Xác minh
Không có cách tự động nào để xác minh tính năng này vì không có cách nào biết được hành vi mà OEM sẽ sử dụng để quyết định thời điểm kích hoạt chế độ tiết kiệm pin thông thường. Do đó, các OEM chịu trách nhiệm kiểm thử quá trình tích hợp của họ để đảm bảo rằng hành vi đáp ứng được kỳ vọng. Cụ thể, hãy xác minh rằng thiết bị có thể thực hiện các tác vụ sau:
- Người dùng chọn dựa trên tỷ lệ phần trăm trong giao diện người dùng lịch trình tiết kiệm pin và chọn 15%. Trình tiết kiệm pin CHỈ tự động bật khi pin đạt mức 15%.
- Người dùng chọn dựa trên thói quen trong giao diện người dùng lịch biểu của trình tiết kiệm pin. Khi ứng dụng gọi API bằng
true
, trình tiết kiệm pin sẽ bật. Ngoài ra, chế độ tiết kiệm pin sẽ tự động tắt nếu thiết bị được sạc đến ngưỡng được chỉ định và rút phích cắm. - Người dùng chọn không có trong giao diện người dùng lịch tiết kiệm pin. Trình tiết kiệm pin KHÔNG BAO GIỜ được tự động bật.
- Nếu ứng dụng bật chế độ tiết kiệm pin và người dùng tự tắt chế độ tiết kiệm pin (bằng cách sử dụng phần Cài đặt nhanh, Cài đặt, v.v.), thì chế độ này sẽ VẪN TẮT cho đến khi người dùng tự bật lại hoặc cắm thiết bị vào nguồn điện.