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

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

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

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

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

صورة

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

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). تؤدي عملية الاتصال بين العمليات إلى إضافة وقت استجابة إلى كل مكالمة. من المهم تقليل وقت الاستجابة في خدمة الشركة المصنّعة الأصلية.

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

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

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

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

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

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

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

على الرغم من أنّ هذا يكفي لبعض حالات استخدام السيارات، إلا أنّه لا يلبي جميع احتياجات التفاعل التي قد تختلف بسبب متطلبات الشركة المصنّعة للمعدات الأصلية. لهذا السبب، نقدّم 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 على إدخالات كانت سابقًا في قائمة التركيز غير النشط ولكن تم حظرها الآن بواسطة الإدخال الجديد. يمكن أن يكون الحظر دائمًا أو مؤقتًا، وفي حال الحظر الدائم، ستتم إزالة الإدخال من الحزمة وسيتم إرسال فقدان التركيز إلى مستمعي التركيز. في حال فقدان التركيز بشكل مؤقت، سيظل الإدخال في حزمة العناصر التي فقدت التركيز، ولكن سيتم إضافة عنصر جديد يحظر التركيز إلى قائمة العناصر الحاظر، ولن يتم إرسال إشارة إلى فقدان التركيز لأنّه تم إرسالها سابقًا عند حظر التركيز لأول مرة. سيتم في النهاية إلغاء حظر الطلب عند إزالة جميع عناصر الحظر الحالية، أو ستتم إزالته من الحزمة إذا تم التوقف عن التركيز.

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

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

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

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

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

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

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

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

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

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

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

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

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

  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 عملية تنفيذ مرجعية لخدمة السيارة التي يقدّمها المصنّع الأصلي للجهاز في 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 إلى أنّها غير جاهزة.