خدمة المكوّن الإضافي للصوت في السيارة

تتيح خدمات المكوّنات الإضافية الجديدة من مصنّعي المعدات الأصلية للسيارات في Android 14 إمكانية ضبط بعض مكوّنات السيارة. في ما يتعلق بالصوت تحديدًا، تم تقديم ثلاث خدمات إضافية جديدة تتيح لمصنّعي المعدات الأصلية إمكانية ضبط إدارة الصوت بمرونة على أجهزة AAOS:

  • التحكّم في التركيز على الصوت
  • التحكّم في مستوى الصوت وكتمه
  • عنصر التحكّم في ميزة "تجنُّب التداخل مع أصوات أخرى"

بنية خدمة إضافات السيارات

يوضّح الشكل أدناه نظرة عامة على خدمات السيارات وعلاقتها بخدمة السيارات المقدَّمة من الشركة المصنّعة للمعدات الأصلية. على غرار عمليات التطبيقات وعملية خدمة السيارة، تشغل عملية خدمة السيارة الخاصة بمصنّع المعدات الأصلية مساحة عملية خاصة بها.

الصورة

تبدأ خدمة السيارة خدمة السيارة التابعة للمصنّع الأصلي للجهاز من خلال العثور على المكوّن المحدّد في config_oemCarService. إذا كانت الإعدادات فارغة، فهذا يعني أنّ خدمة المصنّع الأصلي للجهاز غير متوفّرة ولن يتم بدء أي خدمة. يجب أن يوسّع المكوّن OemCarService. يجب أن تستبدل خدمة الصوت في السيارة واجهات برمجة التطبيقات الخاصة بالحصول على خدمة الصوت الأصلية في السيارة:

public final class OemCarServiceImp extends OemCarService {
    @Override
    public OemCarAudioFocusService getOemAudioFocusService();

    @Override
    public OemCarAudioDuckingService getOemAudioDuckingService();

    @Override
    public OemCarAudioVolumeService getOemAudioVolumeService();
}

للاطّلاع على مثال، راجِع تطبيق الاختبار المرجعي المحدّد في packages/services/Car/tests/OemCarServiceTestApp.

على الرغم من أنّ خدمة السيارة تبدأ الخدمة، إلا أنّها لا ترث تلقائيًا الأذونات المتاحة لخدمة الصوت في السيارة. وبالتالي، يجب الحصول على أي إذن تتطلّبه خدمات الشركة المصنّعة للمعدات الأصلية من خلال الآلية المناسبة. على سبيل المثال، اطّلِع على packages/services/Car/data/etc/com.android.car.oemcarservice.testapp.xml.

خدمة صوت السيارة مع بنية خدمة المصنّع الأصلي للمعدات

في AAOS، تدير خدمة الصوت في السيارة الإجراءات التالية:

  • توجيه الصوت
  • التركيز على الصوت
  • تجنب التداخل مع أصوات أخرى
  • مستوى الصوت وكتمه

قبل الإصدار 14 من نظام التشغيل Android، كان هذا السلوك ثابتًا إلى حد كبير، ولم يكن من الممكن تعديله إلا من خلال الإعدادات، ولكن في مجموعة محدودة جدًا من الحالات. قدّم نظام التشغيل Android 14 آلية تتيح لخدمة الصوت في السيارة التواصل مع أحد المكوّنات التي يحدّدها المصنّع الأصلي للجهاز، والتي تتولّى إدارة ما يلي:

  • التركيز على الصوت
  • تجنب التداخل مع أصوات أخرى
  • مستوى الصوت وكتمه

يوضّح الشكل أدناه بنية مبسطة لخدمة الصوت في السيارة وخدمة مصنّع المعدات الأصلية للسيارة. تحدّد خدمة الصوت في السيارة نقاط ربط مختلفة يمكنها استدعاء خدمة الصوت التي يوفّرها مصنّع السيارة الأصلي لإدارة سلوك الصوت. ولا يحدث ذلك إلا إذا تم تحديد المكوّن المقابل لخدمة الصوت في السيارة التابعة لمصنّع أصلي للجهاز. وفي ما عدا ذلك، تستخدم خدمة الصوت في السيارة السلوك التلقائي.

الصورة

