蓝牙2

蓝牙服务端
有配对上的蓝牙之后
进行下一步
开启子线程服务器

        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    BluetoothServerSocket server = adapter.listenUsingInsecureRfcommWithServiceRecord(adapter.getName(), uuid);
                   while (true){
                       final BluetoothSocket accept = server.accept();
                       runOnUiThread(new Runnable() {
                           @Override
                           public void run() {
                               Toast.makeText(Main4Activity.this, accept.getRemoteDevice().getName()+"连接我了", Toast.LENGTH_SHORT).show();
                           }
                       });
                       new serverThreads(Main4Activity.this,accept,Main5Activity.progressBar1).start();
                   }

                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();

服务器代码
其中包含了 发送文字 和发送图片
发送文字 是用标记来分割字符串
分割好了之后来判断是否是图字

然后一边接受一边打印一边吐司

图片是接收到一个图片之后存入自己的
sd卡中去

public class serverThreads extends Thread{
    Activity activity;
    BluetoothSocket socket;
    ProgressBar progressBar;
    public serverThreads(Activity activity, BluetoothSocket socket, ProgressBar progressBar) {
        this.activity = activity;
        this.socket = socket;
        this.progressBar =progressBar;
    }

    @Override
    public void run() {
        super.run();
        try {
            InputStream inputStream = socket.getInputStream();
            byte arr[]=new byte[1024];
            int len = inputStream.read(arr);
            String s = new String(arr, 0, len);
            String[] split = s.split(" ");
            String type = split[0];
            Log.d("qweqwe",type+"");
            int max=Integer.parseInt(split[1]);
            if("text".equals(type)){
                final StringBuffer sb = new StringBuffer();
                int count=0;
                while ((len=inputStream.read(arr))!=-1){
                    count+=len;
                    sb.append(new String(arr,0,len));
                    if(count==max){
                        break;
                    }

                }
                Log.d("qweqwe","收到文字"+sb.toString());
                activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(activity, "收到文字"+sb.toString(), Toast.LENGTH_SHORT).show();
                    }
                });

            }else if("img".equals(type)){
                FileOutputStream fileOutputStream = new FileOutputStream("/sdcard/aaaaaaaaaaaaaaaaaaaa.jpg");
                int count1=0;
                progressBar.setMax(max);

                while ((len=inputStream.read(arr))!=-1) {
                    fileOutputStream.write(arr, 0, len);
                    count1 += len;
                    Thread.sleep(100);
                    progressBar.setProgress(count1);
                    if (count1 == max) {
                        break;
                    }
                }
                Log.d("qweqwe","收到图片");
                activity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(activity, "收到图片", Toast.LENGTH_SHORT).show();
                    }
                });
            }



        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

防止堵塞 写一个count 计数 然后在while中 计算 count+=len 计算如果
count==max之后 break 循环 防止堵塞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值