وضعیت مانیتور، وضعیت مانیتور

یک دسته ابزار معمولی هر زمان که داده های جدیدی وارد می شود، اطلاعات رانندگی، تماس و رسانه را به روز می کند. 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) {...}
        };
    }
}

برای نمایش اطلاعات مورد نظر می توانید اقدامات سفارشی (مانند رندر) را به این روش ها اضافه کنید.

وضعیت تماس

برای نظارت بر وضعیت تماس، از مراحل زیر استفاده کنید:

  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(...) .

برای جزئیات، نگاه کنید به: