问题标签 [android-ble-library]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 在 Android 9 上写入特征时,在 Status=8 之后未调用蓝牙 onCharacteristicWrite
写入特征时,我有时会得到 connectionStatus=8
我不知道根本原因,可能是我们最终的错误。它只发生在某些 Android 9 设备(例如 Pixel 2)中
问题是,一旦发生这种情况,我将停止接收 onCharacteristicWriteSafe 回调以供将来写入。即使写入成功(我知道感谢内部日志),我也没有收到回调。
关于为什么这可能会在 Android 9 中发生的任何提示?
android - 由于在 Android BLE 上达到最大连接数限制,获取连接失败的任何错误代码
我正在连接一个 BLE 设备,并且想要一个可以帮助我确定连接失败原因的特定错误代码。
我要介绍的场景是达到最大连接数限制。
我想要任何特定的错误代码或方法来识别由于最大数量而导致连接到 BLE 设备失败。已连接的设备。
我已经提到了 android 文档为 gatt 连接提供的一组状态代码 - > https://developer.android.com/reference/android/bluetooth/BluetoothGatt#summary但没有一个对应于任何此类场景。
我可以看到 BLE 连接上存在一些隐藏的错误代码。例如,我得到状态代码 19(蓝牙 LE:未记录的错误代码 19),它没有在官方文档中列出,也没有在 BluetoothGatt 中存在。另一个这样的例子是错误代码 133 ( https://devzone.nordicsemi.com/f/nordic-qa/45969/gatt-client-leaks-in-android-ble )。
不同设备的限制也有所不同,因此假设最大连接 7 个设备似乎有点不合适,因为该值在某些情况下可能较低,而在不同的 Android 设备中较高。
任何人都可以帮助我,为我提供一种方法来确定我的设备上达到的最大连接限制吗?
bluetooth-lowenergy - 使用时间计算BLE距离
是否可以使用在接收器设备上接收到的具有测量功率或 RSSI 值的数据包上的时间(T)来计算 BLE-BLE 或 Beacon-BLE 设备之间的距离?
有什么公式吗?
android - Android OS 9.0、BLE 5.0 特定问题从 BluetoothGatt 获取服务列表
开发了以下源代码,用于使用 BLE 从一台 Android 设备向另一台 Android 设备发送消息:
在检查服务列表时,在 Realme 5 Pro(Android OS 9.0,BLE v5.0)上与另一台设备建立成功连接后,服务列表没有返回带有上述服务字符串的特定服务,因此以下代码(BluetoothGattService)返回为 null ,因此无法通过 BLE 将数据发送到另一台设备。
相同的源代码正在返回带有提到的服务字符串的服务列表,用于其他设备,如 Mi 4a(Android OS 7.0,BLE 4.0),Realme 3i(Android OS 9.0,BLE 4.2),对于它们,BluetoothGattService 实例正在返回不为空的详细信息,因此能够将消息发送到其他设备。
有没有人在使用 Android OS v9.0 和 BLE v5.0 的设备时遇到同样的问题?
android - 缺少权限时未调用 BLE 扫描回调
我正在使用三星 Note 8 (Android 9) 和三星 A50(Android 10)。
我正在进行 BLE 扫描,需要蓝牙和位置权限(Android >=23)。在开始 BLE 扫描之前,我没有向应用程序提供位置权限。
在 Note 8 上开始扫描时,当未授予位置权限时,我收到错误代码 2 (SCAN_FAILED_APPLICATION_REGISTRATION_FAILED) 的 onScanFailed() 回调。
在 A50 上开始扫描时,我没有收到任何回调。从 adb 日志中,我可以看到内部日志BluetoothUtils: Permission denial: Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATIONpermission to get scan results 07-28 21:03:35.720 2010 2650 D
我想确定由于缺少权限而发生扫描失败。我怎么做?
注意-我正在构建一个 Android 库,而不是一个 Android 应用程序,所以请相应地提出建议。
android - 如何在 Android 上测试 BLE 对象?
我正在学习在 Android 上通过低功耗蓝牙进行通信。这是一个示例应用程序
源代码中有几个与蓝牙相关的对象,它们显然是最终类:
当然,我不想测试 BluetoothManager、BluetoothAdapter 或 BluetoothGatt 本身之类的库内容。但我想测试BluetoothLeService : Service
那个项目中写的。
我不知道,如何模拟这些final BluetoothManager, BluetoothAdapter or BluetoothGatt
对象。
- 我该如何测试
BluetoothLeService
? - 我可以写普通
test
的 unit 还是需要androidTests
在测试期间在设备连接的地方写特殊的 s? - 当我将集成系统作为构建环境时,这会是什么样子?
bluetooth-lowenergy - 低功耗蓝牙的传输功率是 Android 可配置的吗?
我在这里有一个蓝牙低功耗 Android 应用程序项目,到目前为止它适用于我的大多数 Android 智能手机。我在房间内的任何地方都可以在我的应用程序中使用我的 BLE 天气温度计,它可以工作。
除了华为 P30 Lite 设备:我的华为无法连接,除非我将 BLE 温度计放在华为智能手机的右上角。我假设蓝牙天线位于我的智能手机中?
在 linux 下,我可以配置我的 wifi 传输功率,例如:
是否有可能配置我的蓝牙低功耗 Android 库?
bluetooth-lowenergy - Android BLE StartScan 延迟返回匹配项
我们开发了一个跟踪车辆行程的 Android 应用程序,其中每辆车都安装了一个 BLE 设备,该设备会在车辆启动时唤醒。
为了确定用户何时在车内以及我们应该何时开始跟踪他们的旅程,Android 应用程序实现了一个前台服务,该服务运行 BLE 扫描(通过 Android 的 BluetoothLeScanner)来查找 BLE 设备。找到设备后(唤醒后),扫描停止,应用程序将连接到它并保持连接,直到旅程结束。
这在大多数 Android 设备上运行良好,但是我们看到了一个间歇性问题,即 BLE 扫描仪在唤醒后几分钟内找不到 BLE 设备。有时长达5分钟。
BLE扫描仪配置如下:
- 扫描模式 = 低延迟
- 匹配模式 = 粘性
- 回调类型 = 所有匹配
- 报告延迟 = 未设置
- 扫描过滤器 = 设备地址设置为查找特定地址
我们还实施了唤醒锁,以确保即使应用程序不在前台,扫描过程也会继续进行。
我们在一些 Android 10 设备上遇到了延迟。
该应用程序针对 Android 10。
任何帮助将不胜感激。
干杯,安迪
android - Android:为什么 BluetoothLeScanner 有时无法发现任何 BLE 设备?
我BluetoothLeScanner
用来扫描 BLE 设备,我开始使用:
startScan(null, settings.getScanSettings(), scanCallback);
每隔一段时间,调用startScan()
不会发现任何 BLE 设备,即使某些设备实际上正在做广告(它们是使用 nRF Connect 应用程序发现的)。
发生这种情况时,下一次调用stopScan()
并startScan()
确实发现设备。
我知道从 Android 7 开始,开始和停止扫描的次数在 30 秒的窗口内被限制为 5 次。但是,我注意到如果超过 30 秒没有stopScan()
/没有被调用,也会出现问题。startScan()
有没有人遇到过这样的问题?可能是我的应用程序在启动扫描仪时正在执行的其他操作导致扫描失败?
我在使用 Android 10 及更低版本时遇到了这个问题。
android - 如何从扫描的 BLE 设备中读取原始数据?
我正在为我的 BLE 应用程序使用RxAndroidBle库。像 nrfConnect 应用程序一样,我想从 BLE 设备读取 RAW 数据。
如何从设备读取 RAW 数据?