API ฮาร์ดแวร์รถยนต์

เมื่อใช้ Car App API ระดับ API 3 ขึ้นไป คุณจะใช้ Car App Library API เพื่อเข้าถึงพร็อพเพอร์ตี้และเซ็นเซอร์ของยานพาหนะได้

ข้อกำหนด

หากต้องการใช้ API กับ Android Auto ให้เริ่มด้วยการเพิ่มทรัพยากร Dependency androidx.car.app:app-projected ลงในไฟล์ build.gradle ของโมดูล Android Auto สำหรับ Android Automotive OS ให้เพิ่มการพึ่งพา androidx.car.app:app-automotive ลงในไฟล์ build.gradle ของโมดูล Android Automotive OS

นอกจากนี้ คุณยังต้องประกาศสิทธิ์ที่เกี่ยวข้องซึ่งจำเป็นต่อการขอข้อมูลรถยนต์ที่ต้องการใช้ในไฟล์ AndroidManifest.xml และผู้ใช้ต้องให้สิทธิ์เหล่านี้ แก่คุณด้วยgranted คุณสามารถใช้ โค้ดเดียวกันใน Android Auto และ Android Automotive OS แทนการ สร้างโฟลว์ที่ขึ้นอยู่กับแพลตฟอร์ม อย่างไรก็ตาม สิทธิ์ที่จำเป็นจะแตกต่างกัน

CarInfo

ตารางนี้อธิบายพร็อพเพอร์ตี้ที่ระบุไว้ใน CarInfo API และ สิทธิ์ที่คุณต้องขอเพื่อใช้พร็อพเพอร์ตี้เหล่านั้น

เมธอด พร็อพเพอร์ตี้ สิทธิ์:
Android Auto
สิทธิ์:
AAOS
Car App API
fetchModel ยี่ห้อ รุ่น ปี android.car.permission.CAR_INFO 3
fetchEnergyProfile ประเภทหัวชาร์จไฟฟ้า EV, ประเภทเชื้อเพลิง 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 ช่วยให้คุณเข้าถึงข้อมูลตัวตรวจวัดความเร่ง เครื่องวัดการหมุน เข็มทิศ และข้อมูลตำแหน่งของยานพาหนะได้ ความพร้อมใช้งานของค่าเหล่านี้อาจขึ้นอยู่กับ OEM รูปแบบข้อมูลจากตัวตรวจวัดความเร่ง เครื่องวัดการหมุน และเข็มทิศจะเหมือนกับที่คุณได้รับจาก 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 โปรดดูส่วน เซ็นเซอร์ และ การกำหนดค่าเซ็นเซอร์ของคู่มือ Desktop Head Unit หากต้องการจำลองข้อมูลเซ็นเซอร์เมื่อทดสอบใน Android Automotive OS โปรดดู จำลองสถานะฮาร์ดแวร์ในคู่มือโปรแกรมจำลอง Android Automotive OS