سمات الصوت

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

في الإصدار 4.4 من نظام التشغيل Android والإصدارات الأقدم، كان إطار العمل يتخذ قرارات الدمج باستخدام نوع بث الصوت فقط. ومع ذلك، كان الاعتماد على نوع البث محدودًا جدًا لإنتاج مخرجات عالية الجودة على مستوى تطبيقات وأجهزة متعددة. على سبيل المثال، على جهاز جوّال، شغّلت بعض التطبيقات (مثل "خرائط Google") اتجاهات القيادة باستخدام نوع البث STREAM_MUSIC. ومع ذلك، على الأجهزة الجوّالة في وضع العرض (مثل Android Auto)، لا يمكن للتطبيقات دمج اتجاهات القيادة مع مصادر وسائط أخرى.

باستخدام Audio Attribute API، توفّر التطبيقات لنظام الصوت معلومات تفصيلية عن مصدر صوت معيّن، بما في ذلك الاستخدام (سبب تشغيل المصدر) ونوع المحتوى (المحتوى الذي يتم تشغيله من المصدر) والعلامات (كيفية تشغيل المصدر) والسياقات (ميزة جديدة في 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 استخدام AudioAttributes
موسيقى الوسائط
VOICE_COMMAND USAGE_ASSISTANT
التنقّل ASSISTANCE_NAVIGATION_GUIDANCE
اتصال VOICE_COMMUNICATION
نغمة الرنين NOTIFICATION_RINGTONE
الإشعار الإشعار
ALARM ALARM
SYSTEM_SOUND ASSISTANCE_SONIFICATION
UNKNOWN UNKNOWN

يمكنك تقديم إحدى قيم 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 والإصدارات الأحدث الإصدار 4.4 من نظام التشغيل Android والإصدارات الأقدم
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 ‎(@hide) STREAM_BLUETOOTH_SCO
FLAG_AUDIBILITY_ENFORCED ‎(@hide) STREAM_SYSTEM_ENFORCED
CONTENT_TYPE_SONIFICATION
USAGE_VOICE_COMMUNICATION_SIGNALLING
‎(@hide) 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
  • STREAM_ACCESSIBILITY

لمزيد من التفاصيل، يُرجى الاطّلاع على الصوت في المركبات.