Android 12:BLE 扫描未找到任何设备

2024-03-19

我正在尝试将低功耗蓝牙应用程序(连接到自定义物理设备)升级到 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" />

Code:

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()合同。当我阅读日志时,我可以看到权限已设置。

现在当我打电话给start()-方法,我从来没有得到过onScanResult(...)- 调用的方法。当我切换到装有 Android 11 的设备时,它可以正常工作。当我启动 BLE 扫描仪应用程序(来自 Play 商店)时,它会找到该设备。

更新:当我将 targetSdk 设置回 30 时,一切正常(当然使用旧权限等)。

有没有人遇到同样的问题甚至解决了它?如有任何建议,将不胜感激。

Thanks!


我找到了解决方案。与声明中的相反官方文档 https://developer.android.com/guide/topics/connectivity/bluetooth/permissions你还需要android.permission.ACCESS_FINE_LOCATION and android.permission.ACCESS_COARSE_LOCATION在清单中设置权限并向移动用户请求这些权限。现在一切又恢复正常了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 12:BLE 扫描未找到任何设备 的相关文章

随机推荐

  • 在 javascript 资源中使用 Rails 辅助方法

    有没有办法使用 Rails 辅助方法 更具体地说 是 javascript 资源文件中的路径辅助方法 这个文件foo js coffee erb bar val 如果我能从 erubis 得到我会很高兴 bar val path to cr
  • 创建一段时间后删除会话文件

    我将会话保存在 temp 目录中的另一个目录中 说 session目录 使用session save path session 此外 还有一个代码可以在创建和注销 10 分钟后终止会话 但我提到 如果用户登录并关闭计算机 我的注销和会话销毁
  • 向 UITextField 添加不可编辑的文本后缀

    我有一个 UITextField 我想添加一个 所有输入文本的后缀 用户不应该能够删除这个 或在其右侧添加文本 解决这个问题的最佳方法是什么 Use the UITextFieldDelegate http developer apple
  • 转置前导维度为 N 的一维数组

    如何在没有额外空间的情况下转置前导维度为 N 的一维数组 任何语言都可以 我的一维就地矩阵转置解决方案 mn M N M rows and N columns q mn 1 i 0 Index of 1D array that repres
  • Chrome 多功能框特殊字符抛出错误

    我正在编写一个基本的 Chrome 扩展程序 以通过 JSON 源在多功能框中添加建议 几乎所有输入的查询都会在建议下拉列表中显示预期的结果 然而 每当描述中返回与号 时 Chrome 就会抛出错误 抛出的错误读取 xmlParseEnti
  • 获取句柄并写入启动我们进程的控制台

    我怎样才能写入一些已经打开的控制台的标准输出 我通过这段代码找到了我需要的控制台 IntPtr ptr GetForegroundWindow int u GetWindowThreadProcessId ptr out u Process
  • C++ 相当于 Java 的 andThen() 函数来组合新函数

    在Java中 您可以执行以下代码 Function
  • XSLT 转换抛出错误

    我有如下的xml
  • 在 Java 中,如何使用继承来简化代码? (安卓开发)

    在各种活动中我都有非常相似的方法 例如 Override public void onClick View v switch v getId case R id ibHome Intent menuIntent new Intent v g
  • 如何使用 OpenCV 查找图像中三角形的方向

    我试图找到图像中三角形的方向 下面是图片 这些三角形指向上 下 左 右 这不是真实的图像 我已经使用精明的边缘检测来查找边缘 然后找到轮廓 然后膨胀的图像如下所示 我寻找方向的逻辑 我想使用的逻辑是 在三个角坐标中 如果我可以识别三角形的基
  • JavaScript 定界文档

    我需要 JavaScript 中类似heredoc的东西 您对此有什么想法吗 我需要跨浏览器功能 我找到了这个 heredoc div ul li a href zzz zzz a li ul div 我认为这对我有用 Try ES6 字符
  • 为什么 Scala 隐式将 Char 转换为 Int?

    看看scala的Predef对象 这是自动导入的 我发现跟随宝石 http www scala lang org docu files api scala Predef 24object html char2int 28Char 29 im
  • 进度对话框显示太晚

    我有一个应用程序 我想执行以下操作 显示带有按钮和 TextView 的活动 用户单击按钮 应用程序会显示一个进度对话框 应用程序调用网络服务来获取列表 进度对话框被隐藏 并且列表选择对话框出现以显示检索到的列表 用户选择列表中的一项 项目
  • “include_examples”和“it_behaves_like”有什么区别?

    在 RSpec 中 有什么区别it behaves like and include examples The 文档 https www relishapp com rspec rspec core v 2 14 docs example
  • 二项式系数的计算算法

    我需要一种在不耗尽内存的情况下计算组合的方法 这是我到目前为止所拥有的 public static long combination long n long k nCk return divideFactorials factorial n
  • Azure Function App忽略依赖关系

    我有一个连接到数据库的 Azure 函数 但它失败并显示以下消息 找不到类型或命名空间名称 Npgsql 您是否缺少 using 指令或程序集引用 In project json 我有以下声明 frameworks net46 depend
  • Jasmine 获取当前测试结果

    我正在使用 Jasmine 3 3 1 与 ProtractorJS 的组合 我的要求是存储每个规范 或描述 测试 的结果 并使用 afterEach 方法在 Testrail 系统中更新结果 我想将结果存储到变量 testResult 中
  • 如何同时对多个 SKSpriteNode 进行动画处理?

    我很新SpriteKit 我有一组节点需要一起移动到每个节点的不同点 在所有节点的动画完成后 我想做其他事情 我正在做这个UIView之前的组件 A UIView animateWithDuration completion 块正在提供我需
  • 将 React-Native (Web) 集成到 Django 中。如何为所有网址添加前缀?

    我正在使用反应导航并试图找出如何向所有端点添加前缀 跟随我的LinkingConfiguration这不符合我的要求 const prefixes Linking makeUrl app const prefixes example app
  • Android 12:BLE 扫描未找到任何设备

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