Android BluetoothSocket.connect()抛出IOExceptions“Connection Refused”和“Service discovery failed”

时间:2011-03-29 17:45:23

标签: android sockets bluetooth connect android-3.0-honeycomb

我的目标是编写一个应用程序,允许我使用Playstation 3蓝牙遥控器控制我的摩托罗拉Xoom。

该设备可以被原生蓝牙应用程序&被归类为操纵杆。但是,我不能通过原生蓝牙应用程序配对,因为该应用程序需要PIN&该设备没有我所知的引脚。

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

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

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

方法1(很多人似乎都有这个问题):

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

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

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

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

结果:IOException“拒绝连接”

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

  • Playstation Remote

    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

  • Microsoft蓝牙数字键盘 (通过natvie蓝牙应用程序与成功配对,成功配对)

    00001000-0000-1000-8000-00805f9b34fb

    00001124-0000-1000-8000-00805f9b34fb

    00001200-0000-1000-8000-00805f9b34fb

1 个答案:

答案 0 :(得分:1)

为了能够连接到必须通过HID配置文件连接的设备,您正在尝试通过SPP(串行端口配置文件)连接到UID等HID ID,这将无法正常工作。 此外,这些设备有一些“自定义”HID协议描述符,允许它与这个预配对的游戏控制台一起工作,你需要访问那些能够用这些控制器控制Xoom的那些