بدءًا من المستوى 3 من Car App API، يمكنك استخدام واجهات برمجة التطبيقات في Car App Library للوصول إلى خصائص المركبة وأجهزة الاستشعار.
المتطلبات
لاستخدام واجهات برمجة التطبيقات مع 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، بدلاً من إنشاء مسارات تعتمد على النظام الأساسي. ومع ذلك، تختلف الأذونات المطلوبة.
CarInfo
يوضّح هذا الجدول الخصائص المتوفّرة في واجهات برمجة التطبيقات CarInfo والأذونات التي يجب طلبها لاستخدامها.
| الطرق | الخصائص | الأذونات: Android Auto |
الأذونات: AAOS |
Car App API |
|---|---|---|---|---|
fetchModel |
الصنع والطراز وسنة الصنع | android.car.permission.CAR_INFO |
3 | |
fetchEnergyProfile |
أنواع وصلات المركبات الكهربائية وأنواع الوقود | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_INFO |
3 |
fetchExteriorDimensions
تتوفّر البيانات فقط على بعض المركبات التي تعمل بنظام التشغيل Android Automotive OS (AAOS) الذي يتضمّن المستوى 30 من واجهة برمجة التطبيقات أو إصدارًا أحدث. |
الأبعاد الخارجية | لا ينطبق | android.car.permission.CAR_INFO |
7 |
| حالة بطاقة تحصيل رسوم العبور ونوعها | 3 | |||
| مستوى شحن البطارية، ومستوى الوقود، ومستوى الوقود منخفض، والمسافة المتبقية | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| السرعة الأولية، وسرعة العرض (المعروضة على شاشة مجموعة العدادات في السيارة) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| مسافة عدّاد المسافات | com.google.android.gms.permission.CAR_MILEAGE |
البيانات غير متاحة لتطبيقات "نظام التشغيل Android Automotive" المثبَّتة من Google Play. | 3 |
على سبيل المثال، للحصول على النطاق المتبقي، أنشئ مثيلاً لكائن CarInfo، ثم أنشئ 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);
لا تفترض أنّ البيانات من السيارة متاحة في جميع الأوقات. في حال ظهور خطأ، تحقَّق من حالة القيمة التي طلبتها لمعرفة سبب عدم إمكانية استرداد البيانات التي طلبتها. لمزيد من المعلومات حول تعريف فئة CarInfo
، يُرجى الاطّلاع على المستندات المرجعية.
CarSensors
تتيح لك الفئة CarSensors الوصول إلى بيانات مقياس التسارع والجيروسكوب والبوصلة والموقع الجغرافي للمركبة. وقد يعتمد مدى توفّر هذه القيم على الشركة المصنّعة للجهاز الأصلي. يكون تنسيق البيانات الواردة من مقياس التسارع والجيروسكوب
والبوصلة هو نفسه التنسيق الذي تحصل عليه من واجهة برمجة التطبيقات SensorManager.
على سبيل المثال، للتحقّق من اتجاه المركبة:
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);
للوصول إلى بيانات الموقع الجغرافي من السيارة، عليك أيضًا الإفصاح عن إذن android.permission.ACCESS_FINE_LOCATION وطلبه.
الاختبار
لمحاكاة بيانات المستشعر عند الاختبار على Android Auto، راجِع قسمَي أجهزة الاستشعار وإعدادات أجهزة الاستشعار في دليل "وحدة الرأس للكمبيوتر المكتبي". لمحاكاة بيانات المستشعر عند الاختبار على نظام التشغيل Android Automotive، يُرجى الرجوع إلى محاكاة حالة الأجهزة في دليل محاكي نظام التشغيل Android Automotive.