首页 文章

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

提问于
浏览
0

我正在编写一个针对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,看看我是否可以从绑定设备集中删除设备(如果连接失败),但似乎这是不可能的 .

EDIT: 我注意到的一件事是,当我尝试连接我的应用程序时,我的笔记本电脑上出现提示,它最终会在我的笔记本电脑上得到设备试图配对的提示 .

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

1 回答

  • 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

相关问题