Phát hiện thời gian bên ngoài

Từ Android 12, Android có thể tuỳ ý sử dụng nguồn thời gian bên ngoài để đề xuất thời gian theo thời gian Unix cho dịch vụ time_detector. Tính năng này không được bật theo mặc định trong AOSP.

Nguồn gốc thời gian bên ngoài cho phép nhà sản xuất thiết bị cung cấp các đề xuất hoàn toàn tuỳ chỉnh về thời gian cho Android. Sau khi nhận được đề xuất từ nguồn thời gian bên ngoài, dịch vụ time_detector sẽ xác định xem có nên cập nhật đồng hồ hệ thống bằng cách sử dụng các quy tắc ưu tiên đã định cấu hình hay không.

Triển khai

Để hỗ trợ tính năng phát hiện thời gian bên ngoài, nhà sản xuất thiết bị phải triển khai một thành phần gửi đề xuất về thời gian bên ngoài đến dịch vụ time_detector thông qua một lệnh gọi API hệ thống.

Để định cấu hình nguồn bên ngoài, hãy sử dụng tệp cấu hình máy chủ hệ thống core/res/res/values/config.xml. Thêm giá trị external vào config_autoTimeSourcesPriority.

Ví dụ sau đây cho biết Android sẽ ưu tiên cao nhất cho các đề xuất về thời gian bên ngoài khi đặt đồng hồ hệ thống. Nếu không có đề xuất hợp lệ nào về thời gian bên ngoài, thì nguồn gốc tiếp theo (gnss trong trường hợp này) sẽ được sử dụng.

<string-array name="config_autoTimeSourcesPriority">
        <item>external</item>
        <item>gnss</item>
</string-array>

Để cung cấp cho hệ thống một đề xuất về thời gian bên ngoài, hãy sử dụng phương thức suggestExternalTime() trong TimeManager. Nếu nguồn bên ngoài được định cấu hình bằng config_autoTimeSourcesPriority trong tệp cấu hình và không có đề xuất thời gian nào có mức độ ưu tiên cao hơn, thì Android sẽ dùng dấu thời gian được truyền đến phương thức này để đặt thời gian bắt đầu của hệ thống Unix hiện tại.