Androidバージョン6.0にアップグレードした後、Bluetooth Low Energy(BLE)スキャンは、デバイスで位置情報サービスが有効になっている場合にのみ機能します。こちらを参照してください:Android 6.0のBluetooth Low Energy startScanがデバイスを見つけられません
基本的に、アプリだけでなく電話でも有効にする権限が必要です。これはバグですか?位置情報サービスを実際に有効にせずにスキャンすることはできますか?すべてのアプリの場所を用意する必要はありません。
編集
私はAPI 21 startScan()
でBluetoothLeScanner
提供されているのメソッドを使用していることを説明できませんでした。このメソッドに必要なマニフェストのコースと詳細な場所のアクセス許可で問題ありません。アプリのユーザーが自分のデバイスの位置情報サービス(GPSなど)を有効にしてアプリを使用できるようにしたくありません。
以前は、startScan()
電話で位置情報サービスを無効にしてメソッドを実行し、結果を返していました。ただし、マシュマロでは、同じアプリケーションが「スキャン」しますが、電話で位置情報サービスが有効になっておらず、コース/ファイン位置情報のアクセス許可がマニフェストに残っている場合、サイレントに失敗して結果が返されませんでした。