ตั้งแต่ 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 |
| สถานะบัตรค่าผ่านทาง ประเภทบัตรค่าผ่านทาง | 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