LE gatt 第三方應用無法搜尋到藍芽低功耗裝置
阿新 • • 發佈:2019-01-24
手機端修改packages/apps/Bluetooth/res/values/config.xml檔案中strict_location_check的值由true改為false,使用者
在進行掃描LE裝置時則可以返回給APP。從而不需要使用者強制開啟GPS。
packages/apps/Bluetooth/src/com/android/bluetooth/gatt/GattService.java
/** Determines if the given scan client has the appropriate permissions to receive callbacks. */
private boolean hasScanResultPermission(final ScanClient client) {
final boolean requiresLocationEnabled =
getResources().getBoolean(R.bool.strict_location_check);
final boolean locationEnabledSetting = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF)
!= Settings.Secure.LOCATION_MODE_OFF;
final boolean locationEnabled = !requiresLocationEnabled || locationEnabledSetting
|| client.legacyForegroundApp;
return (client.hasPeersMacAddressPermission
|| (client.hasLocationPermission && locationEnabled));
}
在進行掃描LE裝置時則可以返回給APP。從而不需要使用者強制開啟GPS。
packages/apps/Bluetooth/src/com/android/bluetooth/gatt/GattService.java
/** Determines if the given scan client has the appropriate permissions to receive callbacks. */
private boolean hasScanResultPermission(final ScanClient client) {
final boolean requiresLocationEnabled =
getResources().getBoolean(R.bool.strict_location_check);
final boolean locationEnabledSetting = Settings.Secure.getInt(getContentResolver(),
Settings.Secure.LOCATION_MODE, Settings.Secure.LOCATION_MODE_OFF)
!= Settings.Secure.LOCATION_MODE_OFF;
final boolean locationEnabled = !requiresLocationEnabled || locationEnabledSetting
|| client.legacyForegroundApp;
return (client.hasPeersMacAddressPermission
|| (client.hasLocationPermission && locationEnabled));
}