问题标签 [bluetooth-gatt]

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.

0 投票
1 回答
5170 浏览

bluetooth-lowenergy - 如何从蓝牙读取特征?

我正在尝试从蓝牙读取特征:

我不知道如何调用chr_get_valueand的这些方法chr_read。我知道关键是gdbus

0 投票
1 回答
224 浏览

bluetooth-lowenergy - 查找蓝牙 Le Gatt (Motion UUID) 以接收运动传感器数据

我是蓝牙低功耗 GATT 的新手。现在我有一个带有 RN4020 微芯片蓝牙模块的运动传感器。

我在从运动传感器接收数据时遇到问题。

目前,我可以使用我的 android 应用程序扫描我的运动传感器,但它显示Unknown Services 和 Unknown Characteristics

我很高兴地问我如何在 BLE 设备和我的 Android 应用程序之间接收我的运动传感器数据?

提前致谢...

0 投票
0 回答
308 浏览

c++ - 无法将心率设备连接到 Windows 10 通用应用程序

我正在尝试使用 Windows 通用应用程序通过蓝牙 GATT(它是双启动的 Windows 10)将我的 Polar OH1 心率设备连接到我的 Mac。我正在用 C++ 做这个。

当我尝试运行此方法时,它返回 null,即使我将蓝牙添加到应用程序清单并将 Polar Oh1 与 Windows 10 配对。

0 投票
0 回答
23 浏览

android - BLE 设备与 android 设备配对,一旦设备到达范围并连接后,我们会收到任何回调或广播吗?

我有个问题:

我有一个 BLE 设备连接到手机并配对。当设备超出范围并回到范围内时,它是否会重新连接并在进入范围后触发回调。

0 投票
0 回答
1520 浏览

android - Android 如何检测/确定蓝牙设备类型?

先提问...

1) Android (pre API23) 如何检测蓝牙设备的设备类型?显然,在我尝试连接的双模蓝牙耳机中设置 BLE ADV 标志BREDR_NOT_SUPPORTED可以解决问题,但代价是干扰了更现代 API 中的经典链接设置/配对。所以这不是一个真正的选择......

2)如果在我的蓝牙耳机中什么都不能做 FW-wise (这将是最好的),你能否提出任何想法,我可以如何覆盖 BluetoothAdapter 的设备检测逻辑,以便我总是返回设备类型DUAL。我的意思是,我不需要在应用程序中进行适当的检测,因为我已经在 LE 扫描期间使用 GATT 服务 UUID 过滤来首先找到设备,所以我已经知道它是一个“兼容设备”,只要我能让 Android 在 API23 之前的手机上做出相应的行为......

...然后也许是一些背景/上下文;)

我正在为 iOS 和 Android 制作与蓝牙耳机交互的应用程序,我也为其编写固件。因此,我对耳机和应用程序的行为都有源代码控制。

该耳机基于高通的 CSR8670 芯片组,充当双模蓝牙“智能就绪”规范 4.2 小工具,典型的经典配置文件 (A2DP/AVRCP/HFP) 加上我自己的自定义 GATT 服务作为运行 BLE 外围设备隧道专有串行协议以在电话端连接我的应用程序。

一切都像 iOS 上的魅力一样。

但...

在 Android 上,自从 API23 和 Marshmallow 作为 BLE ADV 数据推出以来,我已经看到了一个逐渐的变化,特别是 ADV 标志已经开始被 Android 用来控制经典的蓝牙链接建立/配对。

例如,几年前,当API21是最新的东西时,我必须明确设置 BREDR_NOT_SUPPORTED标志并使用反射来强制传输 = BLE 以最终成功完成我的connectGatt(..)请求。

但是,由于API23不需要,因为耳机是支持 BREDR 的双模设备,所以没有任何意义。

相反,建议使用LE_BR_EDR_CONTROLLERLE_BR_EDR_HOST BLE ADV 标志让 Android 知道这确实是一个功能齐全的双模设备......

