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

相關文章
相關標籤/搜索