解决方案 »

  1.   

    把数据全部接收是最基本的 , 你的蓝牙数据 应该有 协议头 和 尾吧, 这些蓝牙协议有吧 你可以以 设置 一秒接收次数, 比如接收10次, 然后 , 根据协议 把 每个数据包中的byte数组 放在集合中, 逐一分析这些数组, 分析完之后 显示到界面中
      

  2.   

    /**
     * 接收数据线程
     */
    public static Thread ReadThread = new Thread() { public void run() {
    int num = 0;
    byte[] buffer = new byte[1024];
    byte[] buffer_new = new byte[1024];
    int i = 0;
    int n = 0;
    MainActivity.bRun = true;
    // 接收线程
    while (true) {
    try {
    while (MainActivity.inputStream.available() == 0) {
    while (MainActivity.bRun == false) {
    Log.i(MainActivity.TAG, "brun" + MainActivity.bRun);
    }
    }
    while (true) {
    num = MainActivity.inputStream.read(buffer); // 读入数据
    n = 0;
    String s0 = new String(buffer, 0, num);
    MainActivity.fmsg += s0; // 保存收到数据
    for (i = 0; i < num; i++) {
    if ((buffer[i] == 0x0d) && (buffer[i + 1] == 0x0a)) {
    buffer_new[n] = 0x0a;
    i++;
    } else {
    buffer_new[n] = buffer[i];
    }
    n++;
    }
    returnData = new String(buffer_new, 0, n); MainActivity.smsg += returnData; // 写入接收缓存 if (MainActivity.inputStream.available() == 0) 
    break; // 短时间没有数据才跳出进行显示

    }

    System.out.println("AA" + returnData);
    // 发送显示消息,进行显示刷新
    MainActivity.handler.sendMessage(MainActivity.handler
    .obtainMessage(1));
    } catch (IOException e) {
    e.printStackTrace();
    Log.e(MainActivity.TAG, e.toString());
    }
    }
    }
    };