Android BLE连接时间间隔

 Hide-my-love 发布于 2023-01-30 20:47

我正在使用Android BLE API在Nexus 4上开发BLE应用程序.我有几个疑问/疑惑:

1)有没有办法设置/覆盖BLE中央设备的连接或通知间隔.我发现对于Android,默认连接间隔固定为7.5毫秒.有没有办法更改此连接/通知延迟间隔设置.

资料来源:http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag?DCMP = lprf-stdroid&HQS = lprf-stdroid-pr-wiki1 #Supported_Android_devices

2)在连接到远程设备时,我面临着在随机时间间隔之后断开连接的问题.有许多人面临连接丢弃问题,说明当Android使用Android 4.3 API进行BLE连接时,android是不稳定的.这有什么解决方案吗?

编辑

我在这里观察到的另一个问题是,当需要时间重新连接时,它会随着一些L2CAP日志而来......跟随日志

Trying to create a new connection laststate_ BOND_NONE
D/BluetoothGatt( 9620): connect() - device: 1C:BA:81:11:CA:36, auto: true
D/BluetoothGatt( 9620): registerApp()
D/BluetoothGatt( 9620): registerApp() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510
D/BtGatt.GattService( 3208): registerClient() - UUID=1adsds0911-4sdsc-41dc-8ac0-0sdsdf550510
D/BtGatt.btif( 3208): btif_gattc_register_app
D/BtGatt.btif( 3208): btgattc_handle_event: Event 1000
D/BtGatt.btif( 3208): btif_gattc_upstreams_evt: Event 0
D/BtGatt.GattService( 3208): onClientRegistered() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510, clientIf=5
D/BluetoothGatt( 9620): onClientRegistered() - status=0 clientIf=5
D/BtGatt.GattService( 3208): clientConnect() - address=1C:BA:8C:1E:CA:36, isDirect=true
D/BtGatt.btif( 3208): btif_gattc_open
D/BtGatt.btif( 3208): btgattc_handle_event: Event 1004
D/BtGatt.btif( 3208): btif_get_device_type: Device [1c:ba:8c:1e:ca:36] type 2, addr. type 0
W/bt-l2cap( 3208): L2CAP - LE - cannot start new connection at conn st: 3

任何想法如何通过L2CAP清除cahce?

2 个回答
  • 当我研究Android BLE API时,我找不到用于更改连接间隔和监督超时的API(也许是奴隶延迟,从我的脑海中记不起来).我确实需要更改这些,您必须从从属设备进行更改.

    Ashwini的答案你可以忽略,他说的话根本就不正确.符合蓝牙4.0标准的主设备必须支持从7.5毫秒到4.0秒的连接间隔.从设备可以请求改变连接参数并发送连接参数更新请求,并且主设备将相应地更新连接参数.

    在另一方面,主(在你的情况下,Android设备)可能在改变自身的连接间隔,以节省电力的兴趣,和你想的连接区间更改为更宽松的时间间隔.

    在我看来,Android API甚至几个设备上的硬件实现还不成熟,并且在BLE的意义上使用BLE可以在Android设备上获得更多功能.在未来,我相信你会在API级别和主机和控制器的分区上看到更好的支持,这样即使移动设备的主CPU处于休眠状态,控制器也可以保持连接.这将节省大量电力,您可以24/7保持与BLE设备的连接,而不会对电池寿命造成任何重大限制.

    2023-01-30 20:49 回答
  • @Ashwini:正如上一篇评论中提到的连接间隔7.5,它在一段时间内工作得更好.一段时间后,出现L2CAP问题,除非重置蓝牙适配器,否则连接不起作用.此外,当禁用蓝牙适配器并以编程方式重新启用时,会发现一种奇怪的行为.我们在下面收到以下GKI错误:

    > /GKI_LINUX( 2232): ##### ERROR : GKI_exception: GKI_exception(): Task State Table
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: TASK ID [0] task name [BTU] state [0]
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: TASK ID [1] task name [BTIF] state [1]
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: TASK ID [2] task name [A2DP-MEDIA] state [1]
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: GKI_exception 65531 Sending to unknown dest#####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: 
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): 
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: * GKI_exception(): 65531 Sending to unknown dest
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): ##### ERROR : GKI_exception: ***************
    > 02-05 15:49:24.466 E/GKI_LINUX( 2232): #####
    

    此外,这个createBond API是否有助于改善与BLE设备的连接(实际上不需要配对连接)?

    2023-01-30 20:49 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有