بلوتوث کم‌مصرف

«بلوتوث کم‌مصرف» (BLE) که در Android 4.3 و نسخه‌های بالاتر دردسترس است، اتصال‌های کوتاهی بین دستگاه‌ها ایجاد می‌کند تا دسته‌های داده را منتقل کند. وقتی متصل نیست، BLE در حالت خواب باقی می‌ماند. این ویژگی به BLE اجازه می‌دهد پهنای باند کمتر و مصرف برق کمتری نسبت‌به بلوتوث کلاسیک ارائه دهد. ‫BLE برای برنامه‌هایی مثل پایشگر ضربان قلب یا صفحه‌کلید بی‌سیم ایده‌آل است. برای استفاده از BLE، دستگاه‌ها باید چیپ‌ستی داشته باشند که از BLE پشتیبانی کند.

پیاده‌سازی

همه نمایه‌های برنامه BLE کنونی براساس نمایه ویژگی عمومی (GATT) است. وقتی دستگاهی با سیستم‌عامل Android با دستگاه BLE تعامل می‌کند، دستگاهی که اطلاعات را ارسال می‌کند سرور است و دستگاهی که اطلاعات را دریافت می‌کند کارخواه است. ‫Android شامل میاناهای برنامه‌سازی کاربردی توسعه‌دهنده برای BLE، ازجمله میاناهای برنامه‌سازی کاربردی برای تعامل بین سرورهای GATT و مشتریان GATT است. برای بهره‌مندی کامل از «میاناهای برنامه‌سازی کاربردی بلوتوث کم‌مصرف»، ملزومات Android Bluetooth HCI را پیاده‌سازی کنید.

حالت‌های دستگاه

هنگام استفاده از BLE، دستگاه مجهز به Android می‌تواند به‌عنوان دستگاه جانبی، دستگاه مرکزی، یا هر دو عمل کند. حالت جانبی به دستگاه‌ها اجازه می‌دهد بسته‌های تبلیغاتی ارسال کنند. حالت مرکزی به دستگاه‌ها اجازه می‌دهد تبلیغات را اسکن کنند. دستگاه Android که هم به‌عنوان دستگاه جانبی و هم به‌عنوان دستگاه مرکزی عمل می‌کند می‌تواند درحالی‌که در حالت جانبی تبلیغات ارسال می‌کند با دیگر دستگاه‌های جانبی BLE ارتباط برقرار کند. دستگاه‌هایی که از «بلوتوث ۴.۱» و نسخه‌های پایین‌تر پشتیبانی می‌کنند فقط می‌توانند از «بلوتوث کم‌مصرف» در حالت مرکزی استفاده کنند. مجموعه تراشه‌های دستگاه‌های قدیمی‌تر ممکن است از حالت جانبی BLE پشتیبانی نکنند.

اسکن BLE

دستگاه مجهز به Android می‌تواند دستگاه‌های بلوتوث خاصی را هدف قرار دهد و آن‌ها را به‌طور مؤثرتری هنگام استفاده از BLE اسکن کند. میاناهای برنامه‌سازی کاربردی BLE به توسعه‌دهندگان نرم‌افزار اجازه می‌دهند فیلترهایی برای پیدا کردن دستگاه‌ها با دخالت کمتر ازسوی کنترل‌کننده میزبان ایجاد کنند.

اسکن مکان

خدمات مکان دستگاه می‌تواند از بلوتوث برای شناسایی چراغ‌های راهنمای بلوتوثی و ارائه مکان دقیق‌تر استفاده کند. کاربران به این روش ویژگی را فعال می‌کنند:

  1. به تنظیمات > امنیت و مکان > مکان بروید.
  2. بررسی کنید که دکمه روشن/خاموش مکان در وضعیت روشن باشد.
  3. به حالت بروید.
  4. حالت دقت بالا یا صرفه‌جویی در باتری را انتخاب کنید.

در Android 11 و نسخه‌های پایین‌تر، برنامه‌های جداگانه برای استفاده از اسکن BLE به اجازه‌های مکان نیاز دارند، حتی اگر فقط برای پیدا کردن دستگاه‌ها برای اتصال اسکن کنند. اگر کاربر اسکن مکان را غیرفعال کند یا اجازه‌های مکان برنامه را اعطا نکند، برنامه هیچ نتیجه‌ای از اسکن BLE دریافت نخواهد کرد.

در Android نسخه ۱۲ و بالاتر، اجازه‌های BLUETOOTH_SCAN، BLUETOOTH_ADVERTISE، و BLUETOOTH_CONNECT می‌توانند به برنامه‌ها اجازه دهند دستگاه‌های اطراف را بدون نیاز به درخواست اجازه مکان اسکن کنند. برای اطلاعات بیشتر، اجازه‌های بلوتوث را ببینید.

کاربران می‌توانند اسکن پس‌زمینه بلوتوث در سطح سیستم را با رفتن به تنظیمات > امنیت و مکان > مکان > اسکن و کلیک کردن روی کلید اسکن بلوتوث برای خاموش کردن آن غیرفعال کنند. این کار بر اسکن BLE برای مکان یا دستگاه‌های محلی تأثیر نمی‌گذارد.

فیلتر کردن نتایج اسکن

‫Android نسخه ۶.۰ و بالاتر شامل اسکن BLE و تطبیق فیلتر در کنترل‌کننده بلوتوث است. دستگاه می‌تواند نتایج اسکن را فیلتر کند و رویدادهای پیداشده و گم‌شده مربوط به دستگاه‌های BLE را به پردازنده برنامه (AP) گزارش کند. فیلتر کردن برای اسکن‌های دسته‌ای نیز کار می‌کند که به صرفه‌جویی در انرژی کمک می‌کند زیرا دستگاه اسکن BLE را به میان‌افزار واگذار می‌کند. اسکن دسته‌ای تعداد دفعاتی را که نقطه دسترسی به‌دلیل اسکن کردن دستگاه‌ها یا فرستنده‌های BLE بیدار می‌شود کاهش می‌دهد.

ویژگی OnFound/OnLost در کنترل‌کننده بلوتوث پیاده‌سازی می‌شود و سپس آزمایش می‌شود تا تأیید شود که دستگاه‌های BLE در اسکن‌ها ازدست نمی‌روند. این ویژگی باعث صرفه‌جویی در مصرف انرژی می‌شود و همچنین می‌تواند مزایای زیر را ارائه دهد:

  • برای رویداد OnFound، AP اصلی با شناسایی دستگاه خاصی بیدار می‌شود.
  • برای رویداد OnLost، وقتی دستگاه خاصی پیدا نشود، نقطه دسترسی بیدار می‌شود.
  • وقتی دستگاهی در محدوده باشد، برنامه‌های چارچوب اعلان‌های ناخواسته کمتری دریافت می‌کنند.
  • اسکن‌های پیوسته به برنامه‌های چارچوب امکان می‌دهد وقتی دستگاه خارج از محدوده است مطلع شوند.

فیلتر اسکن می‌تواند براساس کشف آگهی‌های دستگاه باشد (رویداد OnFound). لایه Java می‌تواند پارامترهایی مثل اولین کشف (یا تعداد مشخصی از آگهی‌ها از زمان اولین کشف) را مشخص کند. فیلتر کردن BLE را بااستفاده از فرمان Advertising Packet Content Filter HCI پیاده‌سازی کنید.