- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
TLDR:是否预期服务发现结果是通过 discoverServices()
产生的?会根据底层传输(LE 与 BR/EDR)而有所不同吗?
我有一个混合模式蓝牙配件,它提供了作为蓝牙经典设备和蓝牙 LE 外围设备的独特功能。
Android 无法发现配件的蓝牙 LE GATT 服务,除非您使用隐藏的 peerBluetoothDevice.connectGatt(context, autoConnect, gattCallback, BluetoothDevice.TRANSPORT_LE)
允许您强制使用 TRANSPORT_LE
或 TRANSPORT_BREDR
的 API。
当我通过 peerBluetoothDevice.connectGatt(context, autoConnect, gattCallback)
连接设备时然后调用discoverServices()
我只会发现通用服务 UUID(并且只有在许多失败的连接尝试之后,神秘状态 133 传送到 onConnectionStateChange
)。
但是,当我调用隐藏的 peerBluetoothDevice.connectGatt(context, autoConnect, gattCallback, BluetoothDevice.TRANSPORT_LE)
时然后调用 discoverServices()
我得到完整的预期服务发现响应:
这是预期的 Android 框架行为吗(对此表示怀疑,因此隐藏了 API)?设计具有这种“混合模式”操作的外围设备是一种不好的形式吗?
最佳答案
方法从 API 23 开始公开,因此似乎是避免上述问题的认可方法。
该方法似乎是 introduced在 android-5.0.0_r1
版本中添加到 AOSP,并且出现在每个版本中,直到它在 API 23 中公开。因此,对于 API 级别 21 和 22 的设备,通过反射调用应该是安全的。对于具有先前平台版本的设备,Android 框架似乎没有提供缓解该问题的工具。
关于Android 的 BLE 服务发现 (BluetoothGatt#discoverServices()) 和低功耗与 BR/EDR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654501/
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 卷积神经网络(CNN)通过从原始数据中自动学习层次特征表示,在图像识别任务中取得了巨大成功。虽然
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 血压的测量和预测是心脏病患者和有心脏问题的人的一个重要条件,应该保持持续的控制。在这项研究中,基
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 心血管疾病是最严重的死亡原因之一,每年在全世界造成严重的生命损失。持续监测血压似乎是最可行的选择
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦MCX系列MCU的新品MCXN947 。 自 2015 年恩智浦和飞思卡尔合并成新恩智浦之后,关于它们各
我正在开发一个应用程序,该应用程序接受语音输入,并将该输入与 list 中的已知项目进行匹配。 list 中的每个项目都有一个别名列表,以便长标题的项目可以与较短的名称相匹配。 例如: class P
两个双模蓝牙设备连接时,必须使用EDR,不能并联使用LE。然后必须通过 EDR 链路传输 BT 低功耗 GATT 配置文件。这是我从规范中读到的内容。 但是 iOS EDR 堆栈(在没有 MFi 许可
我正在尝试为 S3 开发蓝牙 4.0 应用程序。问题是,手机的行为就像它甚至没有蓝牙 4.0。它不会发现 4.0 设备,并且无法通过 4.0 设备发现。我在手机设置和应用程序中都尝试过,使用 Broa
我正在寻找一种与 Adafruit bluefruit LE(nRF8001 芯片组)板进行交互的方法,在 Windows 桌面应用程序中使用 c#(据我所知,我无法使用 Windows.Device
我是一名优秀的程序员,十分优秀!