لضمان أن تكون خدمة الصوت في السيارة وخدمة الصوت من مصنّع المعدات الأصلية للسيارة متزامنتَين دائمًا، تمرِّر خدمة الصوت في السيارة الأجزاء المطلوبة من حالة حزمة الصوت الحالية إلى خدمة الصوت من مصنّع المعدات الأصلية للسيارة في كل مكالمة. على سبيل المثال، عندما تعترض خدمة الصوت في السيارة طلبًا لتقييم تركيز الصوت، فإنّها تمرّر الحالة الحالية للحزمة إلى خدمة الصوت الخاصة بمصنّع المعدات الأصلية للسيارة. تتضمّن الحالة الحالية العنصر الذي يتم التركيز عليه حاليًا والعناصر التي تم فقدان التركيز عليها. الطلبات التي تفقد التركيز هي طلبات تركيز لا تزال جزءًا من الحزمة ولكنها فقدت التركيز مؤقتًا.

يجب أن تدير خدمة الصوت في السيارة جميع أنشطة الصوت في السيارة. إذا كانت خدمة الصوت في السيارة لا تدير بعض أجزاء سلوك الصوت، ستكون المعلومات المتاحة لخدمة الصوت من الشركة المصنّعة للسيارة غير مكتملة. على سبيل المثال، إذا ألغى مصنّع المعدات الأصلية معالجة التركيز الصوتي في خدمة السيارة من خلال تسجيل سياسة التركيز الصوتي الخاصة به، لن تتمكّن خدمة الصوت في السيارة من تقديم معلومات كاملة إلى خدمة الصوت الخاصة بمصنّع المعدات الأصلية في السيارة. ويمكن أن يؤثّر ذلك في قدرة خدمة الصوت الخاصة بمصنّع المعدات الأصلية للسيارة على اتّخاذ القرارات، لأنّها قد تفتقر إلى المعلومات غير المرئية لخدمة الصوت في السيارة.

لاتّخاذ إجراءات، تستدعي خدمة الصوت في السيارة خدمات السيارة التابعة لمصنّع المعدات الأصلية. يتم إجراء هذه الطلبات بين العمليات، ما يتطلّب تواصلاً بين العمليات (IPC). تؤدي عملية الاتصال بين العمليات إلى إضافة وقت استجابة إلى كل مكالمة. من المهم تقليل وقت الاستجابة في خدمة OEM.

بما أنّ مكالمات خدمة الصوت في السيارة إلى خدمة الشركة المصنّعة الأصلية تحظر، يجب ألا تستدعي خدمة الشركة المصنّعة الأصلية خدمة الصوت في السيارة عند إجراء تقييمات مباشرة لواجهة برمجة التطبيقات. بدلاً من ذلك، تقدّم خدمة الصوت في السيارة المعلومات اللازمة حتى لا تحتاج المكالمات بين العمليتين إلى الانتقال إلا في اتجاه واحد.

تعريفات خدمة الصوت في السيارة من المصنّع الأصلي للجهاز

خدمة أولويّة الصوت في السيارة من المصنّع الأصلي للجهاز

تتولّى خدمة الصوت في السيارة إدارة طلبات التركيز على الصوت من التطبيقات من خلال تسجيل أداة معالجة تركيز سياسة الصوت. تتضمّن خدمة الصوت في السيارة آلية لإدارة سلوك التركيز استنادًا إلى مصفوفة تفاعلية ثابتة. تحدّد المصفوفة ثلاثة أنواع مختلفة من التفاعلات:

  • التفاعل المتزامن: يمكن لحاملي التركيز الحفاظ على التركيز في الوقت نفسه.

  • التفاعلات الحصرية: يؤدي طلب التركيز الوارد إلى إزالة التركيز من العنصر الذي يتم التركيز عليه حاليًا.

  • رفض التفاعل: تم رفض طلب التركيز الوارد استنادًا إلى حامل التركيز الحالي.

على الرغم من أنّ هذا يكفي لبعض حالات استخدام السيارات، إلا أنّه لا يلبي جميع احتياجات التفاعل التي قد تختلف بسبب متطلبات الشركة المصنّعة للمعدات الأصلية. لهذا السبب، نقدّم OemCarAudioFocusService:

public interface OEmCarAudioFocusService {
    OemCarAuddioFocusResults evaluateAudioFocusRequest(
        OemCarAudioFocusEvaluationRequest request);
    
    void notifyAudioFocusChange(
        List<AudioFocusEntry> holder,
        List<AudioFocusEntry> losers, int zoneId);
}

يتم استدعاء واجهة برمجة التطبيقات evaluateAudioFocusRequest من خدمة الصوت في السيارة في أي وقت يتم فيه طلب الحصول على تركيز الصوت الذي يجب تقييمه، وهي واجهة برمجة تطبيقات ثنائية الاتجاه تحظر النتائج إلى أن يتم عرضها. يتضمّن الطلب معلومات عن الحالة الحالية لحزمة الصوت:

