به‌روزرسانی‌های API مسیریابی صوتی در Android 14 برای برنامه‌های VoIP

Android 14 به‌روزرسانی‌های API را همراه با تغییرات تجربه کاربر در رفتار مسیریابی صدا برای دستگاه‌های Bluetooth LE Audio (LEA) از جمله سمعک معرفی کرد. این تغییرات بر نحوه مدیریت انتخاب خروجی صدا توسط برنامه‌های VoIP تأثیر گذاشت. این سند اطلاعات ضروری را برای توسعه دهندگان فراهم می کند تا برنامه های VoIP خود را با این تغییرات تطبیق دهند و از تجربه کاربری یکپارچه اطمینان حاصل کنند.

تغییر رفتار در اندروید 14

  • مسیریابی دستگاه LEA: دستگاه‌های LEA اکنون به‌طور پیش‌فرض در تلفن‌های Pixel و AOSP فعال هستند. با این حال، برای شناسایی و انتخاب فعال دستگاه های LEA به عنوان خروجی صدا، برنامه ها باید از API های جدید معرفی شده در سطح API 31 استفاده کنند.
  • مسیریابی سمعک: قبلاً، صدا همیشه به طور پیش‌فرض روی سمعک قرار می‌گرفت، حتی اگر کاربر صریحاً هدفون را انتخاب کند. در اندروید 14، سمعک به عنوان یکی از گزینه های موجود خروجی صدا ارائه می شود که نیاز به انتخاب صریح توسط کاربر دارد.

دلیل تغییر

  • قبل از Android 12، هیچ API برای استفاده صریح از سمعک برای تماس وجود نداشت، که منجر به این شد که هنگام اتصال، صدا همیشه به سمعک تبدیل شود.
  • این موضوع تغییر سمعک به گوشی را بدون قطع کردن سمعک برای کاربران دشوار می کرد.
  • همین مسئله در مورد هدست های صوتی بلوتوث LE نیز صدق می کند.

برای رفع این چالش‌ها، اندروید 14 تغییراتی را برای برنامه‌های VoIP با کنترل بیشتر بر مسیریابی صدا و اطمینان از رفتار ثابت در لوازم جانبی بلوتوث ارائه کرد.

تغییرات کلیدی در اندروید 14

  • APIهای عمومی برای انتخاب مسیر: Android 12 AudioManager.setCommunicationDevice را معرفی کرد تا به برنامه‌ها اجازه دهد مسیرهای صوتی از جمله سمعک و دستگاه‌های LEA را مشخص کنند. با این حال، در اندروید 12 و 13، سمعک‌ها به‌عنوان دستگاه‌ها قابل مشاهده نبودند، و همین امر مفید بودن این API را محدود می‌کند.
  • قابلیت رویت سمعک: در اندروید 14، سمعک‌ها اکنون به‌عنوان دستگاه قابل مشاهده هستند و برنامه‌ها را قادر می‌سازد عناصر رابط کاربری را برای کاربران فراهم کنند تا خروجی صدای دلخواه خود را انتخاب کنند.
  • API Deprecations: چندین API مربوط به مسیریابی صدا در Android 14 منسوخ شده است. توسعه دهندگان باید به API های جدید معرفی شده در سطح 31 API مهاجرت کنند تا انتخاب خروجی صدا را به طور موثر مدیریت کنند.

اقدامات مورد نیاز توسعه دهنده

  • بسیار توصیه می شود: به کتابخانه Telecom Jetpack مهاجرت کنید. در صورت امکان، برنامه VoIP خود را به کتابخانه Telecom Jetpack برای مدیریت مسیریابی صوتی ساده منتقل کنید.
  • اگر مهاجرت امکان پذیر نیست، از setCommunicationDevice() یا آخرین APIها (ذکر شده در زیر) استفاده کنید.

API های منسوخ و جایگزین های آنها

در اندروید 14 منسوخ شده است API های جدید
AudioManager.isBluetoothScoOn() AudioManager.getCommunicationDevice()
AudioManager.isSpeakerphoneOn()
AudioManager.setSpeakerphoneOn() AudioManager.setCommunicationDevice()
AudioManager.startBluetoothSco()
AudioManager.stopBluetoothSco() AudioManager.clearCommunicationDevice()
Connection.getCallAudioState() جت پک:
CallControlScope.getAvailableEndpoints()
CallControlScope.getCurrentCallEndpoint()
CallControlScope#getIsMutedConnection.onMuteStateChanged()

پلتفرم:
CallEventCallback.onAvailableCallEndpointsChanged()
CallEventCallback.onCallEndpointChanged()
CallEventCallback.onMuteStateChanged()
Connection.onCallAudioStateChanged()
Connection.requestBluetoothAudio() جت پک:
CallControlScope#requestEndpointChange()

پلتفرم:
CallControl#requestCallEndpointChange()
Connection.setAudioRoute()