Otomobil Donanım API'leri

Car App API düzeyi 3'ten itibaren, araç özelliklerine ve sensörlerine erişmek için Car App Library API'lerini kullanabilirsiniz.

Şartlar

API'leri Android Auto ile kullanmak için öncelikle Android Auto modülünüzün build.gradle dosyasına androidx.car.app:app-projected bağımlılığı ekleyin. Android Automotive OS için Android Automotive OS modülünüzün build.gradle dosyasına androidx.car.app:app-automotive bağımlılığı ekleyin.

Ayrıca, AndroidManifest.xml dosyanızda, kullanmak istediğiniz araç verilerini istemek için gereken ilgili izinleri beyan etmeniz gerekir. Bu izinler, kullanıcı tarafından da verilmelidir. Platforma bağlı akışlar oluşturmak yerine Android Auto ve Android Automotive OS'te aynı kodu kullanabilirsiniz. Ancak, gereken izinler farklıdır.

CarInfo

Bu tabloda, CarInfo API'lerinde sağlanan özellikler ve bunları kullanmak için istemeniz gereken izinler açıklanmaktadır.

Yöntemler Özellikler İzinler:
Android Auto
İzinler:
AAOS
Car App API
fetchModel Marka, model, yıl android.car.permission.CAR_INFO 3
fetchEnergyProfile Elektrikli araç konnektör türleri, yakıt türleri com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO 3
fetchExteriorDimensions

Veriler yalnızca API 30 veya sonraki sürümleri çalıştıran bazı AAOS araçlarında kullanılabilir.

Dış boyutlar Yok android.car.permission.CAR_INFO 7

addTollListener

removeTollListener

Ücret kartı durumu, ücret kartı türü 3

addEnergyLevelListener

removeEnergyLevelListener

Pil seviyesi, yakıt seviyesi, düşük yakıt seviyesi, kalan mesafe 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

Gerçek hız, gösterge hızı (aracın gösterge ekranında gösterilir) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

Kilometre sayacı mesafesi com.google.android.gms.permission.CAR_MILEAGE Google Play'den yüklenen Android Automotive OS uygulamalarında veriler kullanılamaz. 3

Örneğin, kalan aralığı almak için bir CarInfo nesnesi oluşturun, ardından bir OnCarDataAvailableListener oluşturup kaydedin:

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

Aracın verilerinin her zaman kullanılabileceğini varsaymayın. Hata alırsanız istediğiniz değerin durumunu kontrol ederek istediğiniz verilerin neden alınamadığını daha iyi anlayabilirsiniz. CarInfo Sınıf tanımı hakkında daha fazla bilgi edinmek için referans belgelerine bakın.

CarSensors

CarSensors sınıfı, aracın ivme ölçer, jiroskop, pusula ve konum verilerine erişmenizi sağlar. Bu değerlerin kullanılabilirliği OEM'ye bağlı olabilir. İvme ölçer, jiroskop ve pusuladan alınan verilerin biçimi, SensorManager API'den aldığınız verilerin biçimiyle aynıdır.

Örneğin, aracın yönünü kontrol etmek için:

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

Aracın konum verilerine erişmek için android.permission.ACCESS_FINE_LOCATION iznini de bildirmeniz ve istemeniz gerekir.

Test

Android Auto'da test yaparken sensör verilerini simüle etmek için Masaüstü Ana Birim kılavuzunun Sensörler ve Sensör yapılandırması bölümlerine bakın. Android Automotive OS'te test yaparken sensör verilerini simüle etmek için Android Automotive OS Emulator Kılavuzu'ndaki Donanım durumunu taklit etme bölümüne bakın.