android-蓝牙LE广告周期性地启动和停止时失败

android-蓝牙LE广告周期性地启动和停止时失败,第1张

概述我已经尝试过蓝牙LE广告,即使用Android手机作为BLE“外围”设备.启动停止恒定的广告一次可以很好地工作,但是如果我想实际传输一些变化的数据,则需要一个周期地启动,停止和重新启动广告,并始终更改广告包.我当然使用这些方法:BluetoothLeAdvertiser.startAdvertising()Bluetooth

我已经尝试过蓝牙LE广告,即使用Android手机作为BLE“外围”设备.启动和停止恒定的广告一次可以很好地工作,但是如果我想实际传输一些变化的数据,则需要一个周期地启动,停止和重新启动广告,并始终更改广告包.

我当然使用这些方法:
BluetoothLeAdvertiser.startAdvertising()
BluetoothLeAdvertiser.stopAdvertising()

至少在Motorola Moto G 4G第二代上. (XT1072)和AndroID 5.0.2,该循环仅运行了一段时间,然后蓝牙堆栈出现了问题,无法再开始新的广告.快速运行周期时,这种情况会很快发生;如果运行缓慢,则需要花费更多时间,因此可能与缓冲区的填充有关.

我的问题是:在摩托罗拉以外的其他设备上也会发生这种情况吗?

(当然也欢迎其他任何相关评论.)

从理论上讲,它可能取决于某些制造商特定的HAL实施方式等.因此,我想知道我是否应该再购买另一台设备来进行此工作,因为来自Google / Motorola的任何修复程序都将花费一些时间.

这个测试应用.可以用来尝试:

https://bitbucket.org/MarkusKauppinen/bleadvertisertest

如果一切顺利,它将很高兴永远保持广告投放,并且如果此问题再次出现,它将在几分钟左右的时间内显示一个对话框.如果您的设备根本不支持Bluetooth LE广告或BLE,它将崩溃. (这只是一个快速而肮脏的测试应用程序.)

重现此问题的另一种简便方法是从https://github.com/devunwired/accessory-samples运行“ bluetoothadvertiser”应用程序,并保持快速点击UI上的“ Updateadvertise”按钮一段时间.

额外细节:

Lollipop中添加了对蓝牙LE外设模式的支持(广告需要),而在4.x中不可用.仅某些设备支持外设模式.兼容性至少包含在:

https://altbeacon.github.io/android-beacon-library/beacon-transmitter-devices.html
Chipsets/Devices supporting Android 5 BLE peripheral mode
chipsets supporting BLE peripheral role on Android 5

例如,这些设备应获得以下支持:摩托罗拉Moto E 4G(2015),摩托罗拉Moto G 4G(第二代),索尼Xperia M4 Aqua,中兴Blade S6,摩托罗拉Moto X(2014),三星galaxy S6,谷歌Nexus 6 ,Google Nexus 9,HTC One M9,三星galaxy S6 Edge.

至于“脏细节”,在发生这种情况之前,我总是可以在LogCat中看到“ GKI_Exception”:

GKI_exception(): 65524 getbuf: out of buffers

在第一个“ GKI_Exception”之后不久,广告因AdvertiseCallback.ADVERTISE_Failed_INTERNAL_ERROR而失败.线…

E/BtGatt.btif? ### ASSERT :
external/bluetooth/bluedroID/main/../btif/src/btif_gatt_clIEnt.c line
803 Context transfer Failed! (3) ###

…可能相关,但我对BlueDroID不熟悉.所述断言在这里:

https://android.googlesource.com/platform/external/bluetooth/bluedroid/+/android-5.0.2_r1/btif/src/btif_gatt_client.c#803

一些可能相关的问题:
https://code.google.com/p/android/issues/detail?id=65455<-我为此添加了一些注释和日志文件.
https://code.google.com/p/android-developer-preview/issues/detail?id=1753
Scanning large number of BLE Tags
Bluetooth Crash on Samsung S4

解决方法:

我在Moto G 2nd Gen上测试了您的应用,并遇到了同样的问题.

我在运行AndroID 6.0的Nexus 9平板电脑上进行了尝试,但无法重现该错误,而且似乎可以正常使用.同样,在具有AndroID 5.1.1的关系播放器上,它似乎可以正常运行.
因此,这实际上是Moto G的问题,或者-我认为更可能是-AndroID 5.0.2的一个错误,该错误在更高版本中得到了解决.

总结

以上是内存溢出为你收集整理的android-蓝牙LE广告周期性地启动和停止时失败全部内容,希望文章能够帮你解决android-蓝牙LE广告周期性地启动和停止时失败所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1095080.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存