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 เพื่อขอข้อมูลรถยนต์ที่ต้องการใช้ และผู้ใช้ต้องให้สิทธิ์เหล่านี้แก่คุณด้วย grant คุณสามารถใช้โค้ดเดียวกันใน 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