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,如果为真,则扫描您的设备。
我为 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,如果为真,则扫描您的设备。