它有效。正好。只要您不再尝试在 Android API21 手机上运行您的配套应用程序,现在突然无法检测到我的耳机是双模设备。尽管我采用反射方法强制正确连接和正确传输,但在我的三星 S5“活动”测试手机上运行 API21 的 Android 根本不会与我的耳机建立 GATT 连接,我强烈认为这与设备类型为检测为DEVICE_TYPE_CLASSIC

0 投票
1 回答
1812 浏览

android - Android BLE 外围设备与状态码 BLE_HCI_INSTANT_PASSED(0x28) 断开连接

我的应用程序能够成功连接到 BLE 外围设备(这是一个 OBDII/J1939 设备)设备。

应用程序开始与设备通信,但一段时间后它onConnectionStateChange在回调实现中收到 GATT 服务器断开消息BluetoothGattCallback。以下是来自应用程序的日志:

无法找到BLE_HCI_INSTANT_PASSED状态码背后的任何原因。

对此的任何帮助都会有所帮助。

0 投票
1 回答
802 浏览

android - 为什么 BLE 服务 UUid 在 android 和 iphone 中不同?

noble在我的应用程序中使用,它扫描 BLE 设备。问题是,我在我的 android 中收到的 BLE GATT 中的服务 UUId 是更长的 UUID(即 00002220000001000800000805f9b34fb),而在 Iphone 中我得到(2220)。

我需要我的 android 有 2220,因为那是我需要的平台。有没有办法获得后者的服务 UUID?虽然它们是相同的,但看较长的一个,“2220”从左到右从第 4 位出现。

0 投票
1 回答
860 浏览

android - BluetoothGattCallback 为 Beacon 返回 129 -> GATT_INTERNAL_ERROR,但为电话返回 0

我调用我的蓝牙适配器mBluetoothAdapter.startDiscovery();,然后它会返回一个蓝牙设备列表。当我按下其中一个设备时,我会这样做:

我的回调在哪里:

现在,当我在手机上尝试它时,我在 onConnectionStateChange 上得到了 STATE_CONNECTED,然后我调用了 discoverServices,我得到了 GATT_SUCCESS onServicesDiscoveres。所以我可以从我的服务中获取 uuid。但是当我在信标上尝试它时,我返回 STATE_CONNECTED,当我调用 discoverServices 时,我返回一个状态代码:129 -> GATT_INTERNAL_ERROR 为什么我的信标会发生这种情况?还有另一种方法,我如何获取设备 uuid?对于beaconManager,我只需要UUID就可以做到这一点:

编辑

我知道信标应该要求我输入配对代码,但它没有。为什么?我尝试添加此代码:

但是我仍然没有收到配对和输入密码的请求

这是我的pairingRequestReceiver:

0 投票
0 回答
456 浏览

bluetooth-lowenergy - 蓝牙 gatt 服务器:如何设置外观特征?

我在 Android 上创建了蓝牙 Gatt 服务器:我能够实现/配置新服务(感谢https://github.com/androidthings/sample-bluetooth-le-gattserver),但不幸的是,我不是能够改变服务的“外观”。

据我了解,我需要修改通用访问配置文件(https://www.bluetooth.com/specifications/assigned-numbers/generic-access-profile)的外观特征,但我被卡住了,因为它没有退出,如果尝试创建它,它会失败并出现 status=133 错误。(https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.1.1_r13/stack/include/gatt_api.h

任何帮助将不胜感激!

干杯

D

0 投票
1 回答
864 浏览

java - 为什么 onCharacteristicWrite 回调中的状态变为 GATT_INVALID_OFFSET?

我正在将一个字节数组的数据写入 Android 中的 BLE 设备。调用后调用回调方法mGatt.writeCharacteristic(characteristicToWrite);onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status)如果写操作成功状态将是 0 即GATT_SUCCESS = 0,而不是那个即时接收状态为 7 即GATT_INVALID_OFFSET = 0x7。为什么会这样?有谁能够帮我。先谢谢同行。