问题标签 [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.
bluetooth-lowenergy - 如何从蓝牙读取特征?
我正在尝试从蓝牙读取特征:
我不知道如何调用chr_get_value
and的这些方法chr_read
。我知道关键是gdbus
。
bluetooth-lowenergy - 查找蓝牙 Le Gatt (Motion UUID) 以接收运动传感器数据
我是蓝牙低功耗 GATT 的新手。现在我有一个带有 RN4020 微芯片蓝牙模块的运动传感器。
我在从运动传感器接收数据时遇到问题。
目前,我可以使用我的 android 应用程序扫描我的运动传感器,但它显示Unknown Services 和 Unknown Characteristics。
我很高兴地问我如何在 BLE 设备和我的 Android 应用程序之间接收我的运动传感器数据?
提前致谢...
c++ - 无法将心率设备连接到 Windows 10 通用应用程序
我正在尝试使用 Windows 通用应用程序通过蓝牙 GATT(它是双启动的 Windows 10)将我的 Polar OH1 心率设备连接到我的 Mac。我正在用 C++ 做这个。
当我尝试运行此方法时,它返回 null,即使我将蓝牙添加到应用程序清单并将 Polar Oh1 与 Windows 10 配对。
android - BLE 设备与 android 设备配对,一旦设备到达范围并连接后,我们会收到任何回调或广播吗?
我有个问题:
我有一个 BLE 设备连接到手机并配对。当设备超出范围并回到范围内时,它是否会重新连接并在进入范围后触发回调。
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_CONTROLLER和LE_BR_EDR_HOST BLE ADV 标志让 Android 知道这确实是一个功能齐全的双模设备......
它有效。正好。只要您不再尝试在 Android API21 手机上运行您的配套应用程序,现在突然无法检测到我的耳机是双模设备。尽管我采用反射方法强制正确连接和正确传输,但在我的三星 S5“活动”测试手机上运行 API21 的 Android 根本不会与我的耳机建立 GATT 连接,我强烈认为这与设备类型为检测为DEVICE_TYPE_CLASSIC
。
android - Android BLE 外围设备与状态码 BLE_HCI_INSTANT_PASSED(0x28) 断开连接
我的应用程序能够成功连接到 BLE 外围设备(这是一个 OBDII/J1939 设备)设备。
应用程序开始与设备通信,但一段时间后它onConnectionStateChange
在回调实现中收到 GATT 服务器断开消息BluetoothGattCallback
。以下是来自应用程序的日志:
无法找到BLE_HCI_INSTANT_PASSED
状态码背后的任何原因。
对此的任何帮助都会有所帮助。
android - 为什么 BLE 服务 UUid 在 android 和 iphone 中不同?
我noble
在我的应用程序中使用,它扫描 BLE 设备。问题是,我在我的 android 中收到的 BLE GATT 中的服务 UUId 是更长的 UUID(即 00002220000001000800000805f9b34fb),而在 Iphone 中我得到(2220)。
我需要我的 android 有 2220,因为那是我需要的平台。有没有办法获得后者的服务 UUID?虽然它们是相同的,但看较长的一个,“2220”从左到右从第 4 位出现。
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:
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
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
。为什么会这样?有谁能够帮我。先谢谢同行。