צג מצב, מעקב אחר מצב

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

סטטוס מדיה

אתה יכול להגדיר את המערכת לעדכן את סטטוס המדיה כאשר היא מקבלת אירועים הקשורים לשינוי ב-Medadata (כגון כותרת האלבום או השיר או תמונת השער) או מצב השמעה (חציצה, השהייה, הפעלה ועצירה). כדי לעדכן את סטטוס המדיה:

  1. השתמש MediaSessionManager וקבל את הבקר הראשי ( #getActiveSessions(null)[0] ).
  2. רישום התקשרויות חוזרות ( MediaController#Callback ).
  3. הירשם להפעלה פעילה השתנה MediaSessionManager#addOnActiveSessionsChangedListener(...) .

לפרטים, ראה: