IOS: использование аудиовыхода Bluetooth (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput) AudioSession

У меня есть несколько вопросов к структуре CoreAudio AudioSession, связанным с несколькими задачами Bluetooth, и я надеюсь, что кто-то может помочь мне с этими проблемами или, по крайней мере, подтвердить мои последние результаты. Usecase - это приложение для навигации, которое хочет подключиться к радиоуправлению с поддержкой Bluetooth, которое поддерживает как HFP, так и A2DP. Я прочитал все руководства по программированию AudioSession, но у меня все еще есть некоторые открытые проблемы, особенно с использованием аудиовыхода через Bluetooth.

  • Аудиовыход Bluetooth HFP (kAudioSessionOutputRoute_BluetoothHFP) возможен только в случае настройки AudioSession kAudioSessionCategory_PlayAndRecord, и вы переопределяете следующее свойство: kAudioSessionProperty_OverrideCategoryEnableBluetoothInput. Это правда? Если нет, то как я могу направить пример с сеансом MediaPlayback на маршрут kAudioSessionOutputRoute_BluetoothHFP.

  • Аудиовыход в фоновом режиме невозможен в категории kAudioSessionCategory_PlayAndRecord. Поэтому я не могу воспроизводить звук через маршрут HFP Bluetooth, если я нахожусь в фоновом режиме. Это правда? Есть ли способ отправить аудио через протокол Bluetooth HFP, если приложение находится в фоновом режиме?

  • Если доступно устройство с поддержкой A2DP, мой аудиомаршрут всегда будет автоматически переключаться на маршрут kAudioSessionOutputRoute_BluetoothA2DP. Как я могу предотвратить изменение этого маршрута? Кроме того, как я могу указать маршрут вывода, который я хочу иметь в данный момент. С iOS5 можно запросить все эти адресаты маршрута через флаг kAudioSessionProperty_AudioRouteDescription, но я понятия не имею, как я могу установить его, как хочу. Как это можно достичь?

Я надеюсь, что некоторые из вас могут помочь мне с этими вопросами. Это действительно помогло бы мне в моем общем понимании CoreAudio, особенно в структуре AudioSession.

6
задан 30 янв. '13 в 13:17
источник поделиться
2 ответов

AudioSession - сложный бизнес.

1. Аудиовыход HFP для аудиовыхода (kAudioSessionOutputRoute_BluetoothHFP) возможен только в случае установки AudioSession kAudioSessionCategory_PlayAndRecord и вы переопределяете следующее свойство: kAudioSessionProperty_OverrideCategoryEnableBluetoothInput. Это правда? Если нет, то как я могу направить пример с сеансом MediaPlayback на маршрут kAudioSessionOutputRoute_BluetoothHFP.

Если у вас подключена Bluetooth-гарнитура, это верно. Вам понадобится как аудио-сессия kAudioSessionCategory_PlayAndRecord, так и kAudioSessionProperty_OverrideCategoryEnableBluetoothInput, установленная для воспроизведения звука с Bluetooth-гарнитуры. EnableBluetoothInput влияет как на вход, так и на выход в соответствии с этим. Также помните, что звук будет воспроизводиться на частоте 8000 Гц из-за ограничения устройств ввода bluetooth. Для устройства, которое подключено к A2DP, вы можете оставить его на аудио сессии kAudioSessionCategoryMediaPlayback, и он будет воспроизводить с частотой дискретизации 44100 Гц.

2. Аудиовыход в фоновом режиме невозможен с категорией kAudioSessionCategory_PlayAndRecord. Поэтому я не могу воспроизводить звук через маршрут HFP Bluetooth, если я нахожусь в фоновом режиме. Это правда? Есть ли способ отправить аудио через протокол HFP Bluetooth, если приложение находится в фоновом режиме?

Воспроизведение звука через Bluetooth HFP возможно в фоновом режиме, если вы установили фоновый режим звука в вашем приложении. Подробнее здесь.

3.Если есть доступное устройство A2DP, мой аудиомаршрут всегда будет автоматически переключаться на маршрут kAudioSessionOutputRoute_BluetoothA2DP. Как я могу предотвратить изменение этого маршрута? Кроме того, как я могу указать маршрут вывода, который я хочу иметь в данный момент. С iOS5 можно запросить все эти адресаты маршрута через флаг kAudioSessionProperty_AudioRouteDescription, но я понятия не имею, как я могу установить его, как хочу. Как-то можно это достичь?

Где вы хотите, чтобы вместо этого был аудио? Вы можете попытаться установить сеанс аудио в PlayAndRecord, чтобы он не переходил на A2DP. Это может быть вне вашего контроля, хотя Audio Session будет использовать то, что он считает интуитивным для пользователя. Если они просто подключили устройство A2DP, и вы только выдаете аудиосигнал, будет использоваться устройство A2DP.

10
ответ дан 31 авг. '13 в 0:41
источник

они упоминают, что это будет только для USB-аксессуаров.

http://developer.apple.com/library/ios/#documentation/AudioToolbox/Reference/AudioSessionServicesReference/Reference/reference.html

0
ответ дан 13 февр. '13 в 10:14
источник

Другие вопросы по меткам или Задайте вопрос