Android 10 giới thiệu một lựa chọn đặt lịch 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 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 phải định cấu hình tuỳ chọn này và không bắt buộc phải triển khai.
Cấu hình thiết bị
Phần này mô tả cách định cấu hình thiết bị cho lựa chọn Dựa trên thói quen.
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 đúng cách, 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 bạn 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, hãy đặt giá trị cấu hình này:
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
Để xác minh, hãy tạo hình ảnh, cài đặt ROM cho thiết bị và chuyển đến phần Cài đặt
Pin > Trình tiết kiệm pin > Lịch biểu của Trình tiết kiệm pin. Lựa chọn Dựa trên thói quen sẽ xuất hiện.
Ngưỡng tắt mặc định
Trường config_dynamicPowerSavingsDefaultDisableThreshold chỉ định mức pin mà hệ thống sẽ tắt Trình tiết kiệm pin nếu trình lập lịch Dựa trên thói quen đã bật trình tiết kiệm pin. 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
Phần này mô tả cách định cấu hình ứng dụng để sử dụng lựa chọn Dựa trên thói quen.
Quyền
Các API cần thiết để ứng dụng bật chế độ Tiết kiệm pin theo thói quen được bảo vệ bằng quyền android.permission.POWER_SAVER. Đây là một chữ ký hoặc quyền đặc biệt. Điều này có nghĩa là ứng dụng phải nằm trong một thư mục priv-app trên ảnh hệ thống và bạn phải cấp quyền này một cách rõ ràng.
Đối với các ứng dụng đặc quyền, bạn phải cấp quyền trong tệp XML cấu hình hệ thống trong thư mục /etc/permissions/ trên cùng một phân vùng với ứng dụng. Ví dụ: để cấp quyền android.permission.POWER_SAVER cho một ứng dụng có tên gói com.google.android.apps.turbo:
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
    <privapp-permissions package="com.google.android.apps.turbo">
        <permission name="android.permission.POWER_SAVER"/>
    </privapp-permissions>
</permissions>
Nếu bạn không cấp trước quyền này cho ứng dụng trên ảnh hệ thống, thì ứng dụng sẽ không thể nhận được quyền hoặc gọi thành công các API. Hệ thống không cung cấp thông tin phản hồi ngoài các lỗi tiêu chuẩn về quyền, vì vậy, bạn cần xác minh rằng ứng dụng có thể gọi các API và quan sát hiệu ứng của chúng.
Cài đặt
Để chế độ 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 android.permission.POWER_SAVER cho một ứng dụng và cho phép ứng dụng đó kiểm soát các API Dựa trên thói quen. Hành vi của tính năng này không được hỗ trợ và không được chỉ định nếu có nhiều ứng dụng cố gắng sử dụng quyền và API.
Kích hoạt Trình tiết kiệm pin theo thói quen
Phần này mô tả cách ứng dụng của bạn có thể kích hoạt chế độ Tiết kiệm pin Dựa trên thói quen bằng cách sử dụng các API được cung cấp.
API
Nếu quá trình thiết lập thành công, ứng dụng OEM được chỉ định trong cấu hình 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 Dựa trên thói quen của Trình tiết kiệm pin 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 giao tiếp được với hệ thống, thì hệ thống vẫn biết tỷ lệ phần trăm pin mà tại đó có thể tắt Trình tiết kiệm pin một cách an toàn.
API này phải tuân theo các chế độ ghi đè 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 nhận rằng giá trị chế độ cài đặt hỗ trợ đã thay đổi theo các lệnh gọi API.
Ví dụ: nếu bạn chọn chế độ Tiết kiệm pin Dựa trên thói quen và ứng dụng 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ì OEM xác định hành vi kích hoạt chế độ Trình tiết kiệm pin Dựa trên thói quen. Các OEM phải kiểm thử quy trình tích hợp của họ để xác minh 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:
- Dựa trên tỷ lệ phần trăm: Nếu bạn chọn Dựa trên tỷ lệ phần trăm trong giao diện người dùng Lịch biểu của Trình tiết kiệm pin và chọn 15%, thì Trình tiết kiệm pin sẽ chỉ tự động bật khi pin đạt 15%.
 - Dựa trên thói quen: Nếu bạn 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, thì Trình tiết kiệm pin sẽ bật khi ứng dụng gọi API bằng 
true. Ngoài ra, Trình tiết kiệm pin sẽ tự động tắt nếu thiết bị sạc đến ngưỡng được chỉ định và không cắm sạc. - Không có: Nếu bạn chọn Không có trong giao diện người dùng Lịch biểu của Trình tiết kiệm pin, thì Trình tiết kiệm pin sẽ không bao giờ tự động bật.
 - Ghi đè theo cách thủ công: Nếu ứng dụng bật Trình tiết kiệm pin và bạn ghi đè Trình tiết kiệm pin theo cách thủ công để tắt (bằng cách dùng Cài đặt nhanh, Cài đặt hoặc các phương thức khác), thì Trình tiết kiệm pin sẽ vẫn tắt cho đến khi bạn bật lại theo cách thủ công hoặc cắm thiết bị vào nguồn điện.