Изучаю тут реализацию 6LoWPAN over BLE для Android, выяснилось следующее:
— в 7 и 8 версиях есть недокументированный способ открыть сокет уровня L2CAP (через джавовскую рефлексию, описано в дипломной работе этого самого Wieland’а), в 9 версии рефлексия для некоторых «системных» классов запрещена (в том числе и для BluetoothDevice), в 10 версии это API сделано публичным;
— начиная с 6 версии Android не дает узнать MAC-адрес «своего» Bluetooth-адаптера, обходные пути нагугливаются на стековерфлоу, но постепенно закрывались гуглом, начиная с версии 8.1 закрыты все;
— MAC-адрес постоянно и непредсказуемо меняется ради «прайваси» пользователя;
— для того, чтобы начать сканирование BLE-устройств, надо включить «геолокацию», что неудобно для пользователя и в принципе выглядит подозрительно (тут у нас приложенька для фитнесс-браслета, нахуя ей геолокация?).
Охуенно, со всех сторон охуенно. Тут мы заботимся о прайваси, тут мы предлагаем включить все «разрешения», там мы просто всех в рот ебали, и программистов, и пользователей.
как пользователь, после седьмого ведра не устаю слать лучи поноса в сторону разрабов новых версий, потому что ченджлоги ведроида все больше напоминают таковые у поп-дистрибов линуха — «тут мы обои добавили, там свистелки с перделками; а вот это мы отключили, ибо нехуй тупым юзерам такое в руки давать».
надо сказать, все использовавшиеся фитнес-браслеты прекрасно находились и коннектились без геолокации в 8, 10 и 11 ведрах, хотя приложения умоляли ее включить.