问题描述
- 求助蓝牙数据流读取问题,buffer的状态是一个迷
-
各位大大好,我是java小白+安卓小白,最近遇到一个头疼的问题:
我在创建蓝牙连接之后,开启新线程读取数据:(以下为线程类里的代码)
Thread ReadThread=new Thread(){
//开辟缓冲区buffer
byte[] buffer = new byte[1024];
int k=1;
int num=0;
public void run(){
try {while(count==0)
{
Log.e(TAG, "等待");
count =is1.available();
}
while(true){
Log.e(TAG, "读入数据");Log.e(TAG, "k="+k);
k++;
num = inputstream.read(buffer); //读入数据Log.e("TAG", "num="+num);
Log.e("TAG", "buffer="+buffer);String ss=toHexString1(buffer);//调用byte-->string方法
//data=inputstream.read();
if(is1.available()==0){
Log.e("TAG", "break");break;
}
}} catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
};
k是inputStream.read()执行的次数,num是读取进来的字节数量
大概就这样执行12次左右(k++到12,11次num显示为1024,最后一次只有30~50),logcat 输出“break”,也就是说此时is1.available()==0
可是我的蓝牙数据是一直不停得发送啊,求问各位大大为什么呢?还有就是,有一次我在if(is1.available()==0)之前写了data=is1.read();就出现了
k++不停,而每一次num都是有几十,这时候数据还可靠吗?为什么会出现这种情况呢?