صدای بلوتوث کم‌مصرف

«بلوتوث کم‌مصرف صوتی» (LEA) تضمین می‌کند که کاربران می‌توانند صدای با وفاداری بالا را بدون فدا کردن عمر باتری دریافت کنند و به آن‌ها اجازه می‌دهد به‌طور یکپارچه بین موارد استفاده مختلف جابه‌جا شوند. Android 13 (سطح میانای برنامه‌سازی کاربردی ۳۳) شامل پشتیبانی داخلی برای LEA است.

اکثر هدست‌های LEA تا زمانی که سهم بازار دستگاه منبع LEA رشد کند، در حالت دوگانه خواهند بود. کاربران باید بتوانند هر دو انتقال را در هدست‌های حالت دوگانه خود جفت و راه‌اندازی کنند.

موارد استفاده

ممکن است بخواهید LEA را برای موارد استفاده زیر ادغام کنید:

  • هم‌رسانی صدا: کاربران می‌توانند به‌طور هم‌زمان چندین جاری‌سازی صوتی را با یک یا چند دستگاه گیرنده صدا هم‌رسانی کنند. صدا بین دستگاه منبع و دستگاه‌های متصل‌شده همگام‌سازی می‌شود.

  • همه‌فرستی صوتی: کاربران می‌توانند صدا را برای دوستان و خانواده همه‌فرستی کنند و درعین‌حال برای دریافت اطلاعات، سرگرمی، یا دسترس‌پذیری به همه‌فرستی‌های عمومی متصل شوند.

  • پشتیبانی از کدک صوتی LC3: این کدک صوتی پیش‌فرض است و جایگزین کدک SBC مورداستفاده برای A2DP (رسانه) و mSBC در HFP (صدا) می‌شود. LC3 کارآمدتر، قابل‌پیکربندی مجدد، و با کیفیت بالاتر است.

  • بهبودهای نمونه‌برداری صوتی: هدست‌ها می‌توانند کیفیت صدای خروجی بالا را هنگام استفاده از میکروفون حفظ کنند. بلوتوث کلاسیک هنگام استفاده از میکروفون‌های بلوتوث، کیفیت صدا را کاهش می‌دهد. با «صدای بلوتوث کم‌مصرف»، نمونه‌برداری ورودی و خروجی می‌تواند به ۳۲ کیلوهرتز برسد.

  • میکروفون استریو: دستگاه‌های شنیدنی می‌توانند با میکروفون‌های استریو صدا ضبط کنند تا بهبودهای صدای فضایی را ارائه دهند.

  • پشتیبانی از «نمایه سمعک» (HAP): ‏HAP نسبت‌به پروتکل‌های قبلی ASHA، دسترس‌پذیری و کاربرد بیشتری به کاربران ارائه می‌دهد. کاربران می‌توانند از سمعک خود برای تماس‌های تلفنی و برنامه‌های VoIP استفاده کنند.

  • پشتیبانی از پروتکل مشخصه بهبودیافته (EATT): با EATT می‌توانید چندین فرمان را به‌طور هم‌زمان به دستگاه‌های شنیداری جفت‌شده ارسال کنید.

سناریوهای کلیدی

چهار دسته اصلی برای موارد استفاده وجود دارد:

  1. مکالمه‌ای: برنامه‌های شماره‌گیر و VoIP که به مسیریابی ارتباطات با تأخیر کم نیاز دارند، صدای باکیفیت و مصرف باتری کمتری ارائه می‌دهند.

  2. بازی: میکروفون هم‌زمان و بازپخش با وفاداری بالا به بازی‌ها امکان می‌دهد صدای باکیفیت بالا را به دستگاه‌های شنیدنی جاری‌سازی کنند. برنامه بازی می‌تواند به ورودی صوتی BLE دسترسی داشته باشد وقتی بازی میکروفون بلوتوث را به‌عنوان آماده استفاده فعال می‌کند. سپس، وقتی بازیکن مکالمه‌ای زنده با بازیکن هم‌رده شروع می‌کند، برنامه بازی می‌تواند بدون تأخیر از داده‌های میکروفون استفاده کند.

  3. رسانه: برنامه‌های رسانه می‌توانند دستگاه ترجیحی مدیر صدا را تنظیم کنند. کاربر می‌تواند با تغییر دستگاه ترجیحی خود از درون تنظیمات سیستم، این مورد را لغو کند.

  4. دسترس‌پذیری: سمعک‌هایی که از «صدای BLE» پشتیبانی می‌کنند می‌توانند از میکروفون استفاده کنند، و به کاربران اجازه می‌دهند به‌طور مداوم از سمعک خود برای تماس استفاده کنند.

