Android 蓝牙适配器未发出 ACTION_DISCOVERY_FINISHED

问题描述 投票:0回答:1

我有一堂带有广播接收器设置的课程。接收器监听以下操作:

ACTION_FOUND
ACTION_DISCOVERY_STARTED
ACTION_DISCOVERY_FINISHED

发现并启动的操作按预期发出,但是,BluetoothAdapter 的文档指定发现扫描应花费约 12 秒,然后是

ACTION_DISCOVERY_FINISHED
。情况似乎并非如此,因为我只能通过调用
cancelDiscovery()
来手动触发已完成操作的发出。如果我让它运行足够长的时间,有时会发出事件(但这可能需要 1-2 分钟)。有时,这甚至不会发生。如果我通过禁用蓝牙继续强制扫描结束,则会按预期发出操作。

扫描需要这么长时间吗?我是否应该手动控制扫描过程,即在 12 秒倒计时后自行结束扫描?或者我在文档中遗漏了一些东西。广播接收器配置正确,所有操作的到达都证明了这一点。

java android bluetooth broadcastreceiver bluetooth-device-discovery
1个回答
0
投票

将 Nexus 5 升级到 Android 版本 6.0.1 后,我似乎得到了与

ACTION_DISCOVERY_FINISHED
广播更加一致的结果。它还发现我的另一部 Android 手机(Xperia Z3)没有根据 https://developer.android.com/about/versions/marshmallow/android-6.0-changes.htm 中的更改找到任何设备,这意味着它现在还需要
ACCESS_COARSE_LOCATION
权限,您需要在运行时请求该权限。如果不这样做,您的应用程序将不会收到广播。我希望其他人发现这很有用。

© www.soinside.com 2019 - 2024. All rights reserved.