即使连接失败,Android蓝牙也会对设备进行配对

时间:2011-03-23 15:45:36

标签: android bluetooth

我正在编写一个针对API 7的蓝牙应用程序(我的设备是API 8 - 2.2)。当我尝试连接蓝牙插座时,弹出窗口提示用户与设备配对,但有时连接超时或失败。在这些情况下,弹出窗口消失而不点击任何内容,但设备在蓝牙设置中显示为“已配对但未连接”。

如果我直接从蓝牙设置连接到蓝牙设备,则不会发生这种情况;如果用户实际点击“配对”,设备仅显示“已配对但未连接”。

这是创建连接的代码,看起来很简单:

    try {
        BluetoothDevice btDevice = _btAdapter.getRemoteDevice(address);
        _btAdapter.cancelDiscovery();
        sock = btDevice.createRfcommSocketToServiceRecord(SafConstants.BT_UUID);
        sock.connect();
    } catch (IOException e) {
        logger.error("socket connection failed", e);
        if (sock != null) {
            try {sock.close();}
            catch (IOException e1) {}
        }
    }

这是Android问题还是我应该做其他事情?我搜索了API,看看我是否可以从绑定设备集中删除设备(如果连接失败),但似乎这是不可能的。

编辑:我注意到的一件事是,当我尝试通过我的应用程序进行连接时,我的笔记本电脑上会出现提示它在配对前尝试访问耳机服务的提示。几秒钟后,我最终会在笔记本电脑上看到设备正在尝试配对的提示。

如果我通过蓝牙设置进行连接,那么我会先提示配对设备,然后在设备成功后我会收到设备尝试访问耳机服务的提示。我不确定这是否重要......

1 个答案:

答案 0 :(得分:1)

您使用的UUID用于SPP(串行端口配置文件),作为耳机,需要蓝牙配置文件 - A2DP(高级音频分配)。 目前,蓝牙堆栈的Android实现,不支持蓝牙配置文件,只是一个简单的实现。

要在Android上实施蓝牙配置文件支持,有一个名为“Sybase-iAnywhere-Blue-SDK-for-Android”的项目,它取代了Android的版本,并提供了所有接口到底层蓝牙配置文件和协议。使用此功能,可以使用此SDK提供的BPP配置文件,使用您的Android手机通过蓝牙进行打印。

请参阅以下链接了解更多详情:

链接1:  http://www.sybase.com/detail?id=1064424

链接2: http://www.sybase.com/products/allproductsa-z/mobiledevicesdks/bluetoothsdks