关于用nexus 4 开发BLE应用过程数据写入后自动断开的问题

zhangwm1219_ 2013-09-06 01:35:03
目前在做android 蓝牙4.0的一个应用(开发手机为nexus 4),
nexus 4 蓝牙连接设备后 数据写入 不过1秒左右 提示断开了。
出现的现象为:因为硬件那边有个机制:要连接后写入指定数据,不然10秒后自动断开。
数据写入 是指,执行了我的写操作,但是在onCharacteristicWrite(BluetoothGattgatt,
BluetoothGattCharacteristiccharacteristic, int status)里面获取到的status=133,(应该就是写入不成功,但是硬件上面显示了我写入的数据)
写操作代码:(先获取到指定的服务,再获取到服务里面的指定特征,写入)
BluetoothGattServicemyBluetoothGattService = null;
myBluetoothGattService=gatt.getService(UUID.fromString(UUID_GET_MYSERVICE));
BluetoothGattCharacteristicmBluetoothGattCharacteristic=null;
mBluetoothGattCharacteristic=myBluetoothGattService.getCharacteristic(UUID.fromString(WRITE_UUID));
byte[]data = {0x00,(byte)0x0B,0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08};
mBluetoothGattCharacteristic.setValue(data);
mBluetoothGatt.writeCharacteristic(mBluetoothGattCharacteristic)
现在疑惑在:究竟是什么原因导致断开的问题。是我写入方法有问题还是API有问题(不太可能)
PS:如果断开了 不断去重新连接,会连接成功,并且不会断开
...全文
4829 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhanwen 2015-06-24
  • 打赏
  • 举报
回复
各位大神 解决了 就告诉我一下 我找了 一周了
lhanwen 2015-06-24
  • 打赏
  • 举报
回复
各位大神 又谁解决了133 和129 的错 就是有时候要重启蓝牙才能连接
nuan12 2015-03-30
  • 打赏
  • 举报
回复
重启手机或蓝牙 还是报133怎么办 求解啊。。。
zhangwm1219_ 2014-04-15
  • 打赏
  • 举报
回复
引用 24 楼 zhangwm1219 的回复:
将板子的LED 给关掉,即注释掉,还不明白里面的缘由。我的问题这样处理 很稳定了
android4.4的不需要
zhangwm1219_ 2014-04-04
  • 打赏
  • 举报
回复
引用 26 楼 u013175266 的回复:
请问下 UUID_GET_MYSERVICE 和 WRITE_UUID 要怎么来啊? 十万火急,感激不尽啊!
这个得和硬件端的沟通
yusy 2013-12-23
  • 打赏
  • 举报
回复
请问下 UUID_GET_MYSERVICE 和 WRITE_UUID 要怎么来啊? 十万火急,感激不尽啊!
yusy 2013-12-23
  • 打赏
  • 举报
回复
您好,我现在要做个手机能与设备相链接,然后向设备发指令的功能 请问下UUID_GET_MYSERVICE 和 WRITE_UUID 这个两个UUID 要怎么得来? 请教下要如何实现? 感激不尽
zhangwm1219_ 2013-10-30
  • 打赏
  • 举报
回复
将板子的LED 给关掉,即注释掉,还不明白里面的缘由。我的问题这样处理 很稳定了
  • 打赏
  • 举报
回复
我这边手机端是nexus4,设备有两个,一个是SENSORTAG,一个是自制的防丢器,IC都是cc2540 程序已经相对比较稳定了,大部份情况下可以运行正常。在少数的情况下,会出现问题(如onCharacteristicWrite返回的状态码133、连接上去后过几百毫秒就断开),一旦出现这种问题后,不管我自己写的程序,还是sensortag的程序,遇到的问题都是一样的,不能正常工作,nexus4的蓝牙后台服务偶尔还会挂掉(这个我怀疑应该是nexus4内部的蓝牙模块不稳定导致)。 出现问题后,不需要reset硬件,只需要把系统的蓝牙开关,关掉,再重新开启,就能恢复过来。 现在还不清楚问题所在,欢迎各位把自己遇到的问题和一些思路说一下
asdlai 2013-10-17
  • 打赏
  • 举报
回复
引用 10 楼 jqch521 的回复:
[quote=引用 9 楼 zhangwm1219 的回复:] 对了,你是用什么机子测试的
我用的是小米刷的4.3 我的问题解决了一半了 硬件侧有两种处理命令的方式 其中一种会导致断开另一种没有问题,还有一个问题就是同时连接多个设备同时发命令的问题不知道有没有处理过[/quote] 小米连接不会出现129的情况吗?
adgvcxz 2013-10-17
  • 打赏
  • 举报
回复
引用 20 楼 adgvcxz 的回复:
[quote=引用 2 楼 asdlai 的回复:] 应该是硬件方面的问题,同意楼主的观点{API有问题(不太可能)},顺便问下楼主我现在也在用nesux4做蓝牙4.0的开发,系统4.3(是自己刷得),问题:有时候会出现连接蓝牙设备时连不上,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接,这是什么问题?楼主有遇到过吗?求解。。
你好 我昨天也买了个板子做测试,也是133但是应该没有写成功,因为在蓝牙串口上没有消息。 还经常出现129,发现服务完毕后就断开。 我还想问问,我在发现服务的时候,我能在串口助手上给服务端多带几个服务和特征吗?[/quote] 写错了 我在回调里得到的是135,应该是没有写成功 onCharacteristicWrite() - Device=80:AA:9A:91:CE:D3 UUID=0000ff01-0000-1000-8000-00805f9b34fb Status=135
adgvcxz 2013-10-17
  • 打赏
  • 举报
