API Hardware Mobil

Mulai dari level API Aplikasi Mobil 3, Anda dapat menggunakan API Library Aplikasi Mobil untuk mengakses sensor dan properti kendaraan.

Persyaratan

Untuk menggunakan API dengan Android Auto, mulailah dengan menambahkan dependensi pada androidx.car.app:app-projected ke file build.gradle untuk modul Android Auto Anda. Untuk Android Automotive OS, tambahkan dependensi pada androidx.car.app:app-automotive ke file build.gradle untuk modul Android Automotive OS Anda.

Selain itu, dalam file AndroidManifest.xml, Anda harus mendeklarasikan izin yang relevan yang diperlukan untuk meminta data mobil yang ingin Anda gunakan. Izin ini juga harus diberikan kepada Anda oleh pengguna. Anda dapat menggunakan kode yang sama di Android Auto dan Android Automotive OS, daripada membuat alur yang bergantung pada platform. Namun, izin yang diperlukan berbeda.

CarInfo

Tabel ini menjelaskan properti yang disediakan di API CarInfo dan izin yang harus Anda minta untuk menggunakannya.

Metode Properti Izin:
Android Auto
Izin:
AAOS
Car App API
fetchModel Merek, model, tahun android.car.permission.CAR_INFO 3
fetchEnergyProfile Jenis konektor EV, jenis bahan bakar com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Data hanya tersedia di beberapa kendaraan AAOS yang menjalankan API 30 atau yang lebih baru.

Dimensi eksterior T/A android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

Status kartu tol, jenis kartu tol 3

addEnergyLevelListener

removeEnergyLevelListener

Tingkat daya baterai, tingkat bahan bakar, tingkat bahan bakar rendah, jarak yang tersisa 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

Kecepatan mentah, kecepatan tampilan (ditampilkan di layar cluster mobil) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Jarak odometer com.google.android.gms.permission.CAR_MILEAGE Data tidak tersedia untuk aplikasi Android Automotive OS yang diinstal dari Google Play. 3

Misalnya, untuk mendapatkan rentang yang tersisa, buat instance objek CarInfo, lalu buat dan daftarkan 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);

Jangan berasumsi bahwa data dari mobil tersedia setiap saat. Jika Anda mendapatkan error, periksastatus nilai yang Anda minta untuk lebih memahami alasan data yang Anda minta tidak dapat diambil. Untuk mempelajari lebih lanjut definisi class CarInfo, lihat dokumentasi referensi.

CarSensors

Class CarSensors memberi Anda akses ke data akselerometer, giroskop, kompas, dan lokasi kendaraan. Ketersediaan nilai ini dapat bergantung pada OEM. Format data dari akselerometer, giroskop, dan kompas sama dengan yang Anda dapatkan dari SensorManager API.

Misalnya, untuk memeriksa arah kendaraan:

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);

Untuk mengakses data lokasi dari mobil, Anda juga perlu mendeklarasikan dan meminta izin android.permission.ACCESS_FINE_LOCATION.

Uji

Untuk menyimulasikan data sensor saat menguji di Android Auto, lihat bagian Sensor dan Konfigurasi sensor dalam panduan Desktop Head Unit. Untuk menyimulasikan data sensor saat menguji di Android Automotive OS, lihat Menyimulasikan status hardware dalam panduan emulator Android Automotive OS.