ממשקי API לחומרה של רכב

החל מרמת 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

addTollListener

removeTollListener

מצב כרטיס האגרה, סוג כרטיס האגרה 3

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
3

addSpeedListener

removeSpeedListener

מהירות בפועל, מהירות שמוצגת (בצג לוח המחוונים של המכונית) com.google.android.gms.permission.CAR_SPEED android.car.permission.CAR_SPEED

android.car.permission.READ_CAR_DISPLAY_UNITS
3

addMileageListener

removeMileageListener

מרחק במד המרחק 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.