حالة المراقبة، حالة المراقبة

تقوم مجموعة العدادات النموذجية بتحديث معلومات القيادة والمكالمات والوسائط كلما وردت بيانات جديدة. يوفر Android واجهة برمجة التطبيقات التالية لتمكين مجموعة العدادات الخاصة بشركة 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(...) .

لمزيد من التفاصيل، راجع: