如何在android中发送超过20个字节的数据?

我试图使用简单的循环发送超过33个字节,是否有人知道如何通过android ble发送超过20个字节的数据.

if(!mConnected) return;
        for (int i = 0; i<str.length;i++) {
            if(str[i] == str[str.length -1]){
                 val = str[i]+"\n";
            }else {
                val = str[i] + "_";
            }
            System.out.println(val);
            mBluetoothLeService.WriteValue(val);
        }

解决方法:

通过将数据分成20字节数据包并在发送每个数据包之间实现短延迟(即使用sleep()),可以轻松实现通过BLE发送超过20个字节.

这是我正在处理的项目的一小段代码,它以byte []的形式获取数据,并以20字节的块的形式将其拆分为相同的数组(byte [] []),然后发送它是另一种逐个传输每个数据包的方法.

    int chunksize = 20;
    byte[][] packets = new byte[packetsToSend][chunksize]; 
    int packetsToSend = (int) Math.ceil( byteCount / chunksize);

    for(int i = 0; i < packets.length; i++) {
        packets[i] = Arrays.copyOfRange(source,start, start + chunksize);
        start += chunksize;
    }

    sendSplitPackets(packets);

以下是另外两个关于如何实现这一目标的非常好的解释:

(*) Android: Sending data >20 bytes by BLE

(Nordic Semi) Dealing Large Data Packets Through BLE

上一篇:python – 获取最后抛出的异常的引用


下一篇:java – Android蓝牙连接另一个蓝牙设备