اعتبارًا من 27 آذار (مارس) 2025، ننصحك باستخدام android-latest-release بدلاً من aosp-main لإنشاء AOSP والمساهمة فيه. لمزيد من المعلومات، يُرجى الاطّلاع على التغييرات في AOSP.
تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يقدّم نظام التشغيل Android 14 واجهات برمجة تطبيقات للمطوّرين
يمكن للتطبيقات استخدامها لطلب سمات أداة المزج المفضّلة وضبطها لتشغيل محتوى صوتي عبر USB. تعمل سمات أداة المزج المفضّلة
هذه على تحسين تجربة تشغيل الصوت عبر USB من خلال السماح للتطبيقات بضبط تنسيق الصوت،
وماسك القناة، ومعدّل أخذ العينات، وسلوك أداة المزج. باستخدام واجهات برمجة تطبيقات أدوات التحكم المفضّلة
على أجهزة USB المتوافقة، يمكن للمستخدمين تشغيل الصوت بوقت استجابة أقل
ومحتوى صوتي بدرجة دقة أعلى.
توفّر هذه الميزة أيضًا إمكانية استخدام سلوك أدوات مختلطة للتشغيل بدقة بت واحد
اختياري لأجهزة USB. يتيح وضع "الدقة الكاملة للبت" تشغيل التنسيقَين master
quality authenticated (MQA) وdirect stream digital (DSD) على
محوِّلات رقمية إلى تناظرية (DAC) متوافقة.
الواجهة
يعالج "مدير سياسة الصوت" سمات أداة المزج في إطار العمل. تمثّل فئة
AudioMixerAttributes
سمات أداة المزج. تتضمّن فئة AudioMixerAttributes عنصرًا
AudioFormat
يصف تنسيق بيانات الصوت وقناع القناة ومعدّل أخذ العينات
للمحوِّل. يحدِّد إطار العمل تلقائيًا سلوك أداة المزج التي تجمع
جميع مصادر الصوت وتطبّق عناصر التحكّم في الصوت والتأثيرات.
إذا كان سلوك أداة المزج يستخدم وضع BIT_PERFECT، يرسل النظام محتوى
الصوت بدون تعديل من خلال إطار عمل الصوت وHAL ومعالج الإشارات الرقمية (DSP) اختياريًا، من واجهة برمجة التطبيقات إلى جهاز USB. يتيح وضع
BIT_PERFECT التنسيقات المشفّرة، مثل MQA أو DSD، والتي يمكن أن يؤدي فيها أي
تكبير أو تصغير في مستوى الصوت أو مزج إلى تدمير معنى البيانات.
عندما تضبط التطبيقات سمات أداة المزج، يعيد إطار العمل فتح بث الإخراج
مع سمات جديدة، إذا لزم الأمر. يوضّح الشكل التالي الواجهة بين
التطبيق والإطار وHAL عند ضبط سمات أداة المزج:
الشكل 1: واجهة بين التطبيق والإطار وHAL
التنفيذ
إنّ تنفيذ سمات أداة المزج المفضّلة، باستثناء سمة BIT_PERFECT
، لصوت USB إلزامي في الإصدار 14 من نظام التشغيل Android.
سمات أداة المزج المفضّلة
لتفعيل سمات أداة المزج المفضّلة، على المورّدين تفعيل توجيه أجهزة USB
إلى منفذ المزج الديناميكي، على النحو التالي:
سمة تشغيل المحتوى بدقة النقطة والفاصل هي سمة اختيارية ولا تتوفّر إلا في تنفيذ AIDL
لواجهة HAL للصوت. لدعم تشغيل المحتوى بدقة بت، على المورّدين
إضافة علامة الإخراج بدقة بت AUDIO_OUTPUT_FLAG_BIT_PERFECT إلى منفذ المزيج الديناميكي
الذي يمكن توجيهه إلى جهاز USB.
يوضّح نموذج الرمز البرمجي التالي استخدام AUDIO_OUTPUT_FLAG_BIT_PERFECT
العلامة في usb_audio_policy_configuration.xml:
في حال تحديد سمة التشغيل بدقة البت، يجب أن يضمن HAL إرسال مجرى البث الصوتي إلى جهاز USB بدون أي تعديل، أي أنّ مجرى البث الصوتي يجب ألا يتضمّن أيّ تغيير في مستوى الصوت أو تحويل معدل أخذ العينات أو تأثيرات معالجة الصوت، ويجب عدم مزجه في وحدة معالجة الإشارات الرقمية (DSP).
في هذه الحالة، يتحكّم الجهاز في مستوى الصوت لأنّ الإطار الأساسي لا يقدّم
أيّ عنصر تحكّم في مستوى الصوت من خلال البرامج.
للتحقّق من صحة تنفيذ السمة BIT_PERFECT، استخدِم محوِّلات رقمية إلى تناظرية (DAC) USB التي تسمح باستخدام تنسيقَي MQA وDSD بدلاً من تنسيقات الصوت التي تستخدم تعديل نبضات الترميز (PCM).
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-07-26 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Preferred mixer attributes on USB devices\n\nAndroid 14 provides [developer APIs](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nthat apps can use to query and configure preferred mixer attributes for USB\naudio playback. These [preferred mixer attributes](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/media/java/android/media/AudioMixerAttributes.java)\nimprove the USB audio playback experience by letting apps set the audio format,\nchannel mask, sample rate, and mixer behavior. With the use of the preferred\nmixer APIs on supported USB devices, users can get lower-latency audio playback\nand higher-resolution audio content.\n\nThis feature also provides support for the optional bit-perfect playback mixer\nbehavior for USB devices. The bit-perfect mode enables playback for master\nquality authenticated (MQA) and direct stream digital (DSD) formats on\ncompatible digital to analog converters (DACs).\n\nInterface\n---------\n\nThe Audio Policy Manager handles the mixer attributes in the framework. The\n[`AudioMixerAttributes`](https://developer.android.com/reference/android/media/AudioMixerAttributes)\nclass represents the mixer's attributes. The `AudioMixerAttributes` class includes an\n[`AudioFormat`](https://developer.android.com/reference/android/media/AudioFormat)\nobject that describes the audio data format, channel mask, and sample rate for\nthe mixer. By default, the framework determines the mixer behavior, which mixes\nall audio sources and applies volume control and effects.\n\nIf the mixer behavior uses `BIT_PERFECT` mode, the system sends the audio\ncontent without modification through the audio framework, HAL and optionally\ndigital signal processor (DSP), from the API down to the USB device. The\n`BIT_PERFECT` mode supports encoded formats, such as MQA or DSD, on which any\nvolume scaling or mixing can destroy the meaning of the data.\n\nWhen apps configure mixer attributes, the framework reopens the output stream\nwith new attributes, if needed. The following figure shows the interface between\nthe app, framework, and the HAL when mixer attributes are set:\n\n**Figure 1.** Interface between the app, framework, and HAL.\n\nImplementation\n--------------\n\nImplementation of preferred mixer attributes, other than the `BIT_PERFECT`\nattribute, for USB audio is mandatory for Android 14.\n\n### Preferred mixer attributes\n\nTo support preferred mixer attributes, vendors must support routing USB devices\nto the dynamic mix port, as follows:\n\n1. Define the dynamic mix port in [`usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n\n2. Declare the ability to route USB devices to dynamic mix ports either in\n [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml)\n or in the [`getAudioPorts`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=267) and [`getAudioRoutes`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/interfaces/audio/aidl/android/hardware/audio/core/IModule.aidl;drc=0abca2170b9e49c23f511ff1a6a99e5db8ab4104;l=279) AIDL methods.\n\n| **Note:** If the USB audio functionality is migrated to the primary HAL, define the dynamic mix port and USB audio routing in the [audio policy configuration](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/audio_policy_configuration.xml) file for your primary HAL.\n\nSee the reference implementation for the USB audio HAL under [`hardware/libhardware/modules/usbaudio`](https://cs.android.com/android/platform/superproject/+/android-latest-release:hardware/libhardware/modules/usbaudio/).\nSee an example of a dynamic mix port in [`frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml`](https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml).\n| **Note:** Only USB devices are allowed to set preferred mixer attributes.\n\n### Bit-perfect playback attribute\n\nThe bit-perfect playback attribute is optional and is supported only in the AIDL\nimplementation of the Audio HAL. To support bit-perfect playback, vendors must\nadd the bit-perfect output flag `AUDIO_OUTPUT_FLAG_BIT_PERFECT` to the dynamic\nmix port that can be routed to the USB device.\n\nThe following code sample shows the use of the `AUDIO_OUTPUT_FLAG_BIT_PERFECT`\nflag in `usb_audio_policy_configuration.xml`: \n\n \u003cmodule name=\"usb\" halVersion=\"2.0\"\u003e\n \u003cmixPorts\u003e\n \u003cmixPort name=\"hifi_output\"\n role=\"source\" flags=\"AUDIO_OUTPUT_FLAG_BIT_PERFECT\"\u003e\n \u003c/mixPort\u003e\n \u003c/mixPorts\u003e\n \u003cdevicePorts\u003e\n \u003cdevicePort tagName=\"USB Device Out\"\n type=\"AUDIO_DEVICE_OUT_USB_DEVICE\" role=\"sink\"\u003e\n \u003c/devicePort\u003e\n \u003c/devicePorts\u003e\n \u003croutes\u003e\n \u003croute type=\"mix\" sink=\"USB Device Out\"\n sources=\"hifi_output\"/\u003e\n \u003c/routes\u003e\n \u003c/module\u003e\n\nIf the bit-perfect playback attribute is specified, the HAL must ensure that the\naudio stream is sent to the USB device without any modification, that is, the\naudio stream must not have any volume scaling, sample rate conversion, or audio\nprocessing effects and must not be mixed in the DSP.\nIn this case, the hardware controls the volume as the framework doesn't provide\nany software volume control.\n| **Note:** Without the bit-perfect playback attribute, apps can't stream high-resolution content, such as DSD and MQA, through the audio framework.\n\nValidation\n----------\n\nRun the CTS tests in\n[`PreferredMixerAttributesTestActivity.java`](https://android.googlesource.com/platform/cts/+/refs/heads/android16-release/apps/CtsVerifier/src/com/android/cts/verifier/audio/PreferredMixerAttributesTestActivity.java)\nto validate support for preferred mixer attributes for USB devices.\n\nTo validate the implementation of the `BIT_PERFECT` attribute, use USB DACs that\nsupport MQA and DSD over pulse-code modulation (PCM) audio formats."]]