基于Android 6.0 的蓝牙开发(2)-- 发送数据,接收数据,实现改变色板功能

时间:2022-04-06 05:36:32

 一、发送数据

public static OutputStream os;
os = socket.getOutputStream();//获取输出流
os.write(message1.getBytes());
os.flush();//将输出流的数据强制提交

此处发送数据可以封装为一个方法,并设置为一个按键事件。设置按键事件的写法可以参考上一篇   链接!!!!!!

二、接收数据

此步骤放置于一个新的子线程中

InputStream is = socket.getInputStream();

然后将接收数据的代码放于一个永真循环中

                                int count = 0;
                                while (count == 0) {
                                    count = is.available();
                                    if (!bluetoothAdapter.isEnabled()) {
                                        is.close();
                                        if (os != null) {
                                            os.close();
                                        }
                                    }
                                }
                                byte buf[] = new byte[count];
                                if (buf != null) {
                                    is.read(buf, 0, count);
                                    message = new String(buf);
                                    handler.post(RefreshTextView);
                                }

其中的message应定义为static

handler.post(RefreshTextView);是利用Handler机制将接收到数据显示在界面

    private static Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what == UPDATE) ;
            textView.setText(String.valueOf(msg.obj));
        }
    };

 

    private static Runnable RefreshTextView = new Runnable() {
        @Override
        public void run() {
            textView.setText(message);
        }
    };