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

החל מרמת API ‏3 של Car App, אפשר להשתמש בממשקי API של Car App Library כדי לגשת למאפיינים ולחיישנים של הרכב.

דרישות

כדי להשתמש בממשקי ה-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 ורושמים אותו:

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 API.

לדוגמה, כדי לבדוק את כיוון הנסיעה של הרכב:

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, אפשר לעיין בקטעים Sensors (חיישנים) וSensor configuration (הגדרת חיישנים) במדריך Desktop Head Unit (יחידה ראשית למחשב). כדי לדמות נתוני חיישנים כשבודקים ב-Android Automotive OS, אפשר לעיין במאמר הדמיה של מצב החומרה במדריך לאמולטור של Android Automotive OS.