بلوتوث کم مصرف (BLE) که در اندروید 4.3 و بالاتر موجود است، اتصالات کوتاهی بین دستگاهها برای انتقال دادهها ایجاد میکند. وقتی BLE متصل نیست در حالت خواب باقی می ماند. این به BLE اجازه می دهد تا پهنای باند کمتر و مصرف انرژی کمتری را در مقایسه با بلوتوث کلاسیک ارائه دهد. برای برنامه هایی مانند مانیتور ضربان قلب یا صفحه کلید بی سیم ایده آل است. برای استفاده از BLE، دستگاهها باید چیپست داشته باشند که از BLE پشتیبانی کند.
پیاده سازی
تمام نمایه های فعلی برنامه BLE بر اساس نمایه ویژگی عمومی (GATT) است. هنگامی که یک دستگاه Android با یک دستگاه BLE تعامل دارد، دستگاهی که اطلاعات را ارسال می کند سرور و دستگاهی که اطلاعات را دریافت می کند مشتری است. Android شامل API های توسعه دهنده برای BLE است، از جمله API هایی برای تعامل بین سرورهای گات و کلاینت های گات. برای استفاده کامل از APIهای BLE، نیازمندیهای Android Bluetooth HCI را پیادهسازی کنید.
حالت های دستگاه
هنگام استفاده از BLE، یک دستگاه Android می تواند به عنوان یک دستگاه جانبی، یک دستگاه مرکزی یا هر دو عمل کند. حالت جانبی به دستگاه ها امکان می دهد بسته های تبلیغاتی را ارسال کنند. حالت مرکزی به دستگاه ها امکان می دهد تبلیغات را اسکن کنند. یک دستگاه Android که هم به عنوان یک دستگاه جانبی و هم به عنوان دستگاه مرکزی عمل می کند، می تواند در حین ارسال تبلیغات در حالت جانبی، با سایر دستگاه های جانبی BLE ارتباط برقرار کند. دستگاههایی که از بلوتوث 4.1 و نسخههای قبلی پشتیبانی میکنند، فقط میتوانند از BLE در حالت مرکزی استفاده کنند. چیپست های دستگاه های قدیمی ممکن است از حالت محیطی BLE پشتیبانی نکنند.
اسکن BLE
یک دستگاه اندرویدی میتواند هنگام استفاده از BLE، دستگاههای بلوتوث خاصی را هدف قرار داده و اسکن کند. API های BLE به توسعه دهندگان برنامه اجازه می دهند فیلترهایی را برای یافتن دستگاه هایی با دخالت کمتر کنترل کننده میزبان ایجاد کنند.
اسکن موقعیت مکانی
سرویسهای مکان دستگاه میتوانند از بلوتوث برای شناسایی چراغهای بلوتوث و ارائه مکان دقیقتر استفاده کنند. به این صورت است که کاربران این ویژگی را فعال می کنند:
- به تنظیمات > امنیت و مکان > مکان بروید.
- بررسی کنید که کلید روشن / خاموش موقعیت مکانی در موقعیت روشن باشد.
- به حالت بروید.
- حالت دقت بالا یا حالت ذخیره باتری را انتخاب کنید.
در Android 11 یا پایینتر، برنامههای جداگانه برای استفاده از اسکن BLE به مجوزهای مکان نیاز دارند، حتی اگر فقط برای یافتن دستگاههایی برای اتصال به آنها اسکن میکنند. اگر کاربر اسکن موقعیت مکانی را غیرفعال کند یا به برنامه مجوز مکان اعطا نکند، برنامه هیچ نتیجه اسکن BLE را دریافت نخواهد کرد.
از Android 12، مجوزهای BLUETOOTH_SCAN
، BLUETOOTH_ADVERTISE
، و BLUETOOTH_CONNECT
میتوانند به برنامهها اجازه دهند دستگاههای اطراف را بدون نیاز به درخواست مجوز مکان اسکن کنند. برای اطلاعات بیشتر، مجوزهای جدید بلوتوث در اندروید 12 را ببینید.
کاربران می توانند اسکن پس زمینه بلوتوث در سطح سیستم را با رفتن به تنظیمات > امنیت و مکان > مکان > اسکن و غیرفعال کردن کلید اسکن بلوتوث غیرفعال کنند. این روی اسکن BLE برای مکان یا دستگاه های محلی تأثیری ندارد.
نتایج اسکن را فیلتر کنید
Android 6.0 و بالاتر شامل اسکن BLE و تطبیق فیلتر در کنترلر بلوتوث است. یک دستگاه می تواند نتایج اسکن را فیلتر کرده و رویدادهای پیدا شده و گم شده مربوط به دستگاه های BLE را به پردازنده برنامه (AP) گزارش دهد. فیلتر کردن برای اسکنهای دستهای نیز کار میکند، که به صرفهجویی در مصرف انرژی کمک میکند، زیرا اسکن BLE در میانافزار بارگذاری میشود. اسکن های دسته ای تعداد دفعات بیدار شدن AP را به دلیل اسکن BLE برای دستگاه ها یا چراغ ها کاهش می دهد.
ویژگی OnFound
/ OnLost
در کنترلکننده بلوتوث پیادهسازی میشود و سپس آزمایش میشود تا تأیید شود که دستگاههای BLE در اسکنها از دست نمیروند. این امر باعث صرفه جویی در مصرف برق می شود و همچنین می تواند مزایای زیر را ارائه دهد:
- برای یک رویداد
OnFound
، AP اصلی با کشف یک دستگاه خاص از خواب بیدار می شود. - برای یک رویداد
OnLost
، AP هنگامی که دستگاه خاصی پیدا نمی شود بیدار می شود. - برنامههای چارچوب زمانی که یک دستگاه نزدیک در محدوده قرار دارد، اعلانهای ناخواسته کمتری دریافت میکنند.
- اسکنهای مداوم به برنامههای چارچوب امکان میدهد وقتی دستگاهی خارج از محدوده است مطلع شوند.
یک فیلتر اسکن می تواند بر اساس کشف تبلیغات یک دستگاه (رویداد OnFound
) باشد. لایه جاوا می تواند پارامترهایی مانند اولین کشف (یا تعداد مشخصی از تبلیغات از اولین کشف) را مشخص کند. فیلتر BLE را با استفاده از دستور Advertising Packet Content Filter HCI اجرا کنید.