如何android ble协议读取数据速度

zlc19910818 2015-08-21 04:29:06
大家好,不知道论坛里面做BLE的多不多。
现在我用android 4.4 作为central设备,ti的c2451作为peripheral 设备,已经成功读取c2541的characteristic.但是速度却比较慢。我在android上面抓了一下发现完成一次20B读取需要50ms左右。(我已经修改了c2541上面的连接参数,min/max connection interval 已经调成6了, slave latency为0 ). 但是根据BLE协议上面它的传输速度可以达到5.9kb/s, ti的人也说最起码4kb/s 是没问题的。所以问题是不是在android 代码这边。我是基于 BluetoothLeGatt Demo 修改的。下面是相关部分代码。如果需要我可以发全部代码。所以有没有做过这方面内容的高手帮忙解决一下?不胜感激。
发出读数据请求:
//测试读取当前Characteristic数据,会触发mOnDataAvailable.onCharacteristicRead()
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
mBLE.readCharacteristic(gattCharacteristic);
}
}, 5);
接收到数据:
@Override
public void onCharacteristicRead(BluetoothGatt gatt,
BluetoothGattCharacteristic characteristic, int status) {
if (status == BluetoothGatt.GATT_SUCCESS)
Log.e(TAG,"onCharRead "+gatt.getDevice().getName()
+" read "
+characteristic.getUuid().toString()
+" -> "
+Utils.bytesToHexString(characteristic.getValue()));
}
...全文
1953 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
一梦天荒 2017-03-13
  • 打赏
  • 举报
回复
问题解决了吗?我现在也遇到了。求赐教
Fans_Mo 2016-11-08
  • 打赏
  • 举报
回复
亲。。。。一年过去了。。。。。你又@我。。。。。。
幻影宇寰 2016-10-10
  • 打赏
  • 举报
回复
引用 5 楼 mapeifan 的回复:
楼主,可以看下源码吗?谢了,兄弟我最近也在搞这一方面的东西,感觉跟传统蓝牙的区别还是蛮大的,传统蓝牙搞过一段时间,最近又要搞BLE ,时间不多,哥们给我发个你的demo,我参考下,在下先谢过了,我的邮箱790462002@qq.com 谢了(PS:目前我只做了扫描的功能,链接这块还没搞,传统蓝牙直接扫描,BLE却麻烦一点)
引用 7 楼 opponent58 的回复:
楼主你好,最近也在做ble这一块,设备是提供温度信息,Android手机也能和设备连接,但是读取不到温度信息。求指教,顺便求demo一份550764580@qq.com
引用 11 楼 hzlswkuqzgehvj1994 的回复:
楼主你好!最近在做BLE,在接受数据时接收不到。求指点,要是有源码发一份谢谢,邮箱是1632401541@qq.com
引用 12 楼 baidu_35936880 的回复:
楼主,我也被这个Ble搞得挺头疼的,如果你解决了,麻烦给点指引,给源码我学习参考,谢谢 769593935qq。com
Android BLE基础操作框架,源码地址:https://github.com/xiaoyaoyou1212/BLE,希望对你们有所帮助!
奋斗的IT青年 2016-10-10
  • 打赏
  • 举报
回复
android 发送的也不快(一个包限制20字节,每次的发送间隔大于20ms),但是丢包。搞不懂啥情况
baidu_35936880 2016-08-22
  • 打赏
  • 举报
回复
楼主,我也被这个Ble搞得挺头疼的,如果你解决了,麻烦给点指引,给源码我学习参考,谢谢 769593935qq。com
利剑封天 2016-07-29
  • 打赏
  • 举报
回复
楼主你好!最近在做BLE,在接受数据时接收不到。求指点,要是有源码发一份谢谢,邮箱是1632401541@qq.com
d-lancer 2016-04-05
  • 打赏
  • 举报
回复
麻烦楼主帮我解答下:我已经实现的功能是可以发送数据控制,但是接收的数据并非反馈的数据而是发送控制的数据,也就是写进入和都出来的都是写的数据,怎么办?另外 notice和read 有什么区别? 谢谢。
Junk Chen 2016-03-21
  • 打赏
  • 举报
回复
Android Ble4.0的速度可以的,达到5k都没有问题的,应该是你的cc2540那边没有发过来没有处理好
DuoYiDianAiShao 2016-03-03
  • 打赏
  • 举报
回复
请问你解决这个问题了么?我也遇到这个问题了,求帮助
opponent58 2016-01-23
  • 打赏
  • 举报
回复
楼主你好,最近也在做ble这一块,设备是提供温度信息,Android手机也能和设备连接,但是读取不到温度信息。求指教,顺便求demo一份550764580@qq.com
anabiosispe 2015-11-29
  • 打赏
  • 举报