回复
引用 2 楼 asdlai 的回复:
应该是硬件方面的问题,同意楼主的观点{API有问题(不太可能)},顺便问下楼主我现在也在用nesux4做蓝牙4.0的开发,系统4.3(是自己刷得),问题:有时候会出现连接蓝牙设备时连不上,除非在设置里把蓝牙关调再重新打开蓝牙,然后再连设备才能连接,这是什么问题?楼主有遇到过吗?求解。。
你好 我昨天也买了个板子做测试,也是133但是应该没有写成功,因为在蓝牙串口上没有消息。 还经常出现129,发现服务完毕后就断开。 我还想问问,我在发现服务的时候,我能在串口助手上给服务端多带几个服务和特征吗?
jqchenjoy 2013-10-16
  • 打赏
  • 举报
回复
引用 17 楼 zhangwm1219 的回复:
[quote=引用 10 楼 jqch521 的回复:] [quote=引用 9 楼 zhangwm1219 的回复:] 对了,你是用什么机子测试的
我用的是小米刷的4.3 我的问题解决了一半了 硬件侧有两种处理命令的方式 其中一种会导致断开另一种没有问题,还有一个问题就是同时连接多个设备同时发命令的问题不知道有没有处理过[/quote] 你好,我想请教下 你说的硬件侧有两种处理命令的方式是指什么?我们这边是用的是CC2540的板子[/quote] 我们用的硬件设备会通过代码实现两种处理方式,是自己写的 不是通用的
zhangwm1219_ 2013-10-16
  • 打赏
  • 举报
回复
引用 18 楼 jqch521 的回复:
[quote=引用 17 楼 zhangwm1219 的回复:] [quote=引用 10 楼 jqch521 的回复:] [quote=引用 9 楼 zhangwm1219 的回复:] 对了,你是用什么机子测试的
我用的是小米刷的4.3 我的问题解决了一半了 硬件侧有两种处理命令的方式 其中一种会导致断开另一种没有问题,还有一个问题就是同时连接多个设备同时发命令的问题不知道有没有处理过[/quote] 你好,我想请教下 你说的硬件侧有两种处理命令的方式是指什么?我们这边是用的是CC2540的板子[/quote] 我们用的硬件设备会通过代码实现两种处理方式,是自己写的 不是通用的[/quote]请问你们用的是CC2540吗,我想确认是不是硬件端导致的断开。我这边现在针对当前项目光去连接 就会导致断开。
zhangwm1219_ 2013-10-14
  • 打赏
  • 举报
回复
引用 10 楼 jqch521 的回复:
[quote=引用 9 楼 zhangwm1219 的回复:] 对了,你是用什么机子测试的
我用的是小米刷的4.3 我的问题解决了一半了 硬件侧有两种处理命令的方式 其中一种会导致断开另一种没有问题,还有一个问题就是同时连接多个设备同时发命令的问题不知道有没有处理过[/quote] 你好,我想请教下 你说的硬件侧有两种处理命令的方式是指什么?我们这边是用的是CC2540的板子
ethanzhen 2013-10-12
  • 打赏
  • 举报
回复
你试试在device.connectGatt()之前stopLeScan()
zhangwm1219_ 2013-10-12
  • 打赏
  • 举报
回复
引用 13 楼 adgvcxz 的回复:
[quote=引用 6 楼 zhangwm1219 的回复:] 补充: #define GATT_ERROR 0x0081(133) #define GATT_INTERNAL_ERROR 0x0081(129)
你好,我也在做ble,请问UUID_GET_MYSERVICE这个uuid是怎么定义的呢,是不是客户端只能用服务端传进来的服务和特征进行通信呢?[/quote] 是啊 你只能对广播出来的服务和特征操作
zhangwm1219_ 2013-10-12
  • 打赏
  • 举报
回复
引用 14 楼 ethanzhen 的回复:
你试试在device.connectGatt()之前stopLeScan()
这个考虑过,
adgvcxz 2013-10-11
  • 打赏
  • 举报
回复
引用 6 楼 zhangwm1219 的回复:
补充: #define GATT_ERROR 0x0081(133) #define GATT_INTERNAL_ERROR 0x0081(129)
你好,我也在做ble,请问UUID_GET_MYSERVICE这个uuid是怎么定义的呢,是不是客户端只能用服务端传进来的服务和特征进行通信呢?
jqchenjoy 2013-09-29
  • 打赏
  • 举报
回复
引用 9 楼 zhangwm1219 的回复:
对了,你是用什么机子测试的
我用的是小米刷的4.3 我的问题解决了一半了 硬件侧有两种处理命令的方式 其中一种会导致断开另一种没有问题,还有一个问题就是同时连接多个设备同时发命令的问题不知道有没有处理过
加载更多回复(11)

80,350

社区成员

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

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