Car Hardware API (API Phần cứng ô tô)

Bắt đầu từ Car App API cấp 3, bạn có thể dùng Car App Library API để truy cập vào các thuộc tính và cảm biến của xe.

Yêu cầu

Để sử dụng các API đó với Android Auto, hãy bắt đầu bằng cách thêm một phần phụ thuộc trên androidx.car.app:app-projected vào tệp build.gradle cho mô-đun Android Auto của bạn. Đối với Android Automotive OS, hãy thêm một phần phụ thuộc trên androidx.car.app:app-automotive vào tệp build.gradle cho mô-đun Android Automotive OS.

Ngoài ra, trong tệp AndroidManifest.xml, bạn phải khai báo các quyền liên quan cần để yêu cầu dữ liệu ô tô mà bạn muốn sử dụng. Người dùng cũng phải cấp các quyền này cho bạn. Bạn có thể dùng cùng một mã trên Android Auto và Android Automotive OS, thay vì tạo các luồng phụ thuộc vào nền tảng. Tuy nhiên, các quyền cần thiết sẽ khác nhau.

CarInfo

Bảng này mô tả các thuộc tính được cung cấp trong API CarInfo và những quyền bạn phải yêu cầu để sử dụng các thuộc tính đó.

Phương thức Thuộc tính Quyền:
Android Auto
Quyền:
AAOS
Car App API
fetchModel Hãng xe, mẫu xe, năm sản xuất android.car.permission.CAR_INFO 3
fetchEnergyProfile Loại đầu nối xe điện, loại nhiên liệu com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Dữ liệu chỉ có trên một số xe AAOS chạy API 30 trở lên.

Kích thước bên ngoài Không áp dụng android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

Trạng thái thẻ thu phí cầu đường, loại thẻ thu phí cầu đường 3

addEnergyLevelListener

removeEnergyLevelListener

Mức pin, mức nhiên liệu, mức nhiên liệu thấp, quãng đường còn đi được com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_ENERGY

android.car.permission.CAR_ENERGY_PORTS

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addSpeedListener

removeSpeedListener

Tốc độ thô, tốc độ hiển thị (hiện trên màn hình cụm đồng hồ của ô tô) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Quãng đường trên công tơ mét com.google.android.gms.permission.CAR_MILEAGE Dữ liệu không có sẵn cho các ứng dụng Android Automotive OS được cài đặt từ Google Play. 3

Ví dụ: để biết quãng đường còn đi được, hãy tạo thực thể cho đối tượng CarInfo, sau đó tạo và đăng ký OnCarDataAvailableListener:

Kotlin

val carInfo = carContext.getCarService(CarHardwareManager::class.java).carInfo

val listener = OnCarDataAvailableListener<EnergyLevel> { data ->
    if (data.rangeRemainingMeters.status == CarValue.STATUS_SUCCESS) {
      val rangeRemaining = data.rangeRemainingMeters.value
    } else {
      // Handle error
    }
  }

carInfo.addEnergyLevelListener(carContext.mainExecutor, listener)

// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener)

Java

CarInfo carInfo = getCarContext().getCarService(CarHardwareManager.class).getCarInfo();

OnCarDataAvailableListener<EnergyLevel> listener = (data) -> {
  if(data.getRangeRemainingMeters().getStatus() == CarValue.STATUS_SUCCESS) {
    float rangeRemaining = data.getRangeRemainingMeters().getValue();
  } else {
    // Handle error
  }
};

carInfo.addEnergyLevelListener(getCarContext().getMainExecutor(), listener);

// Unregister the listener when you no longer need updates
carInfo.removeEnergyLevelListener(listener);

Đừng cho rằng dữ liệu từ ô tô luôn có sẵn. Nếu gặp lỗi, hãy kiểm tra trạng thái của giá trị bạn đã yêu cầu để hiểu rõ hơn lý do khiến bạn không truy xuất được dữ liệu mình yêu cầu. Để tìm hiểu thêm về định nghĩa lớp CarInfo, hãy xem tài liệu tham khảo.

CarSensors

Lớp CarSensors cho phép bạn truy cập vào gia tốc kế, con quay hồi chuyển, la bàn và dữ liệu vị trí của xe. Tính sẵn có của các giá trị này có thể phụ thuộc vào OEM. Định dạng của dữ liệu từ gia tốc kế, con quay hồi chuyển và la bàn giống như định dạng bạn nhận được từ API SensorManager.

Ví dụ: để kiểm tra hướng của xe, hãy làm như sau:

Kotlin

val carSensors = carContext.getCarService(CarHardwareManager::class.java).carSensors

val listener = OnCarDataAvailableListener<Compass> { data ->
    if (data.orientations.status == CarValue.STATUS_SUCCESS) {
      val orientation = data.orientations.value
    } else {
      // Data not available, handle error
    }
  }

carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, carContext.mainExecutor, listener)

// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener)

Java

CarSensors carSensors = getCarContext().getCarService(CarHardwareManager.class).getCarSensors();

OnCarDataAvailableListener<Compass> listener = (data) -> {
  if (data.getOrientations().getStatus() == CarValue.STATUS_SUCCESS) {
    List<Float> orientations = data.getOrientations().getValue();
  } else {
    // Data not available, handle error
  }
};

carSensors.addCompassListener(CarSensors.UPDATE_RATE_NORMAL, getCarContext().getMainExecutor(),
    listener);

// Unregister the listener when you no longer need updates
carSensors.removeCompassListener(listener);

Để truy cập vào dữ liệu vị trí từ ô tô, bạn cũng cần khai báo và yêu cầu quyền android.permission.ACCESS_FINE_LOCATION.

Kiểm tra

Để mô phỏng dữ liệu cảm biến khi kiểm thử trên Android Auto, hãy xem phần Cảm biếnCấu hình cảm biến trong hướng dẫn Đầu phát trung tâm trên máy tính. Để mô phỏng dữ liệu cảm biến khi kiểm thử trên Android Automotive OS, hãy tham khảo phần Mô phỏng trạng thái phần cứng trong hướng dẫn về trình mô phỏng Android Automotive OS.