问题标签 [bluetooth-peripheral]
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 - 使用 HCITool 宣传蓝牙 LE 服务
我正在尝试在我的 Linux 计算机上创建一个低功耗蓝牙外围设备(目标是通过蓝牙从 iPhone 发送数据)。我目前正在使用工具hciconfig
,hcitool
和hcidump
。
我目前的实验是宣传具有特定 UUID 的服务,iOS CoreBluetooth 库将获取该服务。(注意:我不是要创建 iBeacon)。
现在,它实际上就像困扰我的一个单一命令一样简单。
我认为它应该做的是:
- 0x08:将组设置为 BLE
- 0x0008:将命令设置为 HCI_LE_Set_Advertising_Data
- 0x15:将Header中的有效字节长度设置为21。(标志包为3字节,服务结构为18字节)
- 0x02:将标志结构的长度设置为 2 字节
- 0x01:将结构类型设置为 AD 标志
0x1a:标志值:
/li>
(标志结束)
- 0x11 设置服务结构长度为17字节
- 0x07 设置结构类型为128位完整服务UUID列表
- 0x41 ... 0x50 将测试服务的 UUID 设置为 ABCDEFGHIJKLMNOP
据我所见hcidump
,它执行正确并且看起来像我想要的那样。但它被错误拒绝:
我花了一整天的时间试图让它正确。有技术的人看到我做错了吗?这是宣传服务的正确方式吗?
(感兴趣的读者的上下文:我已经成功地完成了我想要使用 NodeJs 中的 Bleno 库做的事情。但是,这不适合我们系统的大局。直接使用 HCITool 进行广告只是为了实验,将编写稍后在 Python 中)
bluetooth-lowenergy - 支持 Android 5 BLE 外设模式的智能手表
哪些 Android Wear 智能手表返回 true 以进行以下检查:
?
在 stackoverflow(支持 Android 5 BLE 外围模式的芯片组/设备)上,只有 Android 智能手机和平板电脑的列表。
编辑:华硕 ZenWatch 2 返回 false。
ios - 重启后连接蓝牙外设
重启手机后,我尝试重新连接外围设备。
我正在使用位置更新回调在后台启动 BLE 连接过程。ble 堆栈在后台正确初始化(已发送 CBCentralManagerStatePoweredOn 事件)
外围设备上的“连接”已启动,但未建立连接...
重启后重新连接设备有什么想法吗?
ios - 我可以实现一个 iOS 应用程序来充当 BLE 服务吗?
我可以实现一个 iOS 应用程序来充当蓝牙低功耗服务吗?
我需要能够以编程方式定义:
- 服务 UUID
- 服务的特征
- 一种更新这些值的方法
- 一种方式来定义用户权限的特性:读/写/通知
- 一种定义服务传输 (TX) 功率的方法
如果您能给我指出一个好的演示/示例以开始使用,甚至分享一些代码片段,这样它就可以成为 iOS 文档的一部分,我将不胜感激。
android - 如何使用 GattServer 以编程方式清除蓝牙缓存
我对 BLE 有点熟悉,我在继承代码方面遇到了一些问题。所以这个应用程序是这样工作的:
- 启用 BLE 后,应用程序会扫描设备
- 该应用程序显示找到的设备
- 用户选择要配对的设备
- 应用程序与设备配对
我面临的问题是,在配对多次(它会有所不同)后,手机无法发现设备,从而阻止用户配对。
我正在使用 GattServer 连接客户端设备,并且正在重置服务,如下所示:
重新启动手机,关闭蓝牙然后重新打开,卸载并安装应用程序都无法解决问题。唯一的解决方案是从 Android 应用程序管理器上的蓝牙共享应用程序中清除缓存。
这篇文章如何在不使用缓存地址的情况下在 Android 上以编程方式强制蓝牙低能耗服务发现类似的问题,但由于我们没有使用 BluetoothGatt 进行连接,因此它不是一个合适的解决方案。两者都不会重构整个继承的代码。
我在问你是否有办法使用 BluetoothGattServer 以编程方式清除缓存。
android - 小米 BLE 配对仅适用于调试
我们基于Nordic nRF51蓝牙低功耗芯片开发设备,whitch作为外设模式,并且有android应用,whitch作为蓝牙中枢。应用程序开始广告,我们的设备与手机配对(出现要求 PIN 码的弹出对话框)。
我们在某些手机上遇到了非常奇怪的问题,尤其是在小米手机上(我使用的是小米红米 Note 3 Pro):蓝牙配对只有在手机连接到 ADB 时才能正常工作:
- 我在没有连接手机的 USB 数据线的情况下开始做广告
- 出现 PIN 码对话框
- 我输入有效的 PIN 码
- 我可以看到蓝牙对已创建,但设备停止通信并在蓝牙对创建后立即断开连接。
如果我将 USB 线插入手机以在 Android Studio 中查看 logcat,一切正常 - 蓝牙配对工作正常,设备可以与手机进行通信!此问题仅在某些型号的手机中出现。我还尝试在 Android Studio 中修改“发布”设置以禁用优化并在发布版本中添加错误信息,但这并没有解决问题。
Logcat(配对正常):
可能有某种方法可以在应用程序中显示 logcat,而无需在没有 USB 的情况下进行 ADB 连接,或者我错过了日志中的某些内容。
我也不明白这一行: GKI_timer_update no work to be done when expected work
ios - 关闭应用程序的jetsam标准
我有一个 iOS 应用程序连接到外围设备,因此在后台运行。有时当内存不足的情况下,jetsam 决定关闭我的应用程序,即使根据 jetsam 日志它不是最大的运行进程。到目前为止,我的应用程序没有收到任何内存警告,因此甚至无法通过释放资源来响应此类事件。
首先,我想知道由于内存不足事件是否有关闭应用程序的任何标准。
其次,日志中的键是什么?例如状态键 - 它是否代表进程的当前状态,即当它被挂起时,是否意味着应用程序已被 jetsam 关闭?或者这可能是应用程序的状态,无论低内存事件如何
可以关闭多个进程吗?因为当我查看所有 JSON 时,只有一个进程具有 killDelta 键,而且它并不总是碰巧是最大的,即使这样我也可以看到有几个进程被挂起,这再次意味着不仅有一个被关闭?
我会很感激任何帮助谢谢
android - 支持 Android BLE 外设模式的设备
本文的更新,因为该文章中提到的许多设备不再可用...
有什么方法可以在不购买平板的情况下判断是否支持BLE外设模式?
“ Android Beacon Library ”已经有 18 个月没有更新了,所以它很快就过时了。
android - Android BLE 外设模式:未检测到自定义特征
我正在尝试在 Sony SmartWatch 3 上实现 BluetoothGattServer。
我可以成功地打开 Gatt 服务器以及做广告。
使用BLE Scanner 应用程序,在发现我的自定义服务及其自定义特征时,我得到了不一致的结果。
- 在三星 Galaxy Note 8 - Android 4.4 - 我可以正确检测到自定义服务和自定义特征;
- 在 Nexus 7 - Android 5.0.1 - 我可以检测到我的自定义服务,但只有一个带有奇怪 UUID 的特征:00000000-0000-1000-8000-00805f9b34fb
- 在三星 Galaxy Note 8 上 - CynaogenMod Marshmallow - 与 Nexus 7 相同。
这是我在 Wear 设备上运行的代码:
我还尝试使用来自https://www.uuidgenerator.net/的自定义生成的 UUID,但这样做更糟糕:要么我不能在包含名称的情况下做广告,要么如果我不包含名称,那么 BLE Scanner 应用程序将无法拾取我在所有设备上的定制服务。
我究竟做错了什么 ?