Android блютуз SCO

Я столкнулся с проблемой со звуком Bluetooth SCO в моем приложении для Android.

Я зарегистрировал приемник для действий ACL_CONNECTED и ACL_DISCONNECTED для захвата подключения и отключения устройства Bluetooth SCO. При получении ACL_CONNECTED я проверяю, есть ли на устройстве Bluetooth аудио-сервис (гарнитура) или нет, если есть сервис AUDIO, я создаю экземпляр AudioTrack (new AudioTrack(....)) и стартовый блютуз SCO (startBluetoothSco(); setBluetoothScoOn(true);).

В моем приложении есть кнопка для записи данных PCM в AudioTrack. В этом приложении я не могу услышать звук данных PCM, которые я написал.

Я пытался без какого-либо приемника и в onCreate() только я создал экземпляр AudioTrack и запустил Bluetooth SCO. Перед запуском приложения я подключил гарнитуру к своему устройству и проверил, она работает нормально.

Но почему мое приложение не работает, когда установлено соединение Bluetooth SCO во время выполнения, в зависимости от намерения ACL_CONNECTED.

Если кто-нибудь знает решение, пожалуйста, ответьте мне. Я добавил все необходимые разрешения BLUETOOTH, BLUETOOTH_ADMIN, MODIFY_AUDIO_SETTINGS (не сообщайте об ошибках правописания в этих разрешениях).

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
Другие вопросы по тегам