про Beacon
Beacon - це невеликий маячок, який транслює за допомогою Bluetooth Low Energy (Bluetooth LE, BLE) пакет зі своїм унікальним ідентифікатором (UUID, Major, Minor) і значеннями (RSSI сила сигналу); за допомогою цього пакету можна визначити відстань від пристрою одержувача до маяка.
Для роботи з бікона існує кілька протоколів - iBeacon, AltBeacon, Eddystone. Відрізняються вони параметрами, які дозволено передавати при мовленні. **
**
Зазвичай бікона використовуються для мікронавігаціі в приміщеннях, де GPS не здатне забезпечити достатню точність. Можливість зчитувати дані в певному місці відкриває широкі можливості для розробників: крім точного позиціонування можна, наприклад, створити сервіс доповненої реальності і показувати підказки, прив'язані до місцевості.
Bluetooth LE на Android
Платформа Android підтримує роботу з Bluetooth LE, починаючи з версії 4.4 KitKat (API Level 19). Уже в Android 5.0 Lollipop (API Level 21) робота з Bluetooth LE зазнала значних змін. Якщо ви збираєтеся розробляти додаток з використанням біконів - вам необхідно підтримувати обидва варіанти.
Для роботи з будь-якою версією вам буде потрібно BluetoothAdapter, отримати його можна так:
Приклад пошуку для Android 4.4:
Приклад пошуку для Android 5.0:
Як видно з прикладів, Android 4.4 дозволяє сканувати Bluetooth LE пристрою, але керувати цим процесом не так легко. До того ж інтенсивність сканування можна налаштувати, а це загрожує посиленим енергоспоживанням. Використовуючи можливості Android 5.0, ви можете налаштувати такі параметри, як:
- Період сканування перед поверненням даних.
- Фільтри, наприклад по UUID.
- Режим сканування. Доступні 3 варіанти:
- Low Latency - часте сканування,
- Low Power - енергозберігаюче сканування,
- Balanced - середнє між двома попередніми.
- Крім того, сканер вміє повертати згруповані дані.
Крім того, сканер вміє повертати згруповані дані.
Складнощі з Android 6.0
Здавалося б, все добре. Але з виходом Android 6.0 з'являються додаткові вимоги. Найбільше зміна - це Runtime Permissions. Дозволи в Android діляться на звичайні і небезпечні. Користувач може відключати небезпечні дозволу в налаштуваннях, а додатки повинні запитувати і перевіряти доступ в тих місцях, де він потрібен.
Трохи про дозволи в Android:
До звичайних дозволами належить більшість дозволів, наприклад доступ до Wi-Fi або Bluetooth. Небезпечних дозволів трохи, до них відносяться камера, контакти, місце розташування, мікрофон і т.д. Начебто все повинно працювати, адже для сканування біконів досить дозволів BLUETOOTH і BLUETOOTH_ADMIN - але виявляється, що немає. Для сканування у фоновому режимі, наприклад з сервісу, необхідні ще й дозволу ACCESS_FINE_LOCATION або ACCESS_COARSE_LOCATION. а вони відносяться до групи небезпечних, і їх необхідно перевіряти перед кожним скануванням.
Так Так! Доступ до місця розташування пристрою! До того ж служби визначення місцезнаходження повинні бути включені як мінімум в режимі енергозбереження, використання тільки GPS для біконів не підійде. Режим високої точності використовує обидва вищевказаних джерела, а тому також допустимо.
висновок
Одних дозволів і сканування недостатньо для написання якісного додатки, що працює з бікона. Вам також варто стежити за включенням і вимиканням Bluetooth, зупиняючи або перезапуску при цьому сканування. Незайвим буде і запускати сканер в різних режимах для фонової і активної роботи - щоб берегти заряд пристрою. Всі ці зусилля окупляться хорошими відгуками задоволених користувачів. А їх кількість, до речі, неухильно зростає - бікона непомітно завойовують світ, стираючи межі між офф- і онлайном, і можна з упевненістю говорити що за бікона якщо не все майбутнє, то як мінімум частина його. І вона вже стає справжнім!