با شروع از 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 | ۷ |
| وضعیت کارت عوارض، نوع کارت عوارض | ۳ | |||
| سطح باتری، سطح سوخت، سطح سوخت پایین، برد مسافت باقی مانده | com.google.android.gms.permission.CAR_FUEL | android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS | ۳ | |
| سرعت خام، سرعت نمایش داده شده (روی صفحه نمایش خوشه ای خودرو نشان داده شده است) | com.google.android.gms.permission.CAR_SPEED | android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS | ۳ | |
| فاصله کیلومترشمار | 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 ، به مستندات مرجع مراجعه کنید.
سنسورهای خودرو
کلاس 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)
برای دسترسی به دادههای موقعیت مکانی از طریق خودرو، باید مجوز android.permission.ACCESS_FINE_LOCATION را نیز اعلام و درخواست کنید.
تست
برای شبیهسازی دادههای حسگر هنگام آزمایش در Android Auto، به بخشهای حسگرها و پیکربندی حسگر در راهنمای واحد هد دسکتاپ مراجعه کنید. برای شبیهسازی دادههای حسگر هنگام آزمایش در سیستم عامل Android Automotive، به بخش شبیهسازی وضعیت سختافزار در راهنمای شبیهساز Android Automotive OS مراجعه کنید.