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写入数据并将写入成功后将写入的数据展现出来。

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

至此,本教程就结束了。若是有什么疑问,欢迎和本人一块儿探讨。

——————————————————————————————java

github

csdn

相关文章
相关标签/搜索