میاناهای برنامه‌سازی کاربردی و روش‌های BLE Audio

میاناهای برنامه‌سازی کاربردی و روش‌های زیر برای پشتیبانی از سمعک‌های مجهز به «صدای بلوتوث کم‌مصرف» لازم است:

AudioManager

  • setCommunicationDevice() دستگاه صوتی‌ای را که باید برای موارد استفاده ارتباطی (مثلاً تماس‌های صوتی یا تصویری) استفاده شود انتخاب می‌کند. برنامه‌های گپ صوتی یا تصویری می‌توانند از این روش برای انتخاب دستگاه صوتی دیگری غیراز دستگاهی که به‌طور پیش‌فرض توسط پلاتفرم انتخاب شده است استفاده کنند. این میانای برنامه‌سازی کاربردی جایگزین میاناهای برنامه‌سازی کاربردی منسوخ‌شده زیر می‌شود: startBluetoothSco()، stopBluetoothSco()، و setSpeakerphoneOn().
  • clearCommunicationDevice() پس‌از اینکه برنامه‌تان تماس یا جلسه‌ای را به‌پایان می‌رساند فراخوانی می‌شود تا اطمینان حاصل شود که کاربر هنگام جابه‌جایی بین برنامه‌های مختلف تجربه خوبی دارد.

BluetoothProfile

  • BluetoothLeAudio سرویس بلوتوث را بااستفاده از شیء پراکسی کنترل می‌کند.

Telecom InCallService

  • InCallService.requestCallEndpointChange() جایگزین میاناهای برنامه‌سازی کاربردی منسوخ‌شده InCallService.setAudioRoute() و InCallService.requestBluetoothAudio() می‌شود و به برنامه‌ها اجازه می‌دهد مسیریابی صوتی به CallEndpoint خاصی را درخواست کنند. مشتریان نباید هنگام درخواست تغییر، CallEndpoint خودشان را تعریف کنند. درعوض، نقطه پایانی جدید باید یکی از نقاط پایانی معتبر ارائه‌شده توسط InCallService.onAvailableCallEndpointsChanged(java.util.List) باشد.
  • CallEndpoint.TYPE_BLUETOOTH جاری‌سازی صوتی را ازطریق بلوتوث هدایت می‌کند.
  • این میاناهای برنامه‌سازی کاربردی InCallService برای استفاده توسط برنامه تلفن پیش‌فرض در تلفن یا سایر سطوح تماس مانند دستگاه‌های پوشیدنی، خودروها، یا سایر دستگاه‌های بلوتوث که ممکن است بخواهند بر مسیریابی صدا تأثیر بگذارند طراحی شده‌اند.

Telecom CallControl

اطلاعات دستگاه صوتی

  • AudioDeviceInfo.TYPE_BLE_HEADSET نوع دستگاه صوتی را به‌عنوان دستگاه LEA توصیف می‌کند. برای شناسایی اینکه آیا دستگاه شنیدنی دستگاه LEA است یا نه استفاده می‌شود.

ضبط‌کننده صدا

  • setPreferredDevice() دستگاه برگزیده را برای استفاده در مسیریابی صوتی تنظیم می‌کند. کاربر می‌تواند این تنظیم را در تنظیمات سیستم لغو کند.

آداپتور بلوتوث

  • isLeAudioSupported(): ثابت @BluetoothStatusCodes (FEATURE_SUPPORTED، FEATURE_NOT_SUPPORTED، یا کد خطا) را برمی‌گرداند که نشان می‌دهد آیا سخت‌افزار دستگاه از «صدای کم‌مصرف» پشتیبانی می‌کند یا نه.
  • isLeAudioBroadcastSourceSupported(): یک ثابت @BluetoothStatusCodes (FEATURE_SUPPORTED، FEATURE_NOT_SUPPORTED، یا کد خطا) برمی‌گرداند که نشان می‌دهد آیا سخت‌افزار دستگاه از منبع همه‌فرستی «صدای کم‌مصرف» پشتیبانی می‌کند یا نه.

راهنماها براساس مورد استفاده

در زیر دستورالعمل‌هایی برای پیاده‌سازی LEA براساس موارد استفاده خاص ارائه شده است.

برنامه‌های ارتباط صوتی

برنامه‌های ارتباط صوتی می‌توانند مسیریابی صوتی و وضعیت دستگاه را با مدیریت خودکار وضعیت خود یا بااستفاده از Telecom API مدیریت کنند که مسیریابی صوتی و منطق وضعیت را برای شما انجام می‌دهد.

