API های سخت افزار خودرو

با شروع از API سطح ۳ اپلیکیشن خودرو، می‌توانید از APIهای کتابخانه اپلیکیشن خودرو برای دسترسی به مشخصات و حسگرهای خودرو استفاده کنید.

الزامات

برای استفاده از APIها با Android Auto، با اضافه کردن یک وابستگی به androidx.car.app:app-projected به فایل build.gradle ماژول Android Auto خود شروع کنید. برای سیستم عامل Android Automotive، یک وابستگی به androidx.car.app:app-automotive به فایل build.gradle ماژول Android Automotive OS خود اضافه کنید.

علاوه بر این، در فایل AndroidManifest.xml خود، باید مجوزهای مربوطه مورد نیاز برای درخواست داده‌های خودرو مورد نظر خود را اعلام کنید . این مجوزها همچنین باید توسط کاربر به شما اعطا شوند. می‌توانید از همان کد در Android Auto و Android Automotive OS استفاده کنید، به جای اینکه جریان‌های وابسته به پلتفرم ایجاد کنید. با این حال، مجوزهای مورد نیاز متفاوت هستند.

اطلاعات خودرو

این جدول ویژگی‌های ارائه شده در APIهای CarInfo و مجوزهایی که برای استفاده از آنها باید درخواست کنید را شرح می‌دهد.

روش‌ها خواص مجوزها:
اندروید اتو
مجوزها:
AAOS
API اپلیکیشن خودرو
fetchModel ساخت، مدل، سال android.car.permission.CAR_INFO ۳
fetchEnergyProfile انواع کانکتور خودروهای برقی، انواع سوخت com.google.android.gms.permission.CAR_FUEL android.car.permission.CAR_INFO ۳
fetchExteriorDimensions

داده‌ها فقط در مورد برخی از خودروهای AAOS که از API 30 یا بالاتر استفاده می‌کنند، موجود است.

ابعاد بیرونی ناموجود android.car.permission.CAR_INFO ۷

addTollListener

removeTollListener

وضعیت کارت عوارض، نوع کارت عوارض ۳

addEnergyLevelListener

removeEnergyLevelListener

سطح باتری، سطح سوخت، سطح سوخت پایین، برد مسافت باقی مانده 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
۳

addSpeedListener

removeSpeedListener

سرعت خام، سرعت نمایش داده شده (روی صفحه نمایش خوشه ای خودرو نشان داده شده است) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
۳

addMileageListener

removeMileageListener

فاصله کیلومترشمار com.google.android.gms.permission.CAR_MILEAGE داده‌ها برای برنامه‌های سیستم عامل اندروید اتوموبیل که از گوگل پلی نصب شده‌اند، در دسترس نیست. ۳

برای مثال، برای دریافت محدوده باقی‌مانده، یک شیء CarInfo نمونه‌سازی کنید، سپس یک OnCarDataAvailableListener ایجاد و ثبت کنید:

کاتلین

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)

جاوا

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

فرض نکنید که داده‌های ماشین همیشه در دسترس هستند. اگر با خطایی مواجه شدید، وضعیت مقداری که درخواست کرده‌اید را بررسی کنید تا بهتر بفهمید چرا داده‌های درخواستی شما قابل بازیابی نیستند. برای کسب اطلاعات بیشتر در مورد تعریف کلاس CarInfo ، به مستندات مرجع مراجعه کنید.

سنسورهای خودرو

کلاس CarSensors به ​​شما امکان دسترسی به داده‌های شتاب‌سنج، ژیروسکوپ، قطب‌نما و موقعیت مکانی خودرو را می‌دهد. در دسترس بودن این مقادیر ممکن است به سازنده اصلی (OEM) بستگی داشته باشد. قالب داده‌های شتاب‌سنج، ژیروسکوپ و قطب‌نما همان قالبی است که از API SensorManager دریافت می‌کنید.

برای مثال، برای بررسی جهت حرکت خودرو:

کاتلین

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)

جاوا

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

برای دسترسی به داده‌های موقعیت مکانی از طریق خودرو، باید مجوز android.permission.ACCESS_FINE_LOCATION را نیز اعلام و درخواست کنید.

تست

برای شبیه‌سازی داده‌های حسگر هنگام آزمایش در Android Auto، به بخش‌های حسگرها و پیکربندی حسگر در راهنمای واحد هد دسکتاپ مراجعه کنید. برای شبیه‌سازی داده‌های حسگر هنگام آزمایش در سیستم عامل Android Automotive، به بخش شبیه‌سازی وضعیت سخت‌افزار در راهنمای شبیه‌ساز Android Automotive OS مراجعه کنید.