Android BluetoothSocket.connect()抛出IOExceptions“连接被拒绝”和“服务发现失败”

问题描述:

我的目标是编写一个应用程序,允许我通过Playstation 3蓝牙遥控器控制我的Motorola Xoom。Android BluetoothSocket.connect()抛出IOExceptions“连接被拒绝”和“服务发现失败”

该设备能够被分类为游戏杆的原生蓝牙应用程序&发现。但是,我无法通过原生蓝牙应用进行配对,因为该应用需要密码&该设备没有我知道的引脚。

到目前为止,我能够以编程方式发现设备&创建套接字,但是所有连接到设备的尝试失败。

在这两种情况下: UUID u = UUID.fromString(“00001124-0000-1000-8000-00805f9b34fb”);

这应该是HID设备使用的UUID。我还使用另一个site上描述的方法来验证设备上的UUID是否可用。

方法一(许多人似乎有此问题):

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(u); 
socket.connect(); 

结果:IOException异常 “服务发现失败”

方法2(接受的解决方法方法1。我也试过端口1-100):

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

结果:IOException异常 “连接被拒绝”

我曾尝试使用3个设备(加上他们的UUID)这样的代码:

  • 游戏机遥控

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

  • Nintento的Wiimote

    00001000-0000-1000-8000-00805f9b34fb

    00001124-0000-1000-8000-00805f9b34fb

    00001200- 0000-1000-8000-00805f9b34fb

  • 微软蓝牙数字键盘 (它通过natvie蓝牙应用程序与一个pin成功配对)

    00001000-0000-1000-8000-00805f9b34fb

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

为了能够连接到您必须通过HID配置文件连接的设备,您尝试的是通过SPP(串行端口配置文件)连接到HID的UUID等,这是行不通的。 此外,这些设备具有一些“定制”HID协议描述符,允许它与此预配对的游戏机一起使用,您将需要访问那些能够使用这些控制器来控制Xoom的设备