Android 6.0에서 Bluetooth 저에너지 검색을 위해 위치를 활성화해야합니다.
Android 버전 6.0 BLE (Bluetooth Low Energy)로 업그레이드 한 후 기기에서 위치 서비스가 활성화 된 경우에만 검색이 작동합니다. 여기를 참조하십시오 : Android 6.0의 Bluetooth Low Energy startScan이 장치를 찾지 못함
기본적으로 앱과 전화에 대한 권한을 활성화해야합니다. 이 버그입니까? 실질적인 스캔 위치 서비스를 활성화하지 스캔 할 수 있습니까? 모든 앱에 대한 위치가 필요하지 않습니다.
21 편집 API 권한 startScan()
에 BluetoothLeScanner
관한 방법을 사용하고 있습니다.이 방법에 필요한 매니페스트 위치에 동의하지 않습니다. 내 앱 사용자가 내 앱을 사용하기 위해 장치 (GPS 등)에서 위치 서비스를 활성화하지 않아도되고 싶습니다.
이전에는 처리 startScan()
가 실행되고 전화기에서 서비스가 실행되고 결과가 반환됩니다. Marshmallow에서는 동일한 위치 애플리케이션이 "스캔"과 같은 위치 서비스가 활성화되지 않았고 코스 / 미세한 권한이 여전히 매니페스트에있을 가능성이 자동으로 실패하고 반환하지 않습니다.
아니요, 이것은 버그가 아닙니다.
이 문제 는 Google에 제기되어 있다고 생각하는 동작이며 수정하지 않을 것입니다. 개발자를 이 사이트 로 안내하여 이제 하드웨어 식별자 액세스를 위해 위치 권한이 필요 지적했습니다. 이제 사용자가 요구 사항을 인식하도록하는 것은 개발자의 책임입니다.
그러나이 문제에서는 위치 서비스 (GPS 등)가 필요한 이유를 다루지 않습니다.
질문의 두 번째 부분에 답 비용 : 예, 위치 서비스를 활성화하지 서비스 스캔 할 수 있습니다. 를 사용하여 블루투스 클래식 스캔을 수행 할 수 있으며 BluetoothAdapter.getDefaultAdapter().startDiscovery()
위치 서비스가 꺼진 상태 작동합니다. 이 모든 Bluetooth 장치, BLE 및 기타를 검색합니다. 그러나 BLE 장치는 .NET의 결과로 표시되는 경우 발생하는 스캔 레코드를 갖지 않습니다 startScan()
.
내가 설정하여이를 해결 targetSdkVersion
로 22 Gradle을 파일에. ACCESS_COARSE_LOCATION
매니페스트에서 선언해야 하지만 사용자가 앱 설정에서 권한을 거부합니다. BLE 스캔이 작동합니다.
이것은 위치 권한 요청을 피하기위한 해킹 일뿐입니다. 최신 Android 버전을 좋습니다.
Android 6 이후에 ACCESS_COARSE_LOCATION 권한을 부여해야한다는 것입니다. 그러나 일부 장치에서는 GPS (전화 위치 서비스)를 켜야하기 때문에 주변 장치를 사용할 수 있습니다. Android 7.0에서 Nexus 5x를 사용하는 것을 발견했습니다.
나는 또한 매니페스트에서 시도했지만 허가를 요청하지 않았습니다. 시작시 앱에서 위치 권한을 다시 수신합니까? 않은 경우 오는가 런타임에, 대한 권한 을 요청 고객 해야 우리 합니다 .
또한 관리자가 앱이 제대로 작동하는지 테스트 할 수 있습니다.
설정> 앱> YourApplication> 권한을 위치를 활성화 한 다음 결과를 검색해 검색합니다.
매니페스트에서 ACCESS_COARSE_LOCATION을 제공하는 경우에만 위치가 여기에 있습니다.
사용할 수 있습니다 BluetoothAdapter.startDiscovery()
.
블루투스 스마트 및 클래식 블루투스 장치를 모두 검색하지만 위치 서비스를 활성화 할 필요가 없습니다.
( ACCESS_COARSE_LOCATION
Android 6에 대한 권한 은 여전히 필요합니다 .)
BluetoothDevice.getType
검색된 장치를 호출 하여 Bluetooth Smart / Low Energy 장치를 필터링 할 수 있습니다 .
startScan (API 21) 기능을 사용하지 않고, 글쎄, 나는 Eclipse 파일에서 위치 항목을 사용합니다. 여전히 최적을받습니다. 위치 선언없이 코드를 실행 해 보든지? 반면에 더 이상 사용되지 않는 권한이 필요하지 않습니다. startLeScan (API 18)을 사용할 수 없습니다. 그러나 제 생각에는 서비스에서 원하는 특성을 검색하고 읽는 것이 API 18 메소드로 더 복잡합니다.
최근 안드로이드 8.0에서 발견 한 바에 따르면 BLE 스캔을 수행하기 위해 GPS를 필요로하지만 매니페스트에서 선언해야하지만 사용자가 권한을 허용해야합니다.
Android는 startScan()
메소드 로 스캔을 시도 할 때 사용자에게 위치 권한을 허용 메시지를 표시합니다 . 권한이 허용되지 않은 스캔이 실패합니다.
'IT' 카테고리의 다른 글
pip로 편집 가능한 패키지를 제거하는 방법 (-e로 설치됨) (0) | 2020.09.25 |
---|---|
mysqli_fetch_assoc ()는 다음 변수 / 멤버 함수 호출 bind_param () 오류를 예상합니다. (0) | 2020.09.25 |
Eclipse 용을 작성하는 방법은 무엇입니까? (0) | 2020.09.25 |
관리되지 않는 dll을 관리되는 C # dll에 포함 (0) | 2020.09.25 |
평범한 개발자가 팀을 해치고 있음을 표현 방법 (0) | 2020.09.25 |