تتيح خدمات المكوّنات الإضافية الجديدة للمصنع الأصلي للسيارات في 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، تدير خدمة الصوت في السيارة الإجراءات التالية:
- توجيه الصوت
- التركيز على الصوت
- تجنب التداخل مع أصوات أخرى
- مستوى الصوت وكتمه
قبل نظام Android 14، كان هذا السلوك ثابتًا إلى حد كبير ولم يكن يمكن تعديله إلا من خلال الإعدادات، وذلك لعدد محدود جدًا من الحالات. وفّر نظام التشغيل Android 14 آلية لنظام معالجة ملفّات الموسيقى في السيارة للتواصُل مع مكوّن يحدّده المصنّع الأصلي للسيارة ويدير ما يلي:
- التركيز على الصوت
- تجنب التداخل مع أصوات أخرى
- مستوى الصوت وكتمه
يوضّح الشكل أدناه بنية مبسّطة لخدمة الصوت في السيارة وخدمة المصنّع الأصلي للسيارة. تحدِّد خدمة الصوت في السيارة نقاط اتصال مختلفة يمكنها طلب خدمة الصوت لدى المصنِّع الأصلي للسيارة لإدارة سلوك الصوت. ولا يحدث ذلك إلا إذا تم تحديد مكوّن خدمة الصوت في السيارة من المصنّع الأصلي للجهاز. وبخلاف ذلك، تستخدم خدمة الصوت في السيارة السلوك التلقائي.
لضمان أن تكون خدمة الصوت في السيارة وخدمة الصوت لدى المصنّع الأصلي للسيارة متزامنتَين دائمًا، تُرسِل خدمة الصوت في السيارة الأجزاء المطلوبة من الحالة الحالية لحزمة الصوت إلى خدمة الصوت لدى المصنّع الأصلي للسيارة في كل مكالمة. على سبيل المثال، عندما تعترض خدمة الصوت في السيارة طلبًا لتقييم تركيز الصوت، فإنّها تُرسِل الحالة الحالية للمجموعة إلى خدمة الصوت لدى المصنّع الأصلي للسيارة. وتشمل الحالة الحالية العناصر التي تملك التركيز حاليًا والعناصر التي فقدت التركيز حاليًا. إنّ طلبات التركيز التي فقدت تركيزها هي طلبات التركيز التي لا تزال جزءًا من الحزمة ولكنها فقدت التركيز مؤقتًا.
يجب أن تدير خدمة الصوت في السيارة جميع الأنشطة الصوتية في السيارة. إذا كانت خدمة الصوت في السيارة لا تدير بعض أجزاء سلوك الصوت، تكون المعلومات المعروضة لخدمة الصوت في الشركة المصنّعة الأصلية للسيارة غير مكتملة. على سبيل المثال، إذا عمدت إحدى الشركات المصنّعة للسيارات إلى استبدال معالجة التركيز الصوتي في خدمة السيارة من خلال تسجيل سياسة التركيز الصوتي الخاصة بها، لن تتمكّن خدمة الصوت في السيارة من تقديم معلومات كاملة إلى خدمة الصوت في السيارة لدى الشركة المصنّعة. ويمكن أن يؤثر ذلك في قدرة خدمة الصوت من المصنّع الأصلي للسيارة على اتّخاذ القرارات، لأنّها قد لا تتضمّن معلومات غير ظاهرة لخدمة الصوت في السيارة.
اتّخاذ الإجراءات: تتصل خدمة الصوت في السيارة بخدمات السيارات المصنّعة الأصلية. يتم إجراء هذه المكالمات على مستوى العمليات، ما يتطلّب التواصل بين العمليات (IPC). تؤدي تقنية IPC إلى إضافة وقت استجابة إلى كل مكالمة. من المهم تقليل وقت الاستجابة في خدمة المصنّع الأصلي للجهاز.
بما أنّه يتم حظر طلبات بيانات خدمة الصوت في السيارة إلى خدمة المصنّع الأصلي للجهاز، يجب ألا تطلب خدمة المصنّع الأصلي للجهاز خدمة الصوت في السيارة تقييمات مباشرة لواجهة برمجة التطبيقات. بدلاً من ذلك، تقدّم خدمة الصوت في السيارة المعلومات اللازمة لكي لا تنتقل المكالمات بين العمليتين إلا في اتجاه واحد.
تعريفات خدمة الصوت في السيارة من المصنّع الأصلي للجهاز
خدمة ميزة "أولوية الصوت" في السيارة من المصنّع الأصلي للجهاز
تدير خدمة الصوت في السيارة طلبات التركيز على الصوت الواردة من التطبيقات من خلال تسجيل مستمع للتركيز على سياسة الصوت. تتضمّن خدمة الصوت في السيارة آلية لإدارة سلوك التركيز استنادًا إلى مصفوفة تفاعل ثابتة. تحدّد المصفوفة ثلاثة أنواع مختلفة من التفاعلات:
التفاعل المتزامن: يمكن لأصحاب التركيز الحفاظ على التركيز في الوقت نفسه.
التفاعلات الحصرية: ينقل طلب التركيز الوافد التركيز من صاحب التركيز الحالي.
رفض التفاعل: تم رفض طلب التركيز الواردة استنادًا إلى صاحب التركيز الحالي.
على الرغم من أنّ ذلك كافٍ لبعض حالات استخدام السيارات، إلا أنّه لا يلبّي جميع
احتياجات التفاعل التي قد تختلف بسبب متطلبات المصنّعين الأصليّين للسيارات. لهذا السبب، لدينا OemCarAudioFocusService
:
public interface OEmCarAudioFocusService {
OemCarAuddioFocusResults evaluateAudioFocusRequest(
OemCarAudioFocusEvaluationRequest request);
void notifyAudioFocusChange(
List<AudioFocusEntry> holder,
List<AudioFocusEntry> losers, int zoneId);
}
يتم استدعاء واجهة برمجة التطبيقات evaluateAudioFocusRequest
من خدمة الصوت في السيارة في أي وقت
يكون هناك طلب للتركيز على الصوت يجب تقييمه، وهي واجهة برمجة تطبيقات بدورَين
تمنع ظهور النتائج. يحتوي الطلب على معلومات
حول الحالة الحالية لحزمة الصوت:
يمكن استخدام هذه المعلومات لتقييم newFocusRequest
مقارنةً بأصحاب focusHolders
الحاليين في
focusHolders
وأصحاب focusLosers
الحاليين في
focusLosers
. يجب أن تعرض واجهة برمجة التطبيقات النتائج التالية:
class OemCarAudioFocusResult {
int audioZoneId;
int audioFocusEvaluationResults;
AudioFocusEntry focusResult;
List<AudioFocusEntry> newLosers;
List<AudioFocusEntry> newlyBlocked;
}
يحتوي هذا الحقل على معلومات عن نتائج التقييم الفعلية في audioFocusEvaluationResults
، والتي تشير إلى ما إذا كان قد تم منح الطلب الحالي
أو تأخيره أو تعذّر إكماله. يجب ضبط أي تغييرات في حزمة التركيز الحالية
في إدخالَي newLosers
وnewlyBlocked
، استنادًا إلى طبيعة
تغيير الحزمة.
حيث يحتوي newLosers
على إدخالات كانت تركّز عليها الشاشة في السابق، ولكن
من المفترض أن تفقد التركيز الآن، إما بشكل دائم أو مؤقت. ستتم إزالة التطبيقات التي فقدت التركيز نهائيًا
من حزمة التركيز الصوتي، وسيتم نقل التطبيقات التي فقدت التركيز مؤقتًا
إلى حزمة التركيز الحالية إلى أن تستعيد التركيز أو يتم
تخلي طلب التركيز الأصلي عنها. بغض النظر عن ذلك، سيتلقّى مستمع التركيز
للطلبات إشعارًا متطابقًا بفقدان التركيز.
تحتوي قائمة newlyBlocked
على إدخالات كانت في السابق ضمن قائمة newlyBlocked
التي فقدت التركيز، ولكنها الآن محظورة بسبب الإدخال الجديد. يمكن أن يكون الحظر دائمًا أو
مؤقتًا. في حال الحظر الدائم للتركيز، ستتم إزالة الإدخال من الحزمة
وسيتم إرسال فقدان التركيز إلى مستمعي التركيز. في حال فقدان التركيز بشكل عابر،
سيظل الإدخال في حزمة أدوات فقدان التركيز، ولكن سيتم
إضافة أداة حظر جديدة للتركيز إلى قائمة أدوات الحظر، ولن يتم إرسال أي فقدان للتركيز لأنّه تم إرسال أحده
في السابق عند حظره لأول مرة. سيتم في النهاية إزالة الحظر عن الطلب عند إزالة جميع المحظورات الحالية، أو ستتم إزالته من الحزمة إذا تم التخلي عن التركيز.
واجهة برمجة التطبيقات الثانية، notifyAudioFocusChange
، هي واجهة برمجة تطبيقات أحادية الاتجاه يتمّ استدعاؤها عند كل
طلب تركيز على الصوت أو إيقافه. تُستخدَم واجهة برمجة التطبيقات في الغالب لإعلام خدمة المصنّع الأصلي للسيارة
بتغييرات التركيز، ما قد يؤثر في سلوك خدمة الصوت في السيارة من المصنّع الأصلي للسيارة.
إرشادات لتقييم التركيز
في نظام التشغيل AAOS، يتم استخدام ميزة "التركيز على الصوت" لإدارة تشغيل الصوت وتحديد التطبيق الذي يجب أن يلتزم به لتوفير تجربة مثالية للمستخدم. وبناءً على ذلك، يجب أن تأخذ خدمة المكوّن الإضافي لمصنعي المعدّات الأصلية في الاعتبار ما يلي عند إدارة طلب تركيز الصوت:
في حال عدم توفّر أي تركيز صوتي ثابت ذي أولوية عالية (مثل مكالمة هاتفية أو حالة طوارئ أو سلامة)، يجب أن تتمكّن التطبيقات من الحصول على تركيز صوتي إما بشكل مؤقت أو دائم.
عندما يكون التركيز على الوسائط نشطًا، يمكن للتطبيقات طلب ما يلي:
تركيز استخدام المكالمات، يجب أن يكون قادرًا على تلقّي التركيز إما بشكلٍ متزامن أو حصري.
يجب أن يكون بإمكان عنصر التركيز المستخدَم للتنقّل تلقّي التركيز إما بالتزامن أو بشكل حصري.
يجب أن يكون بإمكان تركيز استخدام "مساعد Google" تلقّي التركيز إما بالتزامن أو بشكل حصري.
عندما تكون تطبيقات التركيز الصوتي ذات الأولوية العالية (مثل مكالمة هاتفية أو تنبيه بشأن حالة الطوارئ أو تنبيه بشأن السلامة) نشطة، يجب منح أي طلب قيد المعالجة للتركيز الصوتي أو تأخيره حسب الحاجة.
على الرغم من أنّ الاقتراحات الواردة أعلاه ليست شاملة، يمكن أن تساعد في ضمان أنّه يمكن للتطبيقات التي تطلب التركيز الحصول عليه عندما لا تكون هناك أصوات نشطة ذات أولوية عالية. حتى عندما تكون الأصوات ذات الأولوية العالية مفعّلة، يجب أن يتم التعامل مع طلبات التركيز المتأخرة، ومن المفترض أن يتمكّن الجهاز من التركيز بعد توقف الأصوات ذات الأولوية العالية.
خدمة ضبط مستوى الصوت في السيارة من المصنّع الأصلي للجهاز
تدير خدمة الصوت في السيارة أحداث مفاتيح التحكّم بمستوى الصوت إما من خلال الاستماع إلى تعديلات مستوى الصوت من نظام الصوت أو من خلال الاستماع إلى أحداث مفاتيح التحكّم بمستوى الصوت مباشرةً من خدمة إدخال السيارة. في كل حالة، يكون السلوك التلقائي للخدمة الصوتية في السيارة هو تحديد مجموعة مستوى الصوت التي سيتم تغييرها استنادًا إلى مشغّلات الموسيقى النشطة وقائمة أولويات سياق الصوت.
نقدّم قائمتَين بأولويات الحجم. تأخذ القائمة الأولى في الاعتبار جميع ملفّات ملفّات الصوت بهذا الترتيب. يتم عرض القائمة بترتيب تنازلي، مع أعلى الأولوية في الأعلى وأدنى الأولوية في أسفل الصفحة. على سبيل المثال، إذا كان صوت التنقّل وصوت الموسيقى مفعّلَين في الوقت نفسه، سيتم تغيير مستوى صوت التنقّل أثناء حدث مفتاح الصوت.
- التنقّل
- الاتصال
- الموسيقى
- إشعار
- بطلب صوتي
- نغمة رنين الاتصال
- صوت النظام
- الأمان
- المنبّه
- إشعار
- حالة المركبة
- الطوارئ
لتسهيل إدارة أحداث مفتاح مستوى الصوت، تتضمّن خدمة الصوت في السيارة قائمة أولوية ثانية للسياق الصوتي:
- الاتصال
- الوسائط
- إشعار
- بطلب صوتي
يتم أيضًا عرض هذه القائمة بترتيب تنازلي. الغرض من هذه القائمة الثانية هو السماح بتغيير الأصوات الأكثر شيوعًا من خلال الأحداث الرئيسية. يمكن إدارة الأصوات غير الشائعة، التي قد تكون قصيرة المدة، من خلال واجهة مستخدم إعدادات الصوت فقط.
يمكن ضبط الإصدار الفعلي من مستوى الصوت باستخدام إعدادات
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 بشأن أجهزة الصوت التي يجب خفض مستوى صوتها.
عند تغيير التركيز، يتم تقييم جميع عناصر التركيز النشطة لتحديد
العنصر الذي يجب إخفاؤه استنادًا إلى هذه المجموعة من
قواعد إخفاء العناصر الثابتة:
- كتم أصوات الطوارئ لكل الأصوات باستثناء أصوات المكالمات
- يوقف وضع "الأمان" كل الأصوات باستثناء أصوات الطوارئ.
- كتم الصوت أثناء التنقّل في كل الأصوات باستثناء أصوات السلامة والطوارئ
- يوقف وضع "عدم الإزعاج" كل الأصوات باستثناء أصوات السلامة والطوارئ والتنقّل.
- أصوات رنين المكالمات في تطبيق Voice
- يجب أن يتم كتم صوت الموسيقى والإعلانات من خلال كل المحتوى.
هذه القواعد ليست شاملة، وتبقى الشركات المصنّعة للأجهزة الأصلية مسؤولة عن تحديد
كيفية كتم الأصوات استنادًا إلى هذه الإرشادات. يمكن لمصنّعي المعدّات الأصلية التحكّم في هذه الاقتراحات بشكل أكثر فعالية استنادًا إلى المتطلبات المتاحة. تم طرح الرمز
OemCarDuckingService
في Android 14:
class OemCarAudioDuckingService {
List<AudioAttributes> evaluateAttributesToDuck(
OemCarAudioVolumeRequest request);
}
يتمّ استدعاء واجهة برمجة التطبيقات هذه من خدمة الصوت في السيارة عند تغيير تركيز الصوت. ويعيد استخدام
OemCarAudioVolumeRequest
الذي تم تقديمه في
خدمة ضبط مستوى الصوت في السيارة من المصنّع الأصلي للسيارة، ويحتوي على
المعلومات ذات الصلة لاتخاذ القرار بشأن السمات التي يجب كتم صوتها. تتم مقارنة قائمة
سمات الصوت التي يجب كتم صوتها من واجهة برمجة التطبيقات بالحالة الحالية للصوت:
سمة الصوت التي تم كتم صوتها حاليًا:
- على القائمة، لا يزال يتم تجنُّب المحتوى
- غير مُدرَج في القائمة، وتم إيقاف ميزة "خفض الصوت"
سمة الصوت غير مكتوم حاليًا:
- في القائمة، تم إخفاء
- غير مُدرَج في القائمة، وتم إيقاف ميزة "خفض الصوت"
بعد ذلك، تحدِّد خدمة الصوت في السيارة أجهزة إخراج الصوت التي تنتمي إليها سمات الصوت، وتضيفها إلى قائمة أجهزة إخراج الصوت المنخفض أو قائمة أجهزة الصوت العادية، على التوالي. ويتم إرسال هذا الطلب في النهاية إلى AudioControl HAL لتنفيذ خفض مستوى الصوت المطلوب على مستوى الأجهزة.
يعرض الشكل أدناه مخطّط تسلسل مبسطًا لعنصر التحكّم في كتم الصوت لطلب التركيز عند استخدام خدمة كتم الصوت من المصنّع الأصلي للجهاز:
يبدأ التسلسل عندما يطلب أحد التطبيقات
إدارة تركيز الصوت
من خلال واجهات برمجة التطبيقات المتاحة للجميع الخاصة بمدير الصوت. تتم إعادة توجيه الطلب إلى
خدمة الصوت في السيارة لتحديد النتائج. عند تحديد تركيز الصوت، يتم تقييم كتم الصوت
من خلال خدمة الصوت في السيارة التي تستدعي OemCarAudioDuckingService
لتقييم السمات الصوتية التي يجب كتم صوتها. بعد عرض النتائج
من واجهة برمجة تطبيقات evaluateAttributesToDuck
، يتم احتساب الأجهزة الصوتية التي سيتم كتم صوتها،
وأخيرًا يتم إرسال المعلومات إلى AudioControl
لتطبيق كتم الصوت
على أجهزة الصوت.
تنفيذ مرجع خدمة الصوت في السيارة من المصنّع الأصلي
يوفّر 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
إلى أنّها غير جاهزة.