2010-12-17 45 views

回答

4

是的,您可以設置多個藍牙連接(至少是RFCOMM連接)。只需使用其他線程的給你連接,它會正常工作(我猜) 參見:http://developer.android.com/resources/samples/BluetoothChat/index.html

編輯,評論佈局是不可讀: 在connectThread功能,更改:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 

到:

Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
tmp = (BluetoothSocket) m.invoke(device, 1); 
+0

這個樣品不能連接多個設備,當我嘗試連接的第三裝置,它將打印IO異常:服務discoery – user545755 2010-12-17 12:57:07

+0

嗯,和當您嘗試更改時: tmp = device.createRfcommSocketToServiceRecord(MY_UUID); 收件人: 方法m = device.getClass()。getMethod(「createRfcommSocket」,new Class [] {int.class}); tmp =(BluetoothSocket)m.invoke(device,1); (使用正確的嘗試/捕獲) 你還會得到那個錯誤嗎? (請參閱答案的可讀代碼..) – Barryvdh 2010-12-17 13:33:16

+0

感謝您的幫助,但它會打印此異常: – user545755 2010-12-17 16:04:03

0

像巴里說的,你可以連接到多個設備。只需爲每個連接創建一個新線程。你需要列出你正在跟蹤的'ConnectThread'和'ConnectedThread'。所以你只需要適應多線程(當然,實現選擇多個設備的能力)。 我已經這樣做了,並不太難。

如果你想連接到一個設備,然後連接到另一個(使用原始菜單一個接一個),那麼你可能還有更多的工作要做。

5

我要說的是,代碼是沒有問題的。正確的實施方式是管理每個連接的線程,但是我發現您可以同時連接的設備數量基於手機的藍牙實施而受到限制。藍牙規格狀態7個設備可以連接,但是我發現Android手機只能處理1個藍牙連接,而其他人可以處理6個。如果Android開發團隊的成員可以在這裏深入瞭解,它將確實有助於藍牙開發社區。

+4

我只是浪費了很多時間才發現Nexus 7只能連接1個BT設備,但Nexus 10可以連接多個同步設備。 – BitBank 2012-12-18 07:03:25

+1

嚴重的是,我在Nexus 7上做了這樣的工作也浪費了時間...... – 2014-07-24 08:14:07

+0

@SalmanKhakwani,你是怎麼知道有多少BT設備可以連接到Nexus 7的? – ymerdrengene 2018-02-07 15:56:05

2

是在藍牙服務器套接字連接多個設備在可以試試這個lib