0

我在我的 android 应用程序中遇到了蓝牙 SCO 音频的问题。

我为动作 ACL_CONNECTED 和 ACL_DISCONNECTED 注册了一个接收器,以捕获蓝牙 SCO 设备连接和断开连接。在收到 ACL_CONNECTED 时,我正在检查蓝牙设备是否有音频服务(耳机),如果有音频服务,我正在实例化 AudioTrack(new AudioTrack(....))并启动蓝牙 SCO(startBluetoothSco(); setBluetoothScoOn(true);)。

我的应用中有一个按钮可以将 pcm 数据写入 AudioTrack。在这个应用程序中,我听不到我写的 PCM 数据的声音。

我尝试不使用任何接收器,onCreate()仅实例化 AudioTrack 并启动蓝牙 SCO。在启动应用程序之前,我将耳机连接到我的设备并进行了测试,它工作正常。

但是,为什么我的应用程序在运行时建立蓝牙 SCO 连接时无法工作,具体取决于 ACL_CONNECTED 意图。

如果有人知道解决方案,请回复我。我添加了所有必需的权限 BLUETOOTH、BLUETOOTH_ADMIN、MODIFY_AUDIO_SETTINGS(不要报告这些权限中的拼写错误)。

4

1 回答 1

1

使用什么版本的 API?

创建接收器时,请使用 BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED 而不是 ACL_CONNECTED。

intentFilter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); // API 11
intentFilter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_CHANGED); // API 8
intentFilter.addAction(AudioManager.ACTION_SCO_AUDIO_STATE_UPDATED); // API 14
于 2012-10-03T01:30:32.370 回答