Android连接到Blackberry 655+蓝牙耳机

时间:2011-02-12 14:19:55

标签: android bluetooth headset

我正在尝试编写一个连接BlackBerry 655+蓝牙耳机的测试应用程序。基本上我想在这个应用程序中做的是连接到耳机和捕获按钮压力。我认为可以通过读取套接字的输入流来完成。无论如何,当我尝试连接到套接字时,我得到了一些错误。这是代码:

BluetoothSocket tmp = null;
try {
    tmp = mDevice.createRfcommSocketToServiceRecord(
                   UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
} catch(IOException e) {}
mSocket = tmp;

mBtAdapter.cancelDiscovery();

try {
    mSocket.connect();   // THIS ONE GIVES A "Service discovery failed" exception
} catch (IOException e1) {
Method m = null;
try {
    m = mDevice.getClass().getMethod(
          "createRfcommSocket", new Class[] {int.class});
} catch (SecurityException e) {
    e.printStackTrace();
} catch (NoSuchMethodException e) {
    e.printStackTrace();
}
try {
    tmp = (BluetoothSocket) m.invoke(mDevice, 1);
} catch (IllegalArgumentException e) {
            e.printStackTrace();
} catch (IllegalAccessException e) {
            e.printStackTrace();
} catch (InvocationTargetException e) {
            e.printStackTrace();
}
mSocket = tmp;

try {
    mSocket.connect();  // THIS ONE GIVES A "Connection refused" EXCEPTION
} catch (IOException e) {
    e.printStackTrace();
}
}

我做错了什么?我已经在m.invoke(mDevice,X)指令中尝试了不同的端口,但它总是给出“连接被拒绝”

2 个答案:

答案 0 :(得分:0)

之前我使用过蓝牙,但是使用了python和Java ME,所以我理解了基础知识。我对android API知之甚少。

你从哪里获得UUID代码?这可能是服务发现失败的原因之一。

每个蓝牙设备可以具有多个服务,每个服务与一个端口(或信道)相关联。如果您正在运行ubuntu,请尝试使用hci工具了解要连接的通道或要搜索的服务。

答案 1 :(得分:0)

这里有一个official list来自Bluetooth SIG的UUID。对于Headset Profile,UUID为0x1108,您使用的UUID是Base Universally Unique Identifier,用于SDP。