Android BLE onScanResult 从未被调用

Android BLE onScanResult is never called

我为 Android 开发了一个小的 BLE 应用程序,它可以连接到我的移动音乐盒。 在我的 phone (Android 9) 上一切正常。所以我买了一台平板电脑 (Android 9) 并且永远不会调用 onScanResult,但是当我使用 Android board-function 搜索时,我看到了蓝牙设备。

ACCESS_FINE_LOCATION
BLUETOOTH 
BLUETOOTH_ADMIN 

已设置且位置已设置为开启。

ACCESS_FINE_LOCATION 可以在清单中声明,但默认情况下不被视为已授予。您是否请求在运行时授予此权限?如果没有,请在运行时请求它,或者直接转到应用设置中的权限部分并手动授予它。

如果您的蓝牙已打开,请授予 ACCESS_FINE_LOCATION 和 ACCESS_CORSE_LOCATION 的运行时权限,但您仍然面临此问题,然后打开 gps 并重新开始扫描,其工作正常。

BLE 所需权限,

   <uses-permission android:name="android.permission.BLUETOOTH"/>
  <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
   <uses-permission   android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

并检查 gps 是否启用

       private fun enableLocation(): Boolean {
    val service = activity?.getSystemService(Context.LOCATION_SERVICE) as   LocationManager
    val enabled = service.isProviderEnabled(LocationManager.GPS_PROVIDER)
    return enabled
}

如果 return 为假则

val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
                    startActivity(intent)

以编程方式启用您的 GPS,如果为真,则扫描您的设备。