关闭

安卓蓝牙4.0开发

标签: 安卓蓝牙
143人阅读 评论(0) 收藏 举报
分类:

  这里不是说开发的技术代码,技术和代码可以在网上找到很多的例子,而我要说的是开发中遇到的一些坑;

在做蓝牙设备和手机连接开发过程中,曾犯的一个错误,在这里说一下,希望遇到朋友可以不用踩这个坑。不多说,上重点:因为我是最开始做的是2.0的蓝牙,用的是socket通信并未发现这个问题,后来用4.0开发的时候,用的是mBluetoothGatt.writeCharacteristic这类的通讯方法(但是底层用的是不是socket的我暂时还未研究),后来在通讯的时候,我发现原来从手机端发的数据只能发送20个字节,后面多出的就自动省略了,但是从蓝牙设备发到手机的数据不管多大都能接收,然后在网上找了些资料,才知道,并不是蓝牙的问题,而是蓝牙4.0规定的其实是20多个字节,但是有几个是其他占用,剩下20个才是能真正交流的数据大小规格,原因好像是蓝牙4.0是低功耗的,蓝牙设备都是微型设备可能没有那么大的存储空间,当然也可能有其他的原因。所以使用蓝牙4.0开发的小伙伴们,可以采取分包的发送方式或者其他的方式来发送大数据。

下面是我用的一个小方法,有需要的可以用一用

final byte[] data = msg.getBytes();

while (fenbao) {
if (charSendBufferPos + 20 > data.length) {
Len = (byte) (data.length - charSendBufferPos);
fenbao=false;
}
byte[] bao = new byte[Len];
for (byte i = 0; i < Len; i++) {
bao[i] = data[i + charSendBufferPos];
}
target_chara.setValue(bao);
// 调用蓝牙服务的写特征值方法实现发送数据
mBluetoothLeService.writeCharacteristic(target_chara);
charSendBufferPos += 20;
try {
Thread.sleep(20);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:839次
    • 积分:70
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条