این دو راهکار به شما امکان می‌دهد مسیریابی صوتی را کنترل کنید و بین دستگاه‌های بلوتوث جابه‌جا شوید. برای اطلاعات بیشتر، به راهنمای تماس‌های مدیریت‌شده Telecom مراجعه کنید.

برنامه‌های ضبط صدا

  • ضبط‌کننده رسانه: هنگام ضبط صدا بااستفاده از «ضبط‌کننده رسانه»، اگر دستگاه شنیداری بلوتوث از LEA پشتیبانی کند، می‌توانید صدا را به‌صورت استریو ضبط کنید. برای اطلاعات بیشتر، راهنمای ضبط صدا را ببینید.

توصیه‌های هدست

با انتشار هدست‌های LEA بیشتر، در آزمایش‌های دنیای واقعی متوجه مشکلاتی شده‌ایم که تجربه کاربری را تضعیف می‌کند. مشخصات همه این مشکلات را پوشش نمی‌دهد. جدول زیر فهرستی از توصیه‌هایی را ارائه می‌دهد که سازندگان هدست LEA باید برای بهبود تجربه سرتاسری کاربران Android دنبال کنند.

شرح بافت
پشتیبانی از Cross Transport Key Derivation (CTKD) برای هدست‌های دومودی:
  • پشتیبانی از مشتق کلید برای جفت‌سازی «کلاسیک به کم‌مصرف» و جفت‌سازی «کم‌مصرف به کلاسیک».
اکثر هدست‌های جدید LEA تا زمانی که سهم بازار دستگاه منبع LEA رشد کند، درحالت دوگانه خواهند بود. مهم است که کاربران بتوانند هدست‌های دومودی خود را به‌طور یکپارچه جفت کنند و هر دو انتقال را راه‌اندازی کنند. این موضوع برای «جفت‌سازی سریع Google» نیز مهم است.

اگر می‌خواهید هدست‌های LEA شما به‌طور مطمئن به دستگاه‌های منبع متصل شوند، از اعلان‌های هدفمند (TA) پشتیبانی کنید.

هدفون‌های توگوشی دارای صدای کم‌مصرف باید از TA برای درخواست اتصال ورودی از دستگاه‌های مرکزی استفاده کنند.

به BT SIG آینده اضافه خواهد شد.

برخلاف مدل صفحه‌بندی BR/EDR که در آن اتصال می‌تواند توسط تلفن یا هدست آغاز شود، اتصال در LEA باید توسط دستگاه مرکزی آغاز شود. بسیاری‌از هدست‌ها از نشانی هدف استفاده نمی‌کنند، یعنی ممکن است دستگاه مرکزی نتواند بدون افزودن دستگاه جانبی به «فهرست مجاز»، دوباره به آن متصل شود. بااین‌حال، راه‌حل فهرست مجاز ممکن است مانع از اتصال هدست به دستگاه مرکزی دیگری شود. بنابراین، مهم است که هدست‌های LEA از TA به‌درستی پشتیبانی کنند تا دستگاه مرکزی بتواند بدون راه‌حل‌های موقتی که ممکن است اتصالات چندنقطه‌ای را قطع کند، به‌طور مطمئن دوباره متصل شود.
بهینه‌سازی قابلیت شناسایی برای هدفون‌های توگوشی حالت دوگانه
  • هدفون توگوشی اصلی - مؤلفه BR/EDR باید بااستفاده از نشانی عمومی‌اش آگهی پخش کند و اسکن صفحه و پرس‌وجو را با نامش که ازطریق EIR دردسترس است فعال کند، و بیت ۱۴ صدای LE را در «کلاس‌های سرویس اصلی» «کلاس دستگاه» (CoD) روی ۱ تنظیم کند.
  • هدفون توگوشی اصلی - مؤلفه LE: هدفون توگوشی اصلی باید بااستفاده از همان «نشانی عمومی» مؤلفه BR/EDR و همان «نام محلی کامل» مؤلفه BR/EDR، آگهی «قابل‌اتصال» و «قابل‌شناسایی» (محدود یا عمومی) انجام دهد و «دسته ظاهر» آن به‌عنوان «دسته ظاهر» مناسبی تنظیم شود که با نوع دستگاه راه دور مطابقت داشته باشد و انتظار می‌رود دستگاه مرکزی از این اطلاعات برای تنظیم میانای کاربر و خط‌مشی‌های مسیریابی صوتی خود استفاده کند.
  • هدفون توگوشی ثانویه - فقط LE: هدفون توگوشی ثانویه باید آگهی «قابل‌اتصال، غیرقابل‌شناسایی» را با «دسته ظاهر» تنظیم‌شده به‌عنوان «دسته ظاهر» مناسب که با نوع دستگاه ازراه‌دور مطابقت دارد انجام دهد، با این انتظار که دستگاه مرکزی از این اطلاعات برای تنظیم میانای کاربر و خط‌مشی‌های مسیریابی صدا استفاده خواهد کرد

    هدفون‌های توگوشی باید به‌طور پویا یک رهبر از گروه CSIP انتخاب کنند تا دستگاه اصلی باشد. اگر هدفون توگوشی حالت دوگانه داشته باشد، دستگاه اصلی باید حالت دوگانه داشته باشد تا مطمئن شوید که هر دو عملکرد «کم‌مصرف» و «کلاسیک» پس‌از جفت‌سازی به‌درستی کار می‌کنند.

