2012-06-29 90 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我发现在互联网上的例子中使用它,它没有任何意义,它不适合你。也许我的第一个评论太笼统了。 –