تعمل مجموعة العدادات القياسية على تعديل معلومات القيادة والمكالمات والوسائط عند ورود بيانات جديدة. يوفّر Android واجهة برمجة التطبيقات التالية لتتمكّن مجموعة العدادات في السيارة من تلقّي الحالة المحدّثة بسهولة.
حالة القيادة
يتم إرسال أحداث اتجاه القيادة أثناء التنقّل. يحتوي الملف
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(...)
.
لمعرفة التفاصيل، راجع: