在上一篇中已經介紹如何連接我們搜索到的藍牙設備,如果你還沒閱讀過,建議先看看上一篇文章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寫入數據並將寫入成功后將寫入的數據展示出來。
在這里只是簡單的展示一下藍牙設備之間是如何獲取數據和發送數據。對於斷開連接,重新連接等多種狀況的處理這里就不再介紹了。在具體項目情況中再靈活變通就行了。
至此,本教程就結束了。如果有什么疑問,歡迎和本人一起探討。
——————————————————————————————