2011-07-20 102 views
3

最近我試圖讓配對過程以編程方式工作,並且我成功了。但我最近發現,我的應用程序的用戶可以連接到幾個「有趣的」設備。所以我必須提示用戶選擇一個設備到連接到連接到已經配對的藍牙設備

所以我必須將用戶連接到已經配對的藍牙設備。但是我的努力都沒有奏效。我試圖再次運行配對過程中使用:

tmp = device.createRfcommSocketToServiceRecord(MY_UUID);

,並執行以下操作:

Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class}); 
mmSocket = (BluetoothSocket) m.invoke(mmDevice, 1); 

這是一個我已經實現和配對我的手機與唯一的工作方式我的嵌入式藍牙設備

所以我的問題是:

  • 我可以斷開配對的設備,然後連接到另一臺嵌入式設備嗎?我試過..只是連接到新設備,但我無法得到那個工作
+0

你解決這個問題? – TacB0sS

+0

不記得我是否解決了。但據我記得我確實解決了它。要將它標記爲已回答 – Mazze

回答

2

恐怕我不完全確定你的問題是什麼。是否無法爲已配對的藍牙設備創建套接字?

首先,如果設備已經配對,則不需要再次運行配對過程。您只需創建用於通信的套接字,如果設備不可用於通信,則該套接字將失敗。我一直在做一些東西,這周圍最近,我已經用下面的代碼,這對我來說工作得很好:

try { 
     Method m = device.getClass().getMethod("createRfcommSocket", 
       new Class[] { int.class }); 
     BluetoothSocket mySocket = (BluetoothSocket) m.invoke(device, Integer.valueOf(1)); 

    } catch (<VARIOUS EXCEPTIONS>) { 
     //Do stuff 
    } 

用於提示用戶選擇哪個設備,你可以查詢BluetoothAdapter所有目前配對設備如下:

Set<BluetoothDevice> bondedDevices = BluetoothAdapter 
      .getDefaultAdapter().getBondedDevices(); 

最後,可以同時創建多個設備的連接 - 看看這裏:Android Bluetooth API connect to multiple devices

+0

我想我的問題很模糊。我已經與一臺設備配對,現在我想連接到它。我有一個嵌入式設備,說它沒有連接。然而,我的手機有一個配對但未連接的設備。 'getBondedDevices()'獲取所有配對的設備。但有沒有辦法查看我是否連接到設備?有沒有辦法獲取套接字並斷開連接? – Mazze