How to send more than 20 bytes data over ble in android?

后端 未结 4 526
终归单人心
终归单人心 2020-12-16 23:15

I am trying to send more than 33 bytes using simple loops, Is anybody has idea how to send more than 20 bytes data over android ble.

if(!mConnected) return;
         


        
4条回答
  •  悲哀的现实
    2020-12-16 23:46

    Sending more than 20 bytes via BLE is easily achievable by splitting your data into 20 byte packets and implementing a short delay (i.e. using sleep()) between sending each packet.

    Here's a short snippet of code from a project I'm working on that takes data in the form of byte[] and splits it into an array of the same, ( byte[][] ), in 20 byte chunks, and then sends it to another method that transmits each packet one by one.

        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);
    

    Here are two other very good explanations of how to achieve this:

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

    (Nordic Semi) Dealing Large Data Packets Through BLE

提交回复
热议问题