zoukankan      html  css  js  c++  java
  • Android蓝牙开发教程(三)——蓝牙设备相互通讯

    在上一篇中已经介绍如何连接我们搜索到的蓝牙设备,如果你还没阅读过,建议先看看上一篇文章Android蓝牙开发教程(二)——连接蓝牙设备

    在上一篇文章中,无论是自动连接还是被动连接,连接成功后,都是将获取到的BluetoothSocket交由连接线程ConnectThread来处理。

     @Override
            public void run() {
                try {
                    ... ...
                    inputStream = socket.getInputStream();
                    outputStream = socket.getOutputStream();
    
                    byte[] buffer = new byte[BUFFER_SIZE];
                    int bytes;
                    while (true) {
                        //读取数据
                        bytes = inputStream.read(buffer);
                        if (bytes > 0) {
                            final byte[] data = new byte[bytes];
                            System.arraycopy(buffer, 0, data, 0, bytes);
                            text_msg.post(new Runnable() {
                                @Override
                                public void run() {
                                    text_msg.setText(getResources().getString(R.string.get_msg)+new String(data));
                                }
                            });
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                    text_state.post(new Runnable() {
                        @Override
                        public void run() {
                            text_state.setText(getResources().getString(R.string.connect_error));
                        }
                    });
                }

    当连接成功后,就可以从BluetoothSocket中获取读数据和写数据的流接口。然后循环监听InputStream是否有获取到数据,最后将数据设置到TextView中展示出来。

     /**
             * 发送数据
             *
             * @param msg
             */
            public void sendMsg(final String msg) {
    
                byte[] bytes = msg.getBytes();
                if (outputStream != null) {
                    try {
                        //发送数据
                        outputStream.write(bytes);
                        text_msg.post(new Runnable() {
                            @Override
                            public void run() {
                                text_msg.setText(getResources().getString(R.string.send_msgs)+msg);
                            }
                        });
                    } catch (IOException e) {
                        e.printStackTrace();
                        text_msg.post(new Runnable() {
                            @Override
                            public void run() {
                                text_msg.setText(getResources().getString(R.string.send_msg_error)+msg);
                            }
                        });
                    }
                }
            }

    在发送数据的方法中,主要是用OutputStream写入数据并将写入成功后将写入的数据展示出来。

    在这里只是简单的展示一下蓝牙设备之间是如何获取数据和发送数据。对于断开连接,重新连接等多种状况的处理这里就不再介绍了。在具体项目情况中再灵活变通就行了。

    至此,本教程就结束了。如果有什么疑问,欢迎和本人一起探讨。

    ——————————————————————————————

    github

    csdn

     
     
  • 相关阅读:
    js上传文件(图片)限制格式及大小为3M
    position:fixed部分版本的浏览器不支持
    iframe自适应高度的方法
    div左右自适应高度一致
    IE中部分版本的浏览器对Select标签设置innerHTML无效的问题
    在ie10中如何禁用输入框中的小眼睛 与 叉叉 删除按钮
    input输入框默认文字,点击消失
    调用iframe中父页面/子页面中的JavaScript方法
    iframe的一些介绍
    artDialog的一些例子与一些属性的介绍。
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/7148283.html
Copyright © 2011-2022 走看看