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.

Chế độ ga ra

Để cung cấp khoảng thời gian không hoạt động trên xe, Chế độ nhà để xe giữ cho hệ thống ở trạng thái hoạt động để có thể thực hiện các công việc trong JobScheduler bị hạn chế ở chế độ không tải.

Chế độ ga ra là gì?

Trên các thiết bị được kết nối như điện thoại, người dùng dựa vào hệ thống để đảm bảo thiết bị hoạt động ổn định, cập nhật và tối ưu hóa. Để đạt được trạng thái đó, nền tảng Android cung cấp một cửa sổ thời gian nhàn rỗi trong đó các ứng dụng có thể thực hiện các tác vụ khi người dùng không tương tác với thiết bị. Điện thoại được coi là không hoạt động khi người dùng không chạm vào điện thoại trong thời gian dài (60 phút trở lên) và màn hình tắt. Không giống như điện thoại, khi ô tô không được sử dụng, nó bị tắt, có nghĩa là ô tô không có cửa sổ thời gian nhàn rỗi . Chế độ Ga-ra đảm bảo thời gian nhàn rỗi trên ô tô.

Khi người dùng tắt xe, hệ thống sẽ chuyển sang Chế độ ga ra. Khi ô tô đang ở Chế độ ga ra, hệ thống được bật nguồn, màn hình tắt và các công việc nhàn rỗi trong hàng đợi JobScheduler được thực thi. Để triển khai Chế độ ga ra, hãy xem Hướng dẫn triển khai thiết bị bên dưới.

Nguyên tắc triển khai thiết bị

Để kích hoạt Chế độ ga ra, khi tắt xe, Xe HAL (VHAL) phải gửi AP_POWER_STATE_REQ với trạng thái SHUTDOWN_PREPARE với thông số được đặt thành SHUTDOWN_ONLY hoặc CAN_SLEEP .

Để trạng thái SHUTDOWN_PREPARE có hiệu lực, VHAL phải chỉ định hai tham số (trạng thái và tham số bổ sung) cho lệnh AP_POWER_STATE_REQ . Điều này cho phép thiết bị vào Chế độ ga ra, chế độ này sẽ phát hiện các công việc đã lên lịch trong JobScheduler và ngăn hệ thống tiếp tục tạm ngừng hoặc tắt cho đến khi hoàn thành công việc.

Làm cách nào để triển khai thiết bị kết nối với Android framework?

Đối với Chế độ ga-ra, khuôn khổ yêu cầu VHAL kéo dài thời gian tắt máy cho đến khi vượt quá thời gian yêu cầu hoặc tất cả các công việc đã được thực hiện, lúc đó hệ thống sẽ tắt. Trong các trường hợp cụ thể được xác định trong CDD, việc triển khai thiết bị có thể tắt hệ thống sớm hơn. (Để biết chi tiết về các yêu cầu tương thích với Android, hãy xem Tài liệu Định nghĩa Tương thích Android (CDD) .) Nếu VHAL phải tắt hệ thống trước khi Chế độ ga ra hoàn tất, VHAL có thể phát hành SHUTDOWN_PREPARE với thông số được đặt thành SHUTDOWN_IMMEDIATELY hoặc SLEEP_IMMEDIATELY . Việc triển khai thiết bị chỉ có thể sử dụng điều này trong các trường hợp cụ thể , thường là khi không có sẵn các tài nguyên cần thiết để duy trì hoạt động của hệ thống. Ví dụ, khi dung lượng pin không đủ.

Chế độ ga ra

Các nhà phát triển ứng dụng làm việc như thế nào với Chế độ ga ra?

Các ứng dụng và dịch vụ không tương tác trực tiếp với Chế độ ga ra. Thay vào đó, các ứng dụng lên lịch công việc trong JobScheduler . Những công việc bị hạn chế bởi thời gian nhàn rỗi được thực hiện trong Chế độ ga ra.

Đoạn mã sau cho biết cách lên lịch một công việc để chạy trong Chế độ ga ra:

public class MyGarageModeJob extends JobService { ... }

Context context = ...;
int jobId = ...;

ComponentName myGarageModeJobName = new componentName(context,
                                                      MyGarageModeJob.class);

JobInfo.Builder infoBuilder = new JobInfo.Builder(jobId, myGarageModeJobName)
                    .setRequiresDeviceIdle(true);

// Example of an optional constraint:
infoBuilder.setRequiredNetworkType(NetworkType.NETWORK_TYPE_UNMETERED);

JobScheduler jobScheduler = (JobScheduler) context
                    .getSystemService(Context.JOB_SCHEDULER_SERVICE);

jobScheduler.schedule(infoBuilder.build());

Gỡ lỗi Chế độ ga ra

Để gỡ lỗi Chế độ ga ra:
  1. Để bật các danh mục ghi nhật ký liên quan đến Chế độ ga ra:
    adb shell stop
    adb shell setprop log.tag.GarageMode VERBOSE
    adb shell setprop log.tag.Finsky VERBOSE
    adb shell setprop log.tag.CAR.POWER VERBOSE
    adb shell setprop log.tag.JobScheduler.Connectivity VERBOSE
    adb shell start
    
  2. Để xem lại đầu ra logcat để cho biết rằng Chế độ ga ra đang bắt đầu:
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    GarageMode: [Controller]: Sending broadcast with action: com.android.server.jobscheduler.GARAGE_MODE_ON
    
  3. Để xác định rằng đầu ra logcat để cho biết Chế độ để xe đã kết thúc (bị hủy hoặc hoàn thành):
    [GarageMode]: GarageMode was canceled
    
    hoặc,
    [GarageMode]: GarageMode completed normally
    

    Chế độ ga-ra phụ thuộc vào trạng thái năng lượng của xe như mô tả ở trên.

  4. Xem lại đầu ra logcat để cho biết các trạng thái nguồn chính xác được nhập:
    CAR.POWER: starting shutdown prepare without Garage Mode
    GarageMode: [Controller]: CPM state changed to SHUTDOWN_PREPARE
    GarageMode: [GarageMode]: Entering GarageMode
    CAR.POWER: send shutdown prepare
    CAR.POWER: setPowerState=SHUTDOWN_PREPARE(7) param=0