تدعم مشغلات الصوت السمات التي تحدد كيفية تعامل نظام الصوت مع قرارات التوجيه ومستوى الصوت والتركيز للمصدر المحدد. يمكن للتطبيقات إرفاق سمات لتشغيل الصوت (مثل الموسيقى التي يتم تشغيلها بواسطة خدمة دفق أو إشعار برسالة بريد إلكتروني جديدة) ثم تمرير سمات مصدر الصوت إلى إطار العمل ، حيث يستخدم نظام الصوت السمات لاتخاذ قرارات الاختلاط وإخطار التطبيقات عن حالة النظام.
في Android 4.4 والإصدارات الأقدم ، اتخذ إطار العمل قرارات مختلطة باستخدام نوع دفق الصوت فقط. ومع ذلك ، كان اعتماد مثل هذه القرارات على نوع الدفق محدودًا للغاية لإنتاج مخرجات عالية الجودة عبر تطبيقات وأجهزة متعددة. على سبيل المثال ، على جهاز محمول ، قامت بعض التطبيقات (مثل خرائط Google) بتشغيل اتجاهات القيادة على نوع دفق STREAM_MUSIC ؛ ومع ذلك ، على الأجهزة المحمولة في وضع العرض (مثل Android Auto) ، لا يمكن للتطبيقات مزج اتجاهات القيادة مع تدفقات الوسائط الأخرى.
باستخدام واجهة برمجة تطبيقات سمة الصوت ، تزود التطبيقات نظام الصوت بمعلومات مفصلة حول مصدر صوت معين ، بما في ذلك الاستخدام (سبب تشغيل المصدر) ، ونوع المحتوى (ما يتم تشغيل المصدر) ، والعلامات (كيف يجب تشغيل المصدر) ، والسياقات (الجديد في Android 9). بناء الجملة:
AudioAttributes { mUsage mContentType mSource mFlags mTags / mFormattedTags / mBundle (key value pairs) }
- إستعمال . يحدد سبب تشغيل المصدر ويتحكم في قرارات التوجيه والتركيز ومستوى الصوت.
- نوع المحتوى . يحدد ما يقوم المصدر بتشغيله (موسيقى ، فيلم ، كلام ، صوتنة ، غير معروف).
- السياق . قيم الاستخدام الملخصة إلى Audio HAL.
- أعلام . يحدد كيفية تشغيل المصدر. يتضمن دعمًا لفرض الصوت (أصوات مصراع الكاميرا مطلوبة في بعض البلدان) ومزامنة صوت / فيديو الأجهزة.
لمعالجة الديناميكيات ، يجب أن تميز التطبيقات بين محتوى الفيلم والموسيقى والكلام. قد تكون المعلومات حول البيانات نفسها مهمة أيضًا ، مثل جهارة الصوت وقيمة عينة الذروة.
باستخدام السمات
يحدد الاستخدام السياق الذي يتم فيه استخدام الدفق ، مما يوفر معلومات حول سبب تشغيل الصوت وسبب استخدام الصوت. معلومات الاستخدام أكثر تعبيرًا من نوع الدفق وتسمح للأنظمة الأساسية أو سياسات التوجيه بتحسين قرارات الحجم أو التوجيه.
قم بتوفير إحدى قيم الاستخدام التالية لأي مثيل:
- USAGE_UNKNOWN
- USAGE_MEDIA
- USAGE_VOICE_COMMUNICATION
- USAGE_VOICE_COMMUNICATION_SIGNALLING
- USAGE_ALARM
- USAGE_NOTIFICATION
- USAGE_NOTIFICATION_TELEPHONY_RINGTONE
- USAGE_NOTIFICATION_COMMUNICATION_REQUEST
- USAGE_NOTIFICATION_COMMUNICATION_INSTANT
- USAGE_NOTIFICATION_COMMUNICATION_DELAYED
- USAGE_NOTIFICATION_EVENT
- USAGE_ASSISTANCE_ACCESSIBILITY
- USAGE_ASSISTANCE_NAVIGATION_GUIDANCE
- USAGE_ASSISTANCE_SONIFICATION
- USAGE_GAME
- USAGE_VIRTUAL_SOURCE
- USAGE_ASSISTANT
قيم استخدام سمة الصوت متنافية. للحصول على أمثلة ، راجع تعريفات USAGE_MEDIA
و USAGE_ALARM
؛ للاستثناءات ، راجع تعريف AudioAttributes.Builder
.
نوع المحتوى
يحدد نوع المحتوى ماهية الصوت ويعبر عن الفئة العامة للمحتوى مثل الفيلم أو الكلام أو الصفير / نغمة الرنين. يستخدم إطار عمل الصوت معلومات نوع المحتوى لتكوين كتل معالجة ما بعد الصوت بشكل انتقائي. أثناء توفير نوع المحتوى أمر اختياري ، يجب عليك تضمين معلومات الكتابة متى كان نوع المحتوى معروفًا ، مثل استخدام CONTENT_TYPE_MOVIE
لخدمة بث الأفلام أو CONTENT_TYPE_MUSIC
لتطبيق تشغيل الموسيقى.
قم بتوفير إحدى قيم نوع المحتوى التالية لأي مثيل:
-
CONTENT_TYPE_UNKNOWN
(افتراضي) -
CONTENT_TYPE_MOVIE
-
CONTENT_TYPE_MUSIC
-
CONTENT_TYPE_SONIFICATION
-
CONTENT_TYPE_SPEECH
تكون قيم نوع محتوى سمة الصوت حصرية بشكل متبادل. للحصول على تفاصيل حول أنواع المحتوى ، راجع واجهة برمجة تطبيقات سمة الصوت .
السياقات
يتم تحديد كل صوت في Android من خلال التطبيق المسؤول وسبب توليد الصوت ؛ ويستخدم جهاز Android هذه المعلومات لتحديد كيفية تقديم الصوت. في الإصدار 8.x من نظام التشغيل Android والإصدارات الأقدم ، يمكن للتطبيقات الإبلاغ عن سبب توليد الصوت باستخدام أنواع الدفق القديمة (مثل AudioSystem.STREAM_MUSIC
) أو AudioAttributes
. في Android 9 ، يتم استخراج قيم AudioAttributes.usage
على مستوى HAL كسياقات .
سياقات HAL الصوتية | استخدام سمات الصوت |
---|---|
موسيقى | وسائط |
أمر صوتي | USAGE_ASSISTANT |
ارشاد | ASSISTANCE_NAVIGATION_GUIDANCE |
يتصل | VOICE_COMMUNICATION |
نغمة | نغمة إعلام |
تنبيه | تنبيه |
إنذار | إنذار |
SYSTEM_SOUND | ASSISTANCE_SONIFICATION |
غير معروف | غير معروف |
يمكنك توفير إحدى قيم CONTEXT_NUMBER
التالية لأي مثيل:
- MUSIC_CONTEXT // تشغيل الموسيقى
- NAVIGATION_CONTEXT // اتجاهات التنقل
- VOICE_COMMAND_CONTEXT // جلسة الأوامر الصوتية
- CALL_RING_CONTEXT // رنين المكالمات الصوتية
- CALL_CONTEXT // مكالمة صوتية
- ALARM_CONTEXT // صوت التنبيه من Android
- NOTIFICATION_CONTEXT // الإخطارات
- SYSTEM_SOUND_CONTEXT // أصوات تفاعل المستخدم (نقرات الأزرار ، إلخ)
أعلام
تحدد العلامات كيفية تطبيق إطار عمل الصوت للتأثيرات على تشغيل الصوت. قم بتوفير واحد أو أكثر من العلامات التالية على سبيل المثال:
-
FLAG_AUDIBILITY_ENFORCED
. يطلب من النظام التأكد من سماع الصوت. تُستخدم لتلبية احتياجاتSTREAM_SYSTEM_ENFORCED
القديمة (مثل فرض أصوات مصراع الكاميرا). -
HW_AV_SYNC
. يطلب من النظام تحديد تدفق الإخراج الذي يدعم مزامنة الصوت / الصورة للأجهزة.
علامات سمات الصوت غير حصرية ويمكن دمجها. للحصول على تفاصيل حول هذه العلامات ، راجع واجهة برمجة تطبيقات سمة الصوت .
مثال
في هذا المثال ، يحدد AudioAttributes.Builder
AudioAttributes
التي سيتم استخدامها بواسطة مثيل AudioTrack
جديد:
AudioTrack myTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
التوافق
يجب على مطوري التطبيقات استخدام سمات الصوت عند إنشاء التطبيقات أو تحديثها لنظام Android 5.0 والإصدارات الأحدث. ومع ذلك ، لا يُطلب من التطبيقات الاستفادة من السمات ؛ يمكنهم التعامل مع أنواع البث القديمة فقط أو البقاء غير مدركين للسمات (أي مشغل وسائط عام لا يعرف أي شيء عن المحتوى الذي يقوم بتشغيله).
في مثل هذه الحالات ، يحافظ إطار العمل على التوافق العكسي مع الأجهزة القديمة وإصدارات Android من خلال الترجمة التلقائية لأنواع دفق الصوت القديمة إلى سمات صوتية. ومع ذلك ، فإن إطار العمل لا يفرض أو يضمن هذا التعيين عبر الأجهزة أو الشركات المصنعة أو إصدارات Android.
تعيينات التوافق:
Android 5.0 والإصدارات الأحدث | Android 4.4 والإصدارات الأقدم |
---|---|
CONTENT_TYPE_SPEECH USAGE_VOICE_COMMUNICATION | STREAM_VOICE_CALL |
CONTENT_TYPE_SONIFICATION USAGE_ASSISTANCE_SONIFICATION | STREAM_SYSTEM |
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION_RINGTONE | STREAM_RING |
CONTENT_TYPE_MUSIC USAGE_UNKNOWN USAGE_MEDIA USAGE_GAME USAGE_ASSISTANCE_ACCESSIBILITY USAGE_ASSISTANCE_NAVIGATION_GUIDANCE | STREAM_MUSIC |
CONTENT_TYPE_SONIFICATION USAGE_ALARM | STREAM_ALARM |
CONTENT_TYPE_SONIFICATION USAGE_NOTIFICATION USAGE_NOTIFICATION_COMMUNICATION_REQUEST USAGE_NOTIFICATION_COMMUNICATION_INSTANT USAGE_NOTIFICATION_COMMUNICATION_DELAYED USAGE_NOTIFICATION_EVENT | STREAM_NOTIFICATION |
CONTENT_TYPE_SPEECH | (@ إخفاء) STREAM_BLUETOOTH_SCO |
FLAG_AUDIBILITY_ENFORCED | (@ إخفاء) STREAM_SYSTEM_ENFORCED |
CONTENT_TYPE_SONIFICATION USAGE_VOICE_COMMUNICATION_SIGNALLING | (@ إخفاء) STREAM_DTMF |
أنواع الدفق الموقوفة
يعمل Android 9 على إهمال أنواع الدفق التالية لاستخدام السيارات:
- STREAM_DEFAULT
- STREAM_VOICE_CALL
- STREAM_SYSTEM
- STREAM_RING
- STREAM_MUSIC
- STREAM_ALARM
- STREAM_NOTIFICATION
- STREAM_BLUETOOTH_SCO
- STREAM_SYSTEM_ENFORCED
- STREAM_DTMF
- STREAM_TTS
- سهولة الوصول
لمزيد من التفاصيل ، انظر صوت السيارات .