gpt4 book ai didi

安卓12 : BLE Scan does not find any devices

转载 作者:行者123 更新时间:2023-12-04 23:53:22 25 4
gpt4 key购买 nike

我正在尝试将蓝牙低功耗应用程序(连接到自定义物理设备)升级到 Android 12。我已按照文档中的方式设置了所有内容,但它不起作用。
权限:

<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BILLING" />

<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="true" />
代码:
private final ScanCallback scanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
Log.d(TAG, "Scan result!");
}

@Override
public void onScanFailed(int errorCode) {
Log.w(TAG, "Scan failed: " + errorCode);
}
};

public void start() {
bluetoothLeScanner.startScan(scanCallback);
}
我还使用 ActivityResultContracts.RequestMultiplePermissions() 请求权限契约(Contract)。当我阅读日志时,我可以看到权限已设置。
现在当我调用 start() -方法,我从来没有得到 onScanResult(...) - 方法调用。当我切换到装有 Android 11 的设备时,它可以正常工作。当我启动 BLE Scanner 应用程序(从 Play 商店)时,它会找到该设备。
更新:当我将 targetSdk 设置为 30 时,一切正常(当然,使用旧权限等)。
有没有人有同样的问题甚至修复它?将不胜感激任何建议。
谢谢!

最佳答案

我找到了解决方案。与 official documentation 中的陈述相反你仍然需要android.permission.ACCESS_FINE_LOCATIONandroid.permission.ACCESS_COARSE_LOCATION在 Manifest 中设置权限并向移动用户请求权限。现在一切都正常了。

关于安卓12 : BLE Scan does not find any devices,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70578601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com