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

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

ข้อกำหนด

หากต้องการใช้ API กับ Android Auto ให้เริ่มด้วยการเพิ่มการอ้างอิงใน androidx.car.app:app-projected ไปยังไฟล์ build.gradle สำหรับโมดูล Android Auto สำหรับ Android Automotive OS ให้เพิ่มทรัพยากร Dependency ใน 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 ประเภทหัวเสียบชาร์จไฟ 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