เมื่อใช้ 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 |
| สถานะบัตรค่าผ่านทาง, ประเภทบัตรค่าผ่านทาง | 3 | |||
| ระดับแบตเตอรี่, ระดับเชื้อเพลิง, ระดับเชื้อเพลิงต่ำ, ระยะทางที่เหลือ | com.google.android.gms.permission.CAR_FUEL |
android.car.permission.CAR_ENERGYandroid.car.permission.CAR_ENERGY_PORTSandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| ความเร็วจริง, ความเร็วที่แสดง (แสดงบนจอแผงหน้าปัดของรถ) | com.google.android.gms.permission.CAR_SPEED |
android.car.permission.CAR_SPEEDandroid.car.permission.READ_CAR_DISPLAY_UNITS
|
3 | |
| ระยะทางที่วัดโดยเครื่องวัดระยะทาง | 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