แผงหน้าปัดโดยทั่วไปจะอัปเดตข้อมูลการขับขี่ การโทร และสื่อทุกครั้งที่มีข้อมูลใหม่เข้ามา Android มี API ต่อไปนี้เพื่อช่วยให้แผงหน้าปัดของ OEM สามารถรับสถานะล่าสุดได้อย่างง่ายดาย
สถานะการขับขี่
กิจกรรมทิศทางการขับขี่จะถูกส่งไปในขณะที่การนำทางดำเนินไป packages/services/Car/car-lib/src/android/car/cluster/renderer/NavigationRenderer.java
มีเมธอดที่เป็นนามธรรมสำหรับตัวเรนเดอร์แอปการนำทางในแผงหน้าปัด
ใน InstrumentClusterRenderingService
แบบขยาย วิธีการเหล่านี้มีดังต่อไปนี้:
public class MyClusterRenderingService extends InstrumentClusterRenderingService { ... @Override protected NavigationRenderer getNavigationRenderer() { return new NavigationRenderer() { @Override CarNavigationInstrumentCluster getNavigationProperties() {...} @Override void onStartNavigation() {...} @Override void onStopNavigation() {...} @Override void onNextTurnChanged(int event, String road, int turnAngle, int turnNumber, Bitmap image, int turnSide) {...} @Override void onNextTurnDistanceChanged(int distanceMeters, int timeSeconds) {...} }; } }
คุณสามารถเพิ่มการกระทำแบบกำหนดเอง (เช่น การเรนเดอร์) ให้กับวิธีการเหล่านี้เพื่อแสดงข้อมูลที่ต้องการ
สถานะการโทร
หากต้องการตรวจสอบสถานะการโทร ให้ใช้ขั้นตอนต่อไปนี้:
- ขยาย
android.telecom.InCallService
public class ClusterInCallService extends InCallService { ...
- ลงทะเบียนบริการใน
AndroidManifest.xml
<service android:name="com.android.car.cluster.sample.ClusterInCallService" android:permission="android.permission.BIND_INCALL_SERVICE" android:exported="false">
- แทนที่ onCallAdded และ onCallRemoved
public void onCallAdded(Call call) { ... call.registerCallback(mPhoneCallback); mPhoneCallback.onStateChanged(call, call.getState()); } public void onCallRemoved(Call call) { ... call.unregisterCallback(mPhoneCallback); }
- ลงทะเบียนการโทรกลับเพื่อรับเหตุการณ์การเปลี่ยนแปลงสถานะการโทร (
Call#registerCallback
)private static class PhoneCallback extends Callback { ... public void onStateChanged(Call call, int state) {...} }
- ใช้ผู้ให้บริการเนื้อหาเพื่อดึงข้อมูลการติดต่อ:
ContactsContract.PhoneLookup, ContactsContract.Contacts#openContactPhotoInputStream
)
สำหรับโค้ดตัวอย่างการตรวจสอบสถานะการโทร โปรดดูที่:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/ClusterInCallService.java
สำหรับโค้ดตัวอย่างผู้ให้บริการเนื้อหา โปรดดูที่:
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/TelecomUtils.java
สถานะสื่อ
คุณสามารถกำหนดค่าระบบให้อัปเดตสถานะสื่อเมื่อได้รับเหตุการณ์ที่เกี่ยวข้องกับการเปลี่ยนแปลงใน MediaMetadata (เช่น อัลบั้มหรือชื่อเพลง หรือภาพหน้าปก) หรือสถานะการเล่น (บัฟเฟอร์ หยุดชั่วคราว เล่น และหยุด) หากต้องการอัพเดตสถานะสื่อ:
- ใช้
MediaSessionManager
และรับตัวควบคุมหลัก (#getActiveSessions(null)[0]
) - ลงทะเบียนการโทรกลับ (
MediaController#Callback
) - สมัครสมาชิกเมื่อมีการเปลี่ยนแปลงเซสชันที่ใช้งานอยู่
MediaSessionManager#addOnActiveSessionsChangedListener(...)
สำหรับรายละเอียด โปรดดู:
-
packages/services/Car/+/android-8.1.0_r9/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/MediaStateMonitor.java
-
packages/services/Car/tests/InstrumentClusterRendererSample/src/com/android/car/cluster/sample/InstrumentClusterController.java