يمكن استخدام هذه المعلومات لتقييم newFocusRequest مقارنةً بمالكي التركيز الحاليين في focusHolders ومالكي التركيز الحاليين الذين فقدوا التركيز في focusLosers. يجب أن تعرض واجهة برمجة التطبيقات النتائج التالية:

class OemCarAudioFocusResult {
    int audioZoneId;
    int audioFocusEvaluationResults;
    AudioFocusEntry focusResult;
    List<AudioFocusEntry> newLosers;
    List<AudioFocusEntry> newlyBlocked;
}

يحتوي هذا الحقل على معلومات حول نتائج التقييم الفعلية في audioFocusEvaluationResults، ما يشير إلى ما إذا كان الطلب الحالي قد تم منحه أو تأخيره أو تعذّر تنفيذه. يجب ضبط أي تغييرات على حزمة التركيز الحالية في الإدخالات newLosers وnewlyBlocked، وذلك حسب طبيعة تغيير الحزمة.

عندما يحتوي newLosers على إدخالات كانت سابقًا في وضع التركيز ولكن يجب الآن إزالة التركيز منها، سواء بشكل دائم أو مؤقت ستتم إزالة التطبيقات التي تفقد التركيز بشكل دائم من حزمة التركيز الصوتي، وسيتم نقل التطبيقات التي تفقد التركيز بشكل مؤقت إلى حزمة التطبيقات التي تفقد التركيز حاليًا إلى أن تستعيد التركيز أو يتم إيقافها من خلال التطبيق الأصلي الذي طلب التركيز. في كلتا الحالتين، سيتلقّى مستمع التركيز للطلبات إشارة فقدان التركيز المقابلة.

تحتوي القائمة newlyBlocked على إدخالات كانت سابقًا في قائمة focus loser ولكن تم حظرها الآن بواسطة الإدخال الجديد. يمكن أن يكون الحظر دائمًا أو مؤقتًا، وفي حال الحظر الدائم، ستتم إزالة الإدخال من الحزمة وسيتم إرسال فقدان التركيز إلى مستمعي التركيز. في حال فقدان التركيز بشكل مؤقت، سيبقى الإدخال في حزمة العناصر التي فقدت التركيز، ولكن سيتم إضافة عنصر جديد يحظر التركيز إلى قائمة الحظر الخاصة به، ولن يتم إرسال أي إشارة إلى فقدان التركيز لأنّه تم إرسال إشارة سابقة عند حظره لأول مرة. سيتم في النهاية إلغاء حظر الطلب عند إزالة جميع عناصر الحظر الحالية، أو ستتم إزالته من الحزمة إذا تم التوقف عن التركيز.

واجهة برمجة التطبيقات الثانية، notifyAudioFocusChange، هي واجهة أحادية الاتجاه يتم استدعاؤها عند كل طلب أو إلغاء لتركيز الصوت. تُستخدَم واجهة برمجة التطبيقات في الغالب لإبلاغ خدمة الشركة المصنّعة للمعدات الأصلية (OEM) بالتغييرات في التركيز، ما قد يؤثر في سلوك خدمة الصوت في السيارة التي توفّرها الشركة المصنّعة للمعدات الأصلية.

إرشادات لتقييم التركيز

في نظام التشغيل Android Automotive، يتم استخدام ميزة "التركيز على الصوت" لإدارة تشغيل الصوت وتحديد التطبيق الذي يجب أن يلتزم بتوفير تجربة مثالية للمستخدم. وبناءً على ذلك، يجب أن تراعي خدمة المكوّن الإضافي الخاصة بمصنّع المعدات الأصلية ما يلي عند إدارة طلب الحصول على التركيز الصوتي:

  • بدون أي تركيز صوتي دائم ذي أولوية عالية (مثل مكالمة هاتفية أو حالة طوارئ أو أمان)، يجب أن تتمكّن التطبيقات من الحصول على التركيز الصوتي بشكل مؤقت أو دائم.

  • أثناء تفعيل وضع التركيز على الوسائط، يمكن للتطبيقات طلب ما يلي:

    • يجب أن يكون التركيز على استخدام المكالمات، ويجب أن يكون بالإمكان تلقّي التركيز إما بشكل متزامن أو حصري.

    • يجب أن يكون التركيز على استخدام التنقّل، ويجب أن يكون بالإمكان تلقّي التركيز إما بشكل متزامن أو حصري.

    • يجب أن يكون استخدام &quot;مساعد Google&quot; قابلاً للتركيز عليه، سواء بشكل متزامن أو حصري.

  • عندما تكون التطبيقات التي تتطلّب تركيزًا عالي الأولوية على الصوت (مثل مكالمة هاتفية أو تنبيه طوارئ أو تنبيه أمان) نشطة، يجب إما منح أي طلب وارد للحصول على تركيز مؤجّل على الصوت أو تأجيله حسب الحاجة.

