2011-09-01 126 views
10

我正在開發一個應用程序,它應該通過藍牙自動連接2個Android設備。假設他們已經配對。這有可能實現嗎?如何編程連接2個Android設備與藍牙?

+1

這是可能的服務器(在這裏,我們已經創建了一個客戶端),在看看:http://developer.android.com /guide/topics/wireless/bluetooth.html –

+1

缺點是,這樣的應用程序,例如即不斷尋呼來建立連接,會對電池的使用壽命產生不利影響。不是一個好主意。 –

回答

18

當然這是可能的。我將在文檔中做一個簡短的教程:

從BluetoothAdapter開始 - 它是您的藍牙管理器。

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

如果bluetoothAdapter爲null,則意味着此Android設備不支持藍牙(它沒有藍牙無線電。雖然我認爲這是難得遇到這些設備......)

接下來,確保藍牙開啓:

​​

如果不是,我們開始要求用戶啓用它的活動。我們假設用戶確實啓用了(我想你應該檢查他是否執行了,在onActivityResult方法中執行)。我們可以查詢配對設備:

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices(); 

然後遍歷它們:for(BluetoothDevice device : pairedDevices),找到你要連接到一個。

一旦你找到了一個設備,創建一個套接字連接它:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID); 

YOUR_UUID是包含您的應用程序的特殊ID的UUID對象。閱讀關於它here

現在,嘗試連接(設備你試圖連接到必須在監聽模式具有相同UUID創建的套接字):

socket.connect(); 

連接()你的線程,直到建立連接或者發生錯誤 - 在這種情況下將引發異常。所以你應該在一個單獨的線程上調用connect

還有!您已連接到其他設備。現在得到輸入和輸出流:

InputStream is = socket.getInputStream(); 
OutputStream os = socket.getOutputStream(); 

並且您可以開始發送/接收數據。請記住,這兩個操作(發送和接收)都是阻止,所以你應該從不同的線程調用這些。

瞭解更多關於這一點,並找出如何創建在Bluetooth documentation.

+1

謝謝你,我已經在我的應用程序中執行了一段時間以前的工作,但我的想法很好,但你的答案非常好,我將其標記爲已接受。 – Miky

+0

@Miky你​​能告訴我們你的執行 – jaimin

+0

@jaimin對不起,自動藍牙連接從來沒有令我滿意。必須選擇WiFi作爲替代方案。 – Miky

相關問題