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