على الرغم من أنّ الاقتراحات المذكورة أعلاه ليست شاملة، إلا أنّها يمكن أن تساعد في ضمان قدرة التطبيقات التي تطلب التركيز على الحصول عليه عندما لا تكون هناك أصوات نشطة ذات أولوية عالية. حتى عندما تكون الأصوات ذات الأولوية العالية نشطة، يجب أن يتم الاستجابة لطلبات التركيز المؤجّلة، ويجب أن يتمكّن التطبيق من استعادة التركيز بعد توقّف الصوت ذي الأولوية العالية.

خدمة مستوى صوت السيارة من المصنّع الأصلي للجهاز

تتعامل خدمة الصوت في السيارة مع أحداث مفتاح التحكّم بمستوى الصوت من خلال الاستماع إلى تعديلات مستوى الصوت من نظام الصوت أو من خلال الاستماع إلى أحداث مفتاح التحكّم بمستوى الصوت مباشرةً من خدمة الإدخال في السيارة. في كل حالة، يكون السلوك التلقائي لخدمة الصوت في السيارة هو تحديد مجموعة مستوى الصوت التي سيتم تغييرها استنادًا إلى مشغّلات الصوت النشطة وقائمة أولويات سياق الصوت.

نقدّم قائمتَين للأولوية حسب عدد مرات الظهور. تأخذ القائمة الأولى في الاعتبار جميع سياقات الصوت بهذا الترتيب. يتم عرض القائمة بترتيب تنازلي، أي الأولوية الأعلى في الأعلى والأولوية الأدنى في الأسفل. على سبيل المثال، إذا كان كل من الصوت الخاص بالتنقل والصوت الخاص بالموسيقى نشطَين في الوقت نفسه، سيتم تغيير مستوى صوت التنقل أثناء حدث مفتاح مستوى الصوت.

  1. التنقل
  2. الاتصال
  3. الموسيقى
  4. إشعار
  5. بطلب صوتي
  6. نغمة رنين الاتصال
  7. صوت النظام
  8. الأمان
  9. المنبّه
  10. إشعار
  11. حالة المركبة
  12. الطوارئ

لتبسيط إدارة أحداث مفتاح مستوى الصوت، تتضمّن خدمة الصوت في السيارة قائمة ثانية بالأولوية لسياق الصوت:

  1. الاتصال
  2. الوسائط
  3. إشعار
  4. بطلب صوتي

يتم عرض هذه القائمة أيضًا بترتيب تنازلي. الغرض من هذه القائمة الثانية هو السماح بتغيير الأصوات الأكثر شيوعًا من خلال أحداث المفاتيح. يمكن إدارة الأصوات غير الشائعة، مثل الأصوات ذات المدة الأقصر، من خلال واجهة المستخدم الخاصة بإعدادات الصوت فقط.

يمكن ضبط الإصدار الفعلي من مستوى الصوت باستخدام إعدادات audioVolumeAdjustmentContextsVersion. يمكن ضبط الإعداد على 1 أو 2 (2 هو الإعداد التلقائي).

لتوفير المزيد من المرونة في إدارة مستوى الصوت، تم طرح OemCarAudioVolumeService في نظام التشغيل Android 14:

public interface OemCarAudioVolumeService {
    OemCarvolumeChangeInfo getSuggestedGroupForVolumeChange(
OemCarAudioVolumeRequest request, int volumeAdjustment);
}

تتضمّن خدمة مستوى صوت السيارة من الشركة المصنّعة طريقة واحدة تتطلّب volumeAdjustment وOemCarAudioVolumeRequest:

class OemCarAudioVolumeRequest {
    int audioZoneId;
    int callState;
    List<AudioAttributes> activePlaybackAttributes;
    List<AudioAttributes> duckedAttributes;
    List<CarVolumeGroupInfo> volumeGroupState;
}

