สถานะการตรวจสอบสถานะการตรวจสอบ

แผงหน้าปัดโดยทั่วไปจะอัปเดตข้อมูลการขับขี่ การโทร และสื่อทุกครั้งที่มีข้อมูลใหม่เข้ามา 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) {...}
        };
    }
}

คุณสามารถเพิ่มการกระทำแบบกำหนดเอง (เช่น การเรนเดอร์) ให้กับวิธีการเหล่านี้เพื่อแสดงข้อมูลที่ต้องการ

สถานะการโทร

หากต้องการตรวจสอบสถานะการโทร ให้ใช้ขั้นตอนต่อไปนี้:

  1. ขยาย android.telecom.InCallService
    public class ClusterInCallService extends InCallService {
    ...
    
  2. ลงทะเบียนบริการใน AndroidManifest.xml
    <service android:name="com.android.car.cluster.sample.ClusterInCallService"
        android:permission="android.permission.BIND_INCALL_SERVICE"
        android:exported="false">
    
  3. แทนที่ onCallAdded และ onCallRemoved
    public void onCallAdded(Call call) {
        ...
        call.registerCallback(mPhoneCallback);
        mPhoneCallback.onStateChanged(call, call.getState());
    }
    public void onCallRemoved(Call call) {
        ...
        call.unregisterCallback(mPhoneCallback);
    }
    
  4. ลงทะเบียนการโทรกลับเพื่อรับเหตุการณ์การเปลี่ยนแปลงสถานะการโทร ( Call#registerCallback )
    private static class PhoneCallback extends Callback {
        ...
        public void onStateChanged(Call call, int state) {...}
    }
    
  5. ใช้ผู้ให้บริการเนื้อหาเพื่อดึงข้อมูลการติดต่อ:
    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 (เช่น อัลบั้มหรือชื่อเพลง หรือภาพหน้าปก) หรือสถานะการเล่น (บัฟเฟอร์ หยุดชั่วคราว เล่น และหยุด) หากต้องการอัพเดตสถานะสื่อ:

  1. ใช้ MediaSessionManager และรับตัวควบคุมหลัก ( #getActiveSessions(null)[0] )
  2. ลงทะเบียนการโทรกลับ ( MediaController#Callback )
  3. สมัครสมาชิกเมื่อมีการเปลี่ยนแปลงเซสชันที่ใช้งานอยู่ MediaSessionManager#addOnActiveSessionsChangedListener(...)

สำหรับรายละเอียด โปรดดู: