מעקב אחר הסטטוס

בדרך כלל, אשכול המכשירים מעדכן את המידע על הנהיגה, השיחות והמדיה בכל פעם שמגיעים נתונים חדשים. Android מספק את ה-API הבא כדי לאפשר לרכז המכשירים של יצרן ציוד מקורי לקבל סטטוס עדכני בקלות.

סטטוס הנהיגה

אירועים של מסלול נסיעה נשלחים בזמן הניווט. הקובץ 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. רישום קריאות חוזרות (callbacks) כדי לקבל אירועים של שינוי סטטוס שיחה (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. נרשמים לקבלת עדכונים על אירוע on active session changed MediaSessionManager#addOnActiveSessionsChangedListener(...).

לקבלת פרטים, ראה: