אשכול מכשירים טיפוסי מעדכן מידע לגבי מקורות, שיחות ומדיה בכל פעם שיש נתונים חדשים מגיע. ב-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">
- ביטול של onCall added ו-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