החל מרמת API 3 של Car App, אפשר להשתמש בממשקי Car App Library API כדי לגשת למאפיינים ולחיישנים של הרכב.
דרישות
כדי להשתמש בממשקי ה-API עם Android Auto, צריך קודם להוסיף תלות ב-androidx.car.app:app-projected לקובץ build.gradle של מודול Android Auto. ב-Android Automotive OS, מוסיפים תלות ב-androidx.car.app:app-automotive לקובץ build.gradle של מודול Android Automotive OS.
בנוסף, בקובץ AndroidManifest.xml, אתם צריכים להצהיר על ההרשאות הרלוונטיות כדי לבקש את נתוני הרכב שבהם אתם רוצים להשתמש. המשתמש צריך גם להעניק לכם את ההרשאות האלה. אתם יכולים להשתמש באותו קוד ב-Android Auto וב-Android Automotive OS, במקום ליצור תהליכים שמותנים בפלטפורמה.
עם זאת, ההרשאות הנדרשות שונות.
CarInfo
בטבלה הזו מתוארים המאפיינים שזמינים בממשקי ה-API של 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
הנתונים זמינים רק בחלק מהרכבים עם AAOS מגרסה API 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 OS שהותקנו מ-Google Play. | 3 |
לדוגמה, כדי לקבל את הטווח שנותר, יוצרים מופע של אובייקט 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
הסיווג CarSensors מאפשר לכם לגשת לנתוני מד התאוצה, הג'ירוסקופ, המצפן והמיקום של הרכב. יכול להיות שהזמינות של הערכים האלה תהיה תלויה ביצרן הציוד המקורי (OEM). הפורמט של הנתונים ממד התאוצה, הג'ירוסקופ והמצפן זהה לפורמט שמתקבל מ-SensorManager API.
לדוגמה, כדי לבדוק את כיוון ביחס לצפון של הרכב:
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, אפשר לעיין בקטעים Sensors (חיישנים) וSensor configuration (הגדרת חיישנים) במדריך Desktop Head Unit (יחידה ראשית למחשב). כדי לדמות נתוני חיישנים כשבודקים ב-Android Automotive OS, אפשר לעיין במאמר בנושא הדמיה של מצב החומרה במדריך לאמולטור של Android Automotive OS.