2012-09-24 179 views
50

有人可以給我Android Bluetooth通訊教程鏈接或提示嗎?請不要告訴我參考BluetoothChat示例,我只能瞭解如何發現並連接到設備,但不知道如何通過藍牙發送和接收數據。Android藍牙例子

我實際上正在研究Android和嵌入式Bluetooth設備項目。 請幫我..

+2

您可以基於BluetoothChat示例來發送數據。如果您查看代碼,則在通過藍牙發送之前,文本消息字符串會轉換爲字節[]。因此,將您的數據轉換爲byte [],然後發送它。 –

+0

恕我直言聊天的例子很好,只是聊天或更快的通信..當你需要每秒發送超過100條消息,我不知道是否有用。 – Ewoks

回答

5

Android開發者頁面有tutorials,並說明如何使用藍牙功能:
我希望這有助於。

+7

我已經通過這個我可以發現設備,連接它們,但如何發送和接收BT上的數據? – Pratik

9

如其他人所說你的藍牙通訊我也用下面的鏈接。

http://developer.android.com/guide/topics/connectivity/bluetooth.html

事情是你所需要的是一類BluetoothChatService.java

這個類有以下主題:

  1. 接受
  2. 連接
  3. 連接

現在,當你調用像BluetoothChatService的啓動功能:

mChatService.start(); 

它開始接受線程,這意味着它會開始尋找連接。

現在當你調用

mChatService.connect(<deviceObject>,false/true); 

這裏第一個參數是設備對象,你可以從配對的設備列表中獲得,或當你掃描設備,你會得到所有範圍內,您可以在對象傳遞給此設備函數和第二個參數是一個布爾值來進行安全或不安全的連接。

connect函數將啓動連接線程,該線程將查找運行接受線程的任何設備。

當這種設備被發現兩者接受螺紋和連接螺紋將調用連接功能在BluetoothChatService:

connected(mmSocket, mmDevice, mSocketType); 

此方法開始連接線在兩個設備: 使用連接螺紋此插座對象獲得輸入並將流輸出到其他設備。 並在while循環中的inputstream上調用read函數,以便始終嘗試從其他設備讀取數據,以便每當其他設備發送消息時,此讀取函數將返回該消息。

BluetoothChatService還有一個write方法,該方法以byte[]作爲輸入,並在連接的線程上調用write方法。

mChatService.write("your message".getByte()); 

在連接線程中寫入方法只是將該字節數據寫入其他設備的輸出流。

public void write(byte[] buffer) { 
    try { 
     mmOutStream.write(buffer); 
    // Share the sent message back to the UI Activity 
    // mHandler.obtainMessage(
    // BluetoothGameSetupActivity.MESSAGE_WRITE, -1, -1, 
    // buffer).sendToTarget(); 
    } catch (IOException e) { 
    Log.e(TAG, "Exception during write", e); 
    } 
} 

我們兩個設備之間的通信,只需撥打mChatService寫功能和處理,您將收到其他設備上的消息。

+0

有沒有人面對這個聊天服務的問題,它無法連接到設備,甚至連接並立即斷開連接? – Jacob

+0

你的解釋保存了我的整個一天!謝謝! –

1

由於OP尚未接受任何答案,我將提供幾個示例應用程序以連接到特定設備。我不擔保代碼示例的質量,但是如果您正在尋找一些「真實」代碼 - 就連接到傳感器設備的應用程序而言,它會從中讀取數據,並可能寫入這些設備可能有所幫助:

AndroiDAQ是用於原型開發數據採集應用的板卡。製造商Rick Fluck在Github上提供了一個樣本,開源Android應用程序。查找文件AndroiDAQService.java。底部的Run()方法顯示從DAQ讀取和寫入數據。 (YMMV)完整的應用程序可以從應用程序商店免費下載,我們發現它經常崩潰,但這可能是因爲我們的DAQ板子經常會輸出額外的輸出,在我們自己的應用程序中,基於Rick的例子,我們處理奇數的額外字符,並且不會因爲這個原因而崩潰。)

德州儀器(TI)出售一種廉價的帶有少量嵌入式傳感器的Bluetooth SensorTag。他們提供a free SDK用於處理標籤,IIRC包含Android和iOs應用的源代碼。當你進行搜索時要小心,看起來,因爲我們購買了我們的產品,所以他們推出了一款名字相同的新設備,它使用的低能量藍牙智能技術與「傳統」藍牙完全不同。