يحتوي activePlaybackAttributes للطلب على سمات الصوت النشطة. تمثّل duckedAttributes جميع سمات الصوت التي تم خفض مستوى صوتها حاليًا. تحتوي السمة volumeGroupState على الحالة الحالية لمجموعة وحدات التخزين. يمثّل الطلب الحالة الحالية لمجموعة الصوت ويمكن استخدامه لتحديد مجموعة الصوت التي يجب تغييرها. يجب عرض النتائج بالتنسيق OemCarVolumeChangeInfo:

class OemCarVolumeChangeInfo {
    boolean change;
    CarVolumeGroupInfo volumeGroupChanged;
}

تشير القيمة المنطقية change إلى ما إذا كان أي مستوى صوت قد تغيّر، وتشير true إلى حدوث تغيير ويجب تعديل مجموعة مستويات الصوت. يمثّل volumeGroupChanged مجموعة وحدات التخزين الفعلية التي يجب تغييرها. يجب تغيير هذه المجموعة وفقًا للمعلمة volumeAdjustment الأصلية التي تم تمريرها إلى واجهة برمجة التطبيقات. على سبيل المثال، إذا أشارت النتائج إلى أنّه يجب كتم صوت مجموعة مستوى الصوت الخاصة بالتنقل، ستكون القيمة المنطقية true، ويجب أن تكون مجموعة مستوى الصوت التي تم إرجاعها هي مجموعة مستوى الصوت الخاصة بالتنقل.

خدمة تجنُّب التداخل مع أصوات أخرى في السيارة من المصنّع الأصلي للجهاز

تتولّى خدمة الصوت في السيارة إدارة خفض مستوى الصوت من خلال تتبُّع التغييرات في تركيز الصوت وإرسال إشارة إلى AudioControl HAL بشأن الأجهزة الصوتية التي يجب خفض مستوى صوتها. عندما يتغير التركيز، يتم تقييم جميع العناصر النشطة التي يمكن التركيز عليها لتحديد العنصر الذي يجب خفض مستوى صوته استنادًا إلى مجموعة القواعد الثابتة التالية لخفض مستوى الصوت:

  • خفض مستوى صوت كل شيء باستثناء أصوات المكالمات عند تشغيل أصوات الطوارئ
  • تخفّض ميزة "السلامة أولاً" مستوى صوت كل الأصوات باستثناء أصوات الطوارئ
  • تخفّض ميزة "التنقل بدون انقطاع" مستوى صوت كل شيء باستثناء أصوات الأمان والطوارئ
  • تجاهل جميع الأصوات باستثناء أصوات السلامة والطوارئ والتنقل
  • خفض مستوى صوت رنين المكالمات
  • يجب أن يتم خفض مستوى صوت الموسيقى والإشعارات عند تشغيل أي صوت آخر

هذه القواعد ليست شاملة، ويبقى مصنّعو المعدات الأصلية مسؤولين عن تحديد كيفية خفض مستوى الصوت استنادًا إلى هذه الإرشادات. ويمكن لمصنّعي المعدات الأصلية التحكّم في هذه الاقتراحات بشكل أكثر نشاطًا استنادًا إلى المتطلبات المتاحة. تم طرح OemCarDuckingService في نظام التشغيل Android 14:

class OemCarAudioDuckingService {
List<AudioAttributes>   evaluateAttributesToDuck(
        OemCarAudioVolumeRequest request);
}

يتم استدعاء واجهة برمجة التطبيقات هذه من خدمة الصوت في السيارة عند حدوث تغييرات في تركيز الصوت. ويعيد استخدام OemCarAudioVolumeRequest الذي تم تقديمه في خدمة السيارات ذات الحجم الكبير من مصنّعي المعدات الأصلية، ويتضمّن المعلومات ذات الصلة لاتخاذ القرار بشأن السمات التي يجب إخفاؤها. تتم مقارنة قائمة سمات الصوت التي يجب خفض مستوى صوتها من واجهة برمجة التطبيقات بحالة الصوت الحالية:

  • سمة الصوت التي يتم خفض مستوى صوتها حاليًا:

    • في القائمة، سيستمر خفض مستوى الصوت
    • غير مضمّن في القائمة، تم إيقاف ميزة "التخفيف"
  • لم يتم خفض مستوى صوت سمة الصوت حاليًا:

    • في القائمة، تم خفض مستوى الصوت
    • غير مضمّن في القائمة، تم إيقاف ميزة "التخفيف"

