Mengapa saya harus mengaktifkan layanan lokasi untuk memasangkan dengan perangkat Bluetooth?

16

Setiap kali saya mencoba menghubungkan Samsung Galaxy S6 saya dengan Android 6.0.1 ke perangkat berkemampuan Bluetooth, ia memberi tahu saya untuk mengaktifkan "layanan lokasi".

Ketika saya mengeluh tentang hal ini, vendor perangkat lunak menjawab: "Pembaruan terbaru untuk Google Android API yang memengaruhi teknologi Bluetooth LE memerlukan izin lokasi untuk diberikan agar dapat menggunakan aplikasi."

Saya gagal melihat kebutuhan untuk ini.

Diskusi ini membicarakan hal ini. The referensi teknis mengatakan aplikasi harus memiliki tertentu izin , tidak layanan lokasi aktif.

Untuk mengakses pengidentifikasi perangkat keras dari perangkat eksternal terdekat melalui pemindaian Bluetooth dan Wi-Fi, aplikasi Anda sekarang harus memiliki izin ACCESS_FINE_LOCATION atau ACCESS_COARSE_LOCATION

Pertanyaan : Apakah ini berarti pernyataan vendor perangkat lunak salah?

GUI Junkie
sumber
Sistem izin pasti benar-benar kacau dengan restrukturisasi MM (penjelasan mengatakan mereka memiliki "suar Bluetooth" dalam pikiran yang dapat digunakan untuk menemukan Anda). Menurut pemahaman saya, keraguan Anda dapat dibenarkan dan pernyataan vendor salah: Aplikasi memerlukan izin untuk mengakses Bluetooth. Tetapi jika mereka membutuhkan layanan lokasi untuk menemukan perangkat keras ("belok kanan pada sambungan solder kedua, lewati transistor di gerbang 3 ..."), saya akan terkejut. Saya sangat meragukan layanan lokasi perlu diaktifkan untuk itu, tetapi saya tidak memiliki perangkat MM untuk memverifikasi.
Izzy

Jawaban:

6

Pemahaman saya tentang Bluetooth adalah bahwa aplikasi yang menggunakan Bluetooth memiliki akses langsung ke alamat MAC perangkat untuk tujuan pemasangan. Saya akan menganggap ini untuk jawaban ini.

Jika Anda dapat membaca alamat MAC pemancar WiFi atau Bluetooth, Anda dapat menemukan perangkat. Inilah cara kerja lokasi WiFi / Bluetooth; Anda mendengarkan alamat pemancar MAC dan mencari ini di basis data global raksasa.

Karena itu, aplikasi apa pun yang menggunakan Bluetooth dan koneksi data secara teoritis mampu menemukan perangkat Anda. Saya tidak yakin ini praktis mungkin; Bluetooth tidak memiliki jangkauan dan infrastruktur titik akses semi permanen yang sama dengan WiFi.

Dengan meminta layanan lokasi untuk mengakses Bluetooth, Anda memastikan bahwa pengguna memahami informasi lokasi mereka dapat bocor ketika mereka menggunakan Bluetooth. Dalam versi Android sebelum Marshmallow, pengguna dapat menggunakan Bluetooth tanpa layanan lokasi diaktifkan, tetapi informasi lokasi bisa bocor. Dalam versi yang lebih lama ini, Anda juga dapat menjalankan pemindaian WiFi untuk menemukan alamat MAC tanpa layanan lokasi yang diaktifkan, yang lagi-lagi berarti bahwa informasi lokasi Anda dapat bocor. Persyaratan untuk mengizinkan layanan lokasi menggunakan Bluetooth adalah tentang memastikan bahwa seseorang yang menonaktifkan lokasi menjaga kerahasiaan lokasi mereka.

Saya akan mencirikan masalah ini sebagai masalah desain dan bukan bug. Bug mungkin dapat diperbaiki, tetapi tidak jelas bagi saya Anda dapat menggunakan Bluetooth sama sekali tanpa berpotensi membocorkan informasi lokasi. Bluetooth dibuat sebelum orang mempertimbangkan layanan WiFi dan lokasi Bluetooth.

mattm
sumber
2

Vendornya benar, Anda harus mengaktifkan layanan lokasi untuk memindai perangkat WiFi atau Bluetooth LE.

Lihat bug # 185370 untuk detailnya. Google mengatakan mereka telah memperbaikinya dalam 'rilis masa depan' tetapi menurut komentar pada bug, itu masih belum diperbaiki di Android 7.


Sunting: Saya sebelumnya mengatakan layanan lokasi hanya diperlukan ketika Aplikasi memulai pemindaian berjalan di latar belakang. Kode sumber menunjukkan ini hanya benar jika API-Target adalah <Android M.

jomo
sumber
Jika itu adalah bug Android, mengapa vendor itu benar? Mereka seharusnya menjawab: "Ini bug Android"
GUI Junkie
Apakah mungkin untuk menautkan perangkat ke bluetooth di luar Aplikasi?
GUI Junkie
Anda bertanya apakah pernyataan vendor salah. Ini tidak salah, Anda harus memberikan izin lokasi ke aplikasi. Selain itu, karena bug, Anda perlu mengaktifkan layanan lokasi .
jomo