问题标签 [bluetooth-sco]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1469 浏览

android - 无法让蓝牙 SCO 连接在 android 上工作

所以我目前正在开发一个实现 HFP 配置文件以供以后与 gui 一起使用的 android 服务,我能够成功且轻松地实现发送 AT 命令(如 ATA(accep 调用))的 RFCOMM 部分,但我坚持接受应用程序上的音频 SCO 连接。所以基本上我使用 Iphone AG Role 和运行我的应用程序的 android 平板电脑 HF Role 进行测试,打开 SCO 连接我尝试调用 AudioMAnager.startBluetoothSco(); 没有任何运气,甚至使用 ndk 在 C 中制作了一个蓝牙 SCO 套接字服务器,它监听连接。但实际问题是 Iphone 似乎没有尝试连接 sco 套接字,所以我从 android 平板电脑中转储了流量,并看到当 Iphone 请求 SCO 连接时,android hci 会自动响应 Reject of reason:Connection Rejected due to Limited Resources (0x0d) ,无论我做什么,也许我错过了什么?有任何想法吗?谢谢。忘了提到这两个设备是使用 os 设置应用程序配对的,并且连接是通过从 ios 的本机设置应用程序连接到 android 平板电脑建立的。

音频处理程序.java

libsco.c

}

一切运行都没有错误,我可以看到“LIstening for SCO Connection”行,但它从不接受,因为 android hci 在任何事情都可以完成之前拒绝连接...... 来自 wireshark 的截图

0 投票
0 回答
1049 浏览

android - 蓝牙连接:MODE_IN_CALL 与 MODE_IN_COMMUNICATION

我有一个应用程序需要连接到无线蓝牙耳机来收集 RAW 音频。MODE_IN_CALL 适用于某些设备,而 MODE_IN_COMMUNICATION 适用于其他设备。麦克风工作,我失去了音频,反之亦然。

我正在使用 Nexus 5x 和三星 Edge。但是,相同型号和品牌的 2 台设备的行为不一致。已为配对的蓝牙耳机启用电话呼叫和媒体音频。

我需要一个跨设备和操作系统版本的蓝牙连接代码。提前感谢您的帮助。

0 投票
0 回答
356 浏览

bluetooth - 当VOIP通话结束时,防止android中的蓝牙sco被拆除

从蓝牙耳机连接到耳机断开连接时,我试图保持蓝牙 sco 连接到运行 android 的设备,或者更具体地说,我希望 sco 链接在蓝牙耳机连接时不会被应用程序拆除。用户可以在 VOIP 呼叫菜单中选择 BT/扬声器图标按钮并拆除并恢复 sco 链接(因为它是用户启动的)。

当使用蓝牙耳机结束 VOIP 通话(例如,whatsApp、google hangouts、skype、viber 等)时,sco 链接会被断开。我希望 sco 链接在 VOIP 呼叫结束时不被拆除(首选操作)或通过“某些”机制重新建立。

我尝试过的事情(没有成功):

1) 尝试检测 VOIP 呼叫开始/结束但阅读其他 SO 帖子,看起来这是不可能的。有很多钩子可以检测基于 sim 的呼叫并结束,但不适用于基于 VOIP 的呼叫。

2) 使用 startVoiceRecognition() 启动 sco,如下所示。这似乎工作......几乎......

这种方法有两个问题。

  • 传入的 WhatsApp 调用会破坏使用 startVoiceRecognition() api 建立的 sco
  • 在 VOIP 通话(环聊、whatsApp 等)中,通话中的音频路由选项不起作用

我已经阅读了几个关于此的 SO 帖子,但没有成功。

MODE_NORMAL3) 我观察到当 VOIP 呼叫结束时Audiomanager.setMode 被设置为(0) 并且我可以startBlueToothSco()在那里但是没有监听器来监听 AudioManager 模式的变化,我不想轮询它。我还观察到这取决于 VOIP 应用程序试图在通话结束时停止 sco,检查模式可能无法正常工作,因为应用程序可以在模式更改后调用 stopBluetoothSco。

4) 使用 ConnectionService api 进行虚拟调用,使 android 认为它在调用中,但会阻止建立 VOIP 调用,因此 sco 链接不会断开连接。(不可取,因为我需要进行 VOIP 通话)

任何想法/建议将不胜感激。

0 投票
1 回答
58 浏览

java - 在 Android 11 中 startBluetoothSco 后音频停止

我使用 startBluetoothSco 绑定 Android 11 设备的那一刻,我失去了音频。在 Android 10 之前它可以正常工作

我在下面尝试过的示例代码。

当我不使用 startBluetoothSco 绑定时,音频可以正常工作。我还在 AndroidManifest.xml 中添加了查询标签

android:name="android.intent.action.TTS_SERVICE"

那也没有帮助!

activity_main.xml