回复
传输速率不要天真的认为只是受本身的蓝牙协议版本限制的,实际上跟设备两端的蓝牙模块也有相当的关系。 凭我的实际经验,ble协议只是理论速率,实际上有很多蓝牙模块芯片根本远达不到那个理论速率
Fans_Mo 2015-11-26
  • 打赏
  • 举报
回复
楼主,可以看下源码吗?谢了,兄弟我最近也在搞这一方面的东西,感觉跟传统蓝牙的区别还是蛮大的,传统蓝牙搞过一段时间,最近又要搞BLE ,时间不多,哥们给我发个你的demo,我参考下,在下先谢过了,我的邮箱790462002@qq.com 谢了(PS:目前我只做了扫描的功能,链接这块还没搞,传统蓝牙直接扫描,BLE却麻烦一点)
lucky_tom 2015-11-03
  • 打赏
  • 举报
回复
考虑一下notify的方式,在onCharacteristicChanged回调方法中接收数据,ble速度2kb/s左右没问题的。
Edisonliao666 2015-10-31
  • 打赏
  • 举报
回复
最近我也在搞BLE,还没搞明白Characteristic、Service、Indicator三者的角色和关系
github_32456853 2015-10-31
  • 打赏
  • 举报
回复
我最近项目做的东西跟你一样,也是android 4.4 和 c2451通讯,这个问题你要问单片机那边的开发人员,他c2451芯片的连接间隔设置为多少了,是否是50ms
八爪 章鱼 2015-10-29
  • 打赏
  • 举报
回复
可以考虑一下定时发送,做个定时器,定时3ms发送20B数据
ble audio补丁原理是利用hidraw节点捕捉协议栈发送的语音数据,目前Android Blueroid将ble语音数据和按键信息通过hid发送出去,通过建立hidraw节点,可以从中捕捉到语音数据。目前通过ble hal实现从hidraw中读取遥控器语音数据,在Android框架层上就通过配置文件将ble hal导入到音频框架中,并通过绑定Android原生已有的耳麦设备来完成audio音频策略选择,通过apk检测ble连接状态,通知audio服务耳麦设备的状态就可以使得录音通路切换至ble hal,实现从ble获取录音数据功能。 打补丁前最好使用干净的环境,不要有别家方案ble补丁,否则可能会有不兼容问题。 补丁如若不能使用首先检查节点是否存在和其权限,正常节点权限如下: ls -l /dev/hidraw* crw-rw---- 1 system audio 241, 0 2018-12-18 13:42 /dev/hidraw0 audio用户组有读写权限。 2、如果selinux模式为Enforcing,可以通过logcat搜索avc关键字。有如下类似提示则为异常,提示进程没有权限,检查sepolicy是否设置正常: avc: denied { read } for name="/" dev="tmpfs" ino=6145 scontext=u:r:mediaserver:s0 tcontext=u:object_r:device:s0 tclass=dir permissive=0 //Android 5.0和6.0版本,audio hal被mediaserver进程加载 avc: denied { read } for name="/" dev="tmpfs" ino=8125 scontext=u:r:audioserver:s0 tcontext=u:object_r:device:s0 tclass=dir permissive=0 //Android 7.0版本,audio hal被audioserver进程加载 avc: denied { read } for name="hidraw" dev="sysfs" ino=16332 scontext=u:r:hal_audio_default:s0 tcontext=u:object_r:sysfs:s0 tclass=dir permissive=0 //Android 8.0和9.0版本,audio hal被android.hardware.audio@2.0-service进程加载 3、检查audio的配置,打上patch后,首先确认小机上文件是否有修改到,目前文件可能位于/vendor/etc或/system/etc目录下,其中/vendor/etc下的配置文件是优先解析的。确保文件无误后,通过dumpsys media.audio_policy查看ble hal是否正常加载。 以下是相关说明: AudioPolicyManager: 0xf20c5200 Command Thread: 0xf20af140 Tones Thread: 0xf20af020 ... - Available input devices: Device 1: - id: 3 - type: AUDIO_DEVICE_IN_BUILTIN_MIC - Profiles: Profile 0: - format: AUDIO_FORMAT_PCM_16_BIT - sampling rates:8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 - channel masks:0x000c, 0x0010 Device 2: - id: 20 - type: AUDIO_DEVICE_IN_WIRED_HEADSET //对应的数值是0x80000010 - name: RemoteDM1204 - Profiles: Available input devices指示当前可用设备,目前ble hal是和AUDIO_DEVICE_IN_WIRED_HEADSET设备绑定,如果需要录音走ble hal,AUDIO_DEVICE_IN_WIRED_HEADSET设备必须出现在可用设备中,如果没有,就可能是补丁中hidaudio.apk的问题。 HW Modules dump: ... - H

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