این کار از نمایش هدفون‌های توگوشی LEA دومودی به‌صورت ورودی‌های تکراری در تنظیمات بلوتوث جلوگیری می‌کند، که ممکن است باعث سردرگمی کاربران شود و تجربه جفت‌سازی LEA را به‌خطر بیندازد.

انتخاب رهبر پویا به‌ویژه برای دستگاه‌های دومودی که به‌صورت افزایشی جفت می‌شوند مهم است. برای مثال، اگر فقط یک هدفون توگوشی در جفت‌سازی اولیه دردسترس باشد، باید خود را به‌عنوان دستگاه دوحالته معرفی کند. وقتی کاربر بعداً با هدفون توگوشی دوم جفت می‌شود، فقط باید با مؤلفه «صدای کم‌مصرف» جفت شود و CSIP مطمئن می‌شود که آن‌ها در Android باهم گروه‌بندی می‌شوند.

توصیه می‌شود درطول جفت‌سازی از نشانی هویت استفاده شود زیرا مؤلفه BR/EDR ازقبل نشانی عمومی دستگاه را برای دستگاه‌های اطراف نمایان می‌کند.

از پروتکل مشخصه بهبودیافته (EATT) پشتیبانی می‌کند. تأخیر جفت‌سازی و اتصال را کاهش می‌دهد.
پشتیبانی از ذخیره‌سازی GATT در حافظه نهان Robust. تأخیر اتصال را کاهش می‌دهد، به‌ویژه برای هدفون‌های توگوشی TWS.
پشتیبانی از رده‌بندی فرعی اتصال. امکان زمان‌بندی بسته‌ای انعطاف‌پذیرتر و صرفه‌جویی احتمالی در مصرف باتری را فراهم می‌کند.
مطمئن شوید که درطول پیش‌پردازش و پس‌پردازش برای بازپخش و ضبط، خط لوله پردازش سیگنال بتواند در فرکانس‌های ۱۶، ۲۴، ۳۲، و ۴۸ کیلوهرتز کار کند و از فرکانس‌های بالاتر نیز پشتیبانی کند. از نرخ‌های نمونه‌برداری بالاتر پشتیبانی‌شده برای تماس LEA یا مسیرهای ضبط VoIP و بازپخش رسانه بهره می‌برد.
پشتیبانی از کنترل توان LE مدیریت بهتر مصرف برق

پشتیبانی از نوع بافت

شرح بافت
از همه انواع بافت مشخص‌شده در Assigned Numbers 6.12.3 استفاده کنید، مگراینکه هدست صریحاً از نوع بافت خاصی پشتیبانی نکند. برای مثال، اگر نوع بافت «بازی» پشتیبانی نشود، Android صداهای بازی را ارسال خواهد کرد. به‌ویژه توجه داشته باشید که نوع بافت «نامشخص» به‌معنای «هر نوع بافت» نیست و انواع بافت پشتیبانی‌نشده را پوشش نمی‌دهد.

وقتی دستگاه مرکزی با ASCS دستگاه جانبی تعامل برقرار می‌کند، دستگاه جانبی باید به MCS و TBS دستگاه مرکزی متصل شود.

دستگاه مرکزی ممکن است همیشه از LE Audio به‌عنوان مسیر جاری‌سازی استفاده نکند زیرا ممکن است به استفاده از A2DP یا HFP برگردد. دستگاه جانبی می‌تواند از تعامل ASCS به‌عنوان نشانه‌ای برای اینکه آیا دستگاه مرکزی از صدای کم‌مصرف برای جاری‌سازی استفاده خواهد کرد یا نه استفاده کند.

