Dlaczego muszę włączyć usługi lokalizacyjne, aby sparować z urządzeniem Bluetooth?

16

Ilekroć próbuję podłączyć Samsung Galaxy S6 z Androidem 6.0.1 do urządzenia obsługującego Bluetooth, mówi mi o włączeniu „usług lokalizacyjnych”.

Kiedy narzekałem na to, sprzedawca oprogramowania odpowiedział: „Najnowsze aktualizacje interfejsu API Google Android wpływające na technologię LE LE Bluetooth wymagają przyznania uprawnień do lokalizacji w celu korzystania z aplikacji”.

Nie widzę potrzeby tego.

Ta dyskusja mówi o tym. Dokumentacja techniczna mówi, że aplikacje muszą mieć określone uprawnienia , a nie, aby usługi lokalizacyjne były aktywne.

Aby uzyskać dostęp do identyfikatorów sprzętowych pobliskich urządzeń zewnętrznych za pomocą skanów Bluetooth i Wi-Fi, Twoja aplikacja musi teraz mieć uprawnienia ACCESS_FINE_LOCATION lub ACCESS_COARSE_LOCATION

Pytanie : Czy to oznacza, że ​​oświadczenie dostawcy oprogramowania jest nieprawidłowe?

GUI Junkie
źródło
System zezwoleń jest zdecydowanie całkowicie zaniepokojony restrukturyzacją MM (wyjaśnienia mówią, że miały na myśli „sygnały nawigacyjne Bluetooth”, które można wykorzystać do zlokalizowania ciebie). W moim rozumieniu wasze wątpliwości są uzasadnione, a oświadczenie dostawcy nieprawidłowe: Aplikacje potrzebują pozwolenia , aby uzyskać dostęp do Bluetooth. Ale jeśli potrzebują usługi lokalizacyjnej, aby znaleźć sprzęt („skręć w prawo na drugim złączu lutowniczym, podaj tranzystor na bramce 3…”), byłbym zaskoczony. Wątpię, czy w tym celu należy włączyć usługi lokalizacyjne, ale nie mam urządzenia MM do weryfikacji.
Izzy

Odpowiedzi:

6

Rozumiem przez Bluetooth, że aplikacje korzystające z Bluetooth mają bezpośredni dostęp do adresu MAC urządzenia w celu parowania. Zakładam to dla tej odpowiedzi.

Jeśli potrafisz odczytać adresy MAC nadajników WiFi lub Bluetooth, możesz zlokalizować urządzenie. Tak działa lokalizacja WiFi / Bluetooth; nasłuchujesz adresów MAC nadajników i przeglądasz je w gigantycznej globalnej bazie danych.

Dlatego każda aplikacja korzystająca z Bluetooth i połączenia danych teoretycznie może zlokalizować twoje urządzenie. Nie jestem pewien, czy jest to praktycznie możliwe; Bluetooth nie ma takiego samego zasięgu i półtrwałej infrastruktury punktu dostępu jak WiFi.

Wymagając od usług lokalizacyjnych dostępu do Bluetooth, upewniasz się, że użytkownik rozumie, że informacje o jego lokalizacji mogą wyciekać podczas korzystania z Bluetooth. W wersjach Androida wcześniejszych niż Marshmallow użytkownik mógł korzystać z Bluetooth bez włączonych usług lokalizacyjnych, ale informacje o lokalizacji mogły wyciekać. W tych starszych wersjach można również uruchomić skanowanie Wi-Fi w celu znalezienia adresów MAC bez włączonych usług lokalizacyjnych, co ponownie oznacza, że ​​informacje o Twojej lokalizacji mogą wyciekać. Wymaganie, aby usługi lokalizacyjne mogły korzystać z Bluetooth, polega na tym, aby osoba wyłączająca lokalizację zachowała prywatność swojej lokalizacji.

Chciałbym scharakteryzować ten problem jako problem projektowy, a nie błąd. Błąd można przypuszczalnie naprawić, ale nie jest dla mnie jasne, że możesz w ogóle korzystać z Bluetooth bez potencjalnie wycieku informacji o lokalizacji. Bluetooth został stworzony, zanim ktokolwiek rozważył usługi lokalizacyjne WiFi i Bluetooth.

mattm
źródło
2

Sprzedawca ma rację, musisz włączyć usługi lokalizacyjne, aby skanować w poszukiwaniu urządzeń WiFi lub Bluetooth LE.

Szczegółowe informacje można znaleźć w błędzie # 185370 . Google powiedział, że naprawili go w „przyszłej wersji”, ale zgodnie z komentarzami do błędu, nadal nie jest naprawiony w Androidzie 7.


Edycja: wcześniej powiedziałem, że usługi lokalizacyjne są wymagane tylko wtedy, gdy aplikacja rozpoczynająca skanowanie działa w tle. Kod źródłowy wskazuje, że jest to prawdą tylko wtedy, gdy celem interfejsu API jest <Android M.

jomo
źródło
Jeśli to błąd Androida, dlaczego sprzedawca miałby rację? Powinni byli odpowiedzieć: „To błąd Androida”
GUI Junkie
Czy można podłączyć urządzenie do bluetooth poza aplikacją?
GUI Junkie
Zapytałeś, czy oświadczenie dostawcy jest nieprawidłowe. To nie jest niepoprawne, musisz przyznać lokalizację aplikacji uprawnienia do . Ponadto z powodu błędu musisz włączyć usługi lokalizacyjne .
jomo