问题标签 [android-ble]
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 - 如何在媒体播放器中从 Byte[] 播放?Byte[] 包含 Heart Beat Sound 数据
如何在数据来自多普勒(心跳声音的 BLE 设备)的媒体播放器中播放字节 []。数据形式如下:
[85, -86, 9, -96, 53, 50, 24, -86, -103, -65, -72, 36, 67, 24, -102, -103, -103, -102, -67, -87、55、115、24、8、-22、-120、-119、-104、20、69、0、-120、-54、-104、-103、-119、36、85、0、 -128, -5, -120, 8, 3, 98, -128, -128, -113, -80, -128, -128, 83, 0, -128, -118, -6, -128, 8 , 36, 88, 8, 8, -51, -128, -120, 2, 66, 16, -128, -128, -34, -104, 8, 0, 82, 40, 8, 8, -81 , -64, -128, -128, 52, 33, 8, 8, -113, -69, 0, -128, 82, 33, -120, -128, 25, -81, -55, -128, -126、83、16、-120、0、0、34、-49、0]
第一个字节数组由 107 个声音包组成。
像这样的许多声音数据都是从ble一个接一个地传来的。如何在媒体播放器中连续播放这些数据,直到我们按下停止按钮。
在文档中是这样给出的:
该数据包括 107 个字节,最后 3 个字节是扩展字节(从 2.0 版开始),用于传输 ADPCM 编码的 2 个数据变体。因此它可以帮助正确解码声音数据。Parity Sum 占第 104 个字节,是 S1-S100 的 Parity Sum。ADPCM Index & ADPCM Valpred:对每个声音数据包进行编码之前的2个编码变体。接收器从包中捕获“ADPCM Index”,然后取值为“ADPCM Index”,然后将“Valpred”的8个高位和8个低位合并为一个“int” ”,然后将值设置为“ADPCM Valpred”,然后进行解码。
我需要同时播放这个音频数据我需要把这个数据保存到一个文件中
非常感谢任何帮助或工作代码示例。先感谢您。
我已经尝试了所有这些链接,但没有对我有用:
android - 如何确保应用程序与蓝牙 LE 设备断开连接?
我有两个要连接的设备。当我离开应用程序时,我将与设备断开连接。两者都经历相同的过程,但有时其中一个设备会保持连接,直到我强制关闭应用程序。
我在设备上有指示灯,确认它仍然认为它已连接,并且应用程序的其他实例无法连接到它,直到我强制关闭第一个。在下面的日志中,第一个列出的设备保持连接。
在我调用 gatt.close() 之后,我抓住了 BluetoothManager 并在已连接设备列表中查找我的设备。它在列表中。
从BluetoothGattCallback
此类被添加到命令队列中。
android - Android Ble 断开连接时间延迟
我写了一些代码来将我的 android 手机连接到 ble 设备。当我关闭 ble 设备时,我的手机需要几秒钟(2-20 秒)来通知我它已失去与 ble 设备的连接。有什么方法可以立即通知我吗?我可以更改连接监督超时吗?
android - Android BluetoothLEGatt BLE 未与设备保持连接
我正在运行来自 google 的示例 BluetoothLeGatt 应用程序,并且无法保持设备连接。我觉得我有点随机行为。蓝牙通常不会在第一次尝试时连接(所以通常我几乎想说永远不会。)
大约 50% 的时间当我按下连接按钮时,应用程序会显示状态为已连接。但是,硬件设备有一个 LED,它应该在连接时亮起,但它不亮。然后 5 或 6 秒后它会断开连接。我怀疑它正在连接一瞬间然后断开连接,并且该应用程序暂时没有收到备忘录。这是日志猫:
也许有 10% 的时间我点击了连接按钮却没有看到任何事情发生:
也许它实际连接的时间有 30%。
可能是硬件/固件问题。虽然我用 iPhone 连接到设备时没有问题,但我想得出的结论是 android 代码在某处损坏了。我可以发布所有 BLE 代码,但实际上我只是下载了示例,这样我就知道我没有破坏它。
编辑:对于那些跟踪我的数学的人。最后 10% 的时间应用程序在扫描时找不到任何东西,我必须重新启动应用程序。
编辑:我已经从 Play 商店下载并尝试了 2 个其他 BLE 应用程序,并遇到了与谷歌示例 BLE 应用程序相同的连接问题。android的BLE实现是否需要与iOS不同的一些设置?
android - 如何在不停止服务或断开 ble 的情况下建立使用服务连接的 BLE 连接以跨活动使用?
我有 3 个组件。
Activity1 有用于连接和断开 BLE 连接的按钮
Activity2 需要从 BLE 设备获取数据。
Service 所有的连接逻辑(如 getRemoteDevice()、connectGatt 等)都属于服务。
Activity1正在通过绑定服务连接到 BLE 设备。
并在按下按钮后立即连接到 ble 设备。
现在,当我从Activity1移动到Activity2时,我正在取消绑定Activity1中的服务。
现在如何在Activity2中使用现有的 BLE 设备连接?
我的临时解决方案:
当通过从Activity2上下文绑定到Activity2的新服务实例移动到 Activity2 时,我正在重新连接BLE 设备。(这是我不想要的。)
在Activity2中,我正在检查我的服务是否已经在运行,如果没有运行,那么我将再次从Activity2上下文绑定服务。
在ServiceConnection回调下触发onServiceConnected()中的连接
检查我的服务是否正在运行
但是函数isMyServiceRunning()总是返回 false。表示从Activity1移动到Activity2时服务断开连接
在活动中保持 ble 设备连接的任何解决方案?
android - 在没有 BluetoothGATT 的情况下断开 BluetoothDevice
我的应用程序与 BLE 外围设备通信。有时,应用程序在该外围设备已连接的情况下启动。我可以通过调用来检索设备:
然后我可以根据地址或 UUID 过滤 connectedDevices。但是,BluetoothDevice 没有断开连接的方法。要断开连接,我需要一个 BluetoothGATT 实例。但我能看到获取 BluetoothGATT 实例的唯一方法是调用
这需要很长时间。最重要的是,当我调用 disconnect() 时,我在调用 connectGatt 后返回的 BluetoothGatt 实例似乎并没有真正断开外围设备。
所以我的问题是:
- 有没有办法在不调用 connectGatt 的情况下断开连接的蓝牙设备?
- 为什么 connectGatt 对于已经连接的设备需要这么长时间?
- 在连接的蓝牙设备上调用 connectGatt 是否有效?
谢谢
android - 云台“BeaconSighting”监听器工作不稳定
我正在尝试在 Android 中获取 Gimbal 信标距离更改运行时。我能够连接到我的信标,并且同样反映在 android 应用程序中。
但我无法在应用程序中获取更改后的 RSSI。下面是我的代码。
下面是我的日志输出。
这就是问题所在。
日志“beacon1”和“beacon2”被随机/不规则地打印。我不明白为什么“ BeaconEventListener ”有这样的行为。大多数时候它根本没有打印出来。因此,我没有被路障,因为我在移动时无法获得手机和信标之间的距离。
编辑
能够提取更多错误日志。在 logcat 输出中添加了最后 2 行。
任何帮助表示赞赏。
android - 即使有位置权限,也不会触发 Android BLE startDiscovery() 回调
该应用程序的目标是 22,最低版本为 18,并且可以在 Lollipop 上按预期工作。启动 Marshmallow 应用程序需要 BLE 的“精细”和“粗略”权限。我已经添加了它们,但没有触发回调。
安卓清单:
发现是通过 UUID 过滤完成的:
打回来:
我可以看到设备已找到,但未触发回调:
我已经检查了 Android > 设置 > 应用程序 > 权限中授予的“位置”权限。在 Nexus 9 上进行测试。有什么想法吗?
PS。我已经尝试过 API 21 adapter.getBluetoothLeScanner().startScan(filters, scanSettings, internalScanCallbackAPI21);
,但仍然没有运气 - 类似的日志但没有触发回调。
聚苯乙烯。如果设置报告延迟,我让它工作:
如果设置0
为立即回调仍然没有让监听器被触发。
bluetooth-lowenergy - 如何使用 google play 服务 api 开启 BLE
我尝试使用 google play service apis 的位置服务打开 ble。首先我连接成功。
在 onConnected() 内部,我调用了 setNeedBle(true):
但它不工作。我什至没有得到弹出窗口。我错过了什么吗?或者是否有任何其他可以打开 ble 的基于位置的服务 api。