2012-06-29 126 views
0

我正在開發一個簡單的藍牙應用程序,我想發送文本消息。在嘗試配對設備時遇到問題,它會拋出異常「java.io.IOException:服務發現失敗」。欲瞭解更多詳情,我在此發佈代碼。在LG的手機Android版本 移植的應用程序2.3.3問題與藍牙設備配對

private static final UUID MY_UUID = UUID.fromString("00000003-0000-1000-8000-00805F9B34FB"); 
BluetoothDevice btDevice = BluetoothActivity.btDevices.get(position).getBtDevice(); 

clientSocket = btDevice.createRfcommSocketToServiceRecord(MY_UUID); 

//Method m = btDevice.getClass().getMethod("createRfcommSocketToServiceRecord", new Class[] { UUID.class });     
//clientSocket =(BluetoothSocket) m.invoke(btDevice, MY_UUID); 

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

if(clientSocket!=null) 
{ 

    if(BluetoothActivity.btAdapter.isDiscovering()){ 
     BluetoothActivity.btAdapter.cancelDiscovery(); 

} 
//facing issue during paring       
clientSocket.connect(); 

tmpOut = clientSocket.getOutputStream(); 
tmpOut.write("HelloWorld.txt".getBytes()); 
if(tmpOut!=null){ 
    tmpOut.close(); 
} 
} 

任何形式的幫助表示讚賞,

+0

因此'clientSocket.connect()'引起異常的線? btDevice是否被正確設置爲您想要的設備?我發現我需要在設置套接字之前通過手機設置手動連接到其他BT設備。 –

+0

@ Pravin008您只能連接Android設備或PC與其他設備? – Venky

回答

0

嘗試使用此UUID:

fa87c0d0-afac-11de-8a39-0800200c9a66 

出於某種原因,這是唯一的UUID我可以去上班......我不知道爲什麼。

+0

我在我的應用中使用「00001101-0000-1000-8000-00805F9B34FB」就好了。只要它們對於客戶端/服務器都相同,它應該是可以的。 –

+0

@Atlos,不是真的......至少在我的經驗。我廣泛地測試了這個問題,並且它從未工作過。正在使用Nexus One(2.3.7)和Motorola XOOM(3.2)進行測試。當我使用UUID時,上面的所有工作都很好,但是當我將它更改爲隨機生成的UUID(即使用'java.util.UUID')並且更改* nothing * else時,我得到的「服務發現錯誤」與OP描述。你知道爲什麼會發生這種情況嗎? –

+0

有趣。我在用來創建我的服務器的'bthdef.h'文件中發現,注意到我的值被註釋爲//服務發現的藍牙基UUID,然後是'DEFINE_GUID(SerialPortServiceClass_UUID')。這是最常見的UUID我發現在互聯網上的例子中使用它,它沒有任何意義,它不適合你。也許我的第一個評論太籠統了。 –