چند نمونه از تعاملات ASCS عبارتند از خواندن، نوشتن، و ثبت‌نام برای اعلان.

توصیه‌های فرستنده Auracast

این بخش توصیه‌هایی برای پیکربندی فرستنده‌های Auracast ارائه می‌دهد.

همه‌فرستی‌های متناوب

اعلامیه‌های صوتی در فضاهای عمومی، مانند پایانه‌های حمل‌ونقل عمومی، اغلب متناوب هستند و با دوره‌های طولانی سکوت از هم جدا می‌شوند. جاری‌سازی مداوم سکوت یا صدای پس‌زمینه بین اعلان‌ها باعث هدر رفتن شارژ باتری گیرنده می‌شود و مانع از گوش دادن کاربران به جاری‌سازی صوتی اصلی‌شان، مانند رسانه محلی یا جاری‌سازی فعال Auracast دیگر، می‌شود.

برای بهبود تجربه کاربری، Android توصیه می‌کند که فرستنده‌های Auracast از دستورالعمل‌های زیر برای مدیریت همه‌فرستی‌های متناوب پیروی کنند.

تعاریف

  • صدای موردعلاقه: محتوای اطلاعاتی اصلی که برای کاربر درنظر گرفته شده است، مثل اعلامیه گیت یا قطار.
  • صدای پس‌زمینه: سکوت پس‌زمینه، پارازیت، یا موسیقی محیطی که بین دوره‌های «صدای موردنظر» منتقل می‌شود.
  • همه‌فرستی متناوب: همه‌فرستی‌ای که بین دوره‌های «صدای موردنظر» و دوره‌های «صدای پس‌زمینه» یا بدون صدا به‌طور متناوب تغییر می‌کند.

شناسایی همه‌فرستی‌های متناوب

برای تعیین یک همه‌فرستی به‌عنوان همه‌فرستی متناوب، همه‌فرست باید ساختار LTV (طول-نوع-مقدار) فراداده Audio_Active_State [۱] را در دو مکان قرار دهد:

  1. فراداده سطح ۲ ساختار BASE (آگهی‌های دوره‌ای) [۲]
  2. فراداده اعلان همه‌فرستی عمومی (آگهی‌های گسترده) [۳]

برای کمک به گیرنده در شناسایی «پخش متناوب» و تصمیم‌گیری درباره اینکه جاری‌سازی را پخش کند یا نه، پخش‌کننده باید ساختار LTV فراداده Streaming_Audio_Context را نیز به‌درستی تنظیم کند [۱].

شناسایی صدای موردنظر

برای سیگنال‌دهی پویا درباره اینکه آیا «همه‌فرستی متناوب» در هر زمان معین حاوی «صدای موردنظر» است یا نه، فرستنده از ساختارهای LTV فراداده Audio_Active_State استفاده می‌کند.

  • فراداده سطح ۲ ساختار BASE: مقدار 0x01 نشان می‌دهد که BISها در یک زیرگروه حاوی «صدای موردعلاقه» هستند.
  • فراداده اعلامیه پخش عمومی: مقدار 0x01 نشان می‌دهد که حداقل یکی از BISها در BIG حاوی «صدای موردعلاقه» است.

مقادیر LTV فراداده Audio_Active_State باید کمی قبل‌از انتقال Audio-of-Interest روی 0x01 تنظیم شود تا دستگاه اسکن‌کننده بتواند با «منبع همه‌فرستی عمومی» همگام‌سازی شود. برعکس، باید کمی بعداز پایان انتقال روی 0x00 تنظیم شود.

بهره‌برداری از بافت جاری‌سازی صوتی

ارائه بافت صریح به چارچوب Android و دستگاه‌های گیرنده کمک می‌کند جریان‌های ورودی را اولویت‌بندی کنند. برای مثال، سیستم بلندگوی عمومی (PA) ممکن است نوع Streaming_Audio_Context را روی «آموزشی» تنظیم کند تا اعلان‌ها بتوانند به‌طور تمیز بازپخش رسانه محلی گیرنده را قطع کنند و پس‌از آن به‌طور یکپارچه آن را ازسر بگیرند.

مرجع‌ها

[1] Bluetooth Assigned Numbers، https://www.bluetooth.com/specifications/assigned-numbers/
[2] Basic Audio Profile، https://www.bluetooth.com/specifications/specs/basic-audio-profile-1-0-3/
[3] Public Broadcast Profile، https://www.bluetooth.com/specifications/specs/public-broadcast-profile-1-0-2/