Android蓝牙SCO

时间:2012-09-28 11:37:21

标签: android bluetooth bluetooth-sco

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

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

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

我试过没有任何接收器,只在onCreate()中我实例化了AudioTrack并启动了蓝牙SCO。在启动应用程序之前,我将耳机连接到我的设备并进行了测试,它运行正常。

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

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

1 个答案:

答案 0 :(得分: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