تحدّد خدمة الصوت في السيارة أجهزة إخراج الصوت التي تنتمي إليها سمات الصوت، ثم تضيفها إلى قائمة أجهزة إخراج الصوت التي تم خفض مستوى صوتها أو قائمة أجهزة الصوت التي لم يتم خفض مستوى صوتها، على التوالي. يتم إرسال هذا الطلب في النهاية إلى AudioControl HAL لتنفيذ التخفيض المطلوب لمستوى الصوت على مستوى الجهاز.

يوضّح الشكل أدناه مخطط تسلسل مبسطًا لعنصر تحكّم خفض مستوى صوت الخلفية عند طلب التركيز عند استخدام خدمة خفض مستوى صوت الخلفية الخاصة بمصنّع المعدات الأصلية:

الصورة

يبدأ التسلسل عندما يطلب تطبيق إدارة تركيز الصوت من خلال واجهات برمجة التطبيقات العامة الخاصة بمدير الصوت. ويتم إرسال الطلب إلى خدمة الصوت في السيارة لتحديد النتائج. عند تحديد مصدر الصوت الذي سيتم التركيز عليه، يتم تقييم ميزة خفض مستوى الصوت من خلال خدمة صوت السيارة التي تستدعي OemCarAudioDuckingService لتقييم سمات الصوت التي يجب خفض مستوى صوتها. بعد عرض النتائج من واجهة برمجة التطبيقات evaluateAttributesToDuck، يتم احتساب الأجهزة الصوتية التي سيتم خفض مستوى صوتها، وأخيرًا يتم إرسال المعلومات إلى AudioControl لتطبيق خفض مستوى الصوت على أجهزة الصوت.

التنفيذ المرجعي لخدمة الصوت في السيارة من المصنّع الأصلي

يوفّر نظام التشغيل Android Automotive OS (AAOS) عملية تنفيذ مرجعية لخدمة السيارة التي يقدّمها المصنّع الأصلي للجهاز في packages/services/Car/tests/OemCarServiceTestApp، والتي تنفّذ OemCarService، بالإضافة إلى OemCarAudioFocusService وOemCarAudioDuckingService وOemCarAudioVolumeService. في الحالة الأخيرة، تستخدم كل خدمة ملف XML لتحميل سلوك ثابت. على سبيل المثال، تحمّل OemCarAudioFocusServiceImp oem_focus_config.xml، التي تحتوي على مصفوفة تفاعلية. تُستخدَم المصفوفة لتقييم طلب التركيز عند استدعاء evaluateAudioFocusRequest.

تصحيح أخطاء تطبيق الاختبار المرجعي

يشكّل تطبيق اختبار خدمة السيارة من المصنّع الأصلي للجهاز جزءًا من رمز المصدر لنظام التشغيل AOSP. ويمكن لمصنّعي المعدات الأصلية إجراء تغييرات وفقًا لاحتياجاتهم. لإجراء عملية تصحيح الأخطاء، استخدِم إعداد config_oemCarService لتفعيل التطبيق التجريبي.

<!-- This is the component name for the OEM customization service. OEM can choose to implement
this service to customize car service behavior for different policies. If OEMs choose to
implement it, they have to implement a service extending OemCarService exposed by car-lib,
and implement the required component services.
If the component name is invalid, CarService would not connect to any OEM service.
Component name can not be a third party package. It should be pre-installed -->
<string name="config_oemCarService" translatable="false">
com.android.car.oemcarservice.testapp/.OemCarServiceImpl
</string>

للتحقّق من أنّ خدمة السيارة من الشركة المصنّعة الأصلية تستخدم الأمر dump لخدمة السيارة من الشركة المصنّعة الأصلية، اتّبِع الخطوات التالية:

adb shell dumpsys car_service --oem-service

قد تكون النتائج مشابهة للمخرجات أدناه:

***CarOemProxyService dump***
  mIsFeatureEnabled: true
  mIsOemServiceBound: true
  mIsOemServiceReady: true
  mIsOemServiceConnected: true
  mInitComplete: true
  OEM_CAR_SERVICE_CONNECTED_TIMEOUT_MS: 5000
  OEM_CAR_SERVICE_READY_TIMEOUT_MS: 5000
  mComponentName: com.android.car.oemcarservice.testapp/.OemCarServiceImpl

يحدّد كل قيمة منطقية في كل مجموعة من معلومات dump حالة الميزة والخدمة. على سبيل المثال، تحدّد معلومات التفريغ mIsOemServiceReady ما إذا كانت الخدمة جاهزة للاستخدام، حيث يشير true إلى أنّها جاهزة ويشير false إلى أنّها غير جاهزة.