【问题标题】:Connect to bluetooth headset in android在安卓中连接蓝牙耳机
【发布时间】:2011-04-18 19:33:16
【问题描述】:

我有以下问题: 当我的耳机在我的手机蓝牙打开之前打开,它不会连接到我的手机。只有当手机蓝牙打开并且我的耳机第二次打开时,它才会连接到我的手机。我发现当蓝牙第二次打开时我仍然可以连接到我的耳机(1.案例),方法是进入列出我的配对设备的 androids 蓝牙菜单并选择我的耳机(尽管我的耳机被列为“已连接”) .这也将连接我的耳机和手机。

我现在要做的是执行第二种连接耳机的方式,当我的手机蓝牙第二次打开时,以编程方式。我想使用 android 版本 2.0(API 级别 5),所以我尝试了 BluetoothDevice.createRfcommSocketToServiceRecord 并在我的套接字上调用了 connect()。但我总是收到异常“连接被拒绝”或“服务发现失败”。我使用了许多 UUID,我认为它们可能是正确的,并且与耳机有任何关系。

【问题讨论】:

    标签: android bluetooth uuid headset


    【解决方案1】:

    您不能调用 RFCOMM api 来连接耳机。它旨在连接到 SPP 配置文件,耳机将使用 HS/HFP 配置文件。在 RFCOMM apis 上使用不同的 UUID 也不能解决问题。

    基本上这个耳机级别的配置文件连接是由 Android 在内部完成的(并且没有应用程序级别的访问权限来建立连接)应用程序只能获取连接的状态 - 请参阅 BluetoothHeadset

    当前行为是正确的推荐行为,即耳机应连接到电话,因此电话应在耳机打开之前打开。建议这样做是为了获得良好的用户体验和可预测性,如果两台设备都尝试随机连接,它将无法连接。

    【讨论】:

    • 基本上这个耳机级别的配置文件连接是由Android内部完成的(并且没有应用程序级别的访问来建立连接)。但在我的情况下,当我在 sip 呼叫中时,gsm 呼叫应答并结束,当我说 startbtsco() 时平台无法重新连接。从 adb 日志中我看到蓝牙套接字异常。任何溶胶?
    • 解释得很好,谢谢。尽管我不同意这种实施的行为通常是正确的。上面的评论给出了一个原因,另一个原因是,您可以拥有一个 HFP 车载套件(随车开启),您可以离开 BT 范围并返回范围 - Android 不会重新连接,也不会重新连接从汽车套件。我认为 Android 的实现过于理论化了......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多