بلوتوث کم انرژی

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

پیاده‌سازی

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

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

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

اسکن BLE

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

اسکن موقعیت مکانی

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

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

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

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

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

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

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

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

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

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