6

我对与几个蓝牙任务相关的 CoreAudio AudioSession 框架有几个问题,我希望有人可以帮助我解决这些问题,或者至少可以确认我的最新发现。用例是一个导航应用程序,它想要连接支持 HFP 和 A2DP 的蓝牙收音机。我已经阅读了整个 AudioSession 编程指南,但我仍然有一些未解决的问题,尤其是通过蓝牙使用音频输出。

  1. 蓝牙 HFP 音频输出 (kAudioSessionOutputRoute_BluetoothHFP) 仅在设置了 AudioSession kAudioSessionCategory_PlayAndRecord 并且您覆盖以下属性的情况下才有可能:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput。这是真的?如果没有,我如何将 MediaPlayback 会话作为示例路由到 kAudioSessionOutputRoute_BluetoothHFP 路由。

  2. 类别 kAudioSessionCategory_PlayAndRecord 无法在后台模式下输出音频。因此,如果我在后台,我无法通过蓝牙 HFP 路由播放声音。这是真的?如果应用程序在后台,有没有办法通过蓝牙 HFP 协议发送音频?

  3. 如果有支持 A2DP 的设备可用,我的音频路由将始终自动切换到 kAudioSessionOutputRoute_BluetoothA2DP 路由。如何防止此路线更改?另外我如何指定我现在想要的输出路线。使用 iOS5,可以通过 kAudioSessionProperty_AudioRouteDescription 标志查询所有这些路由目的地,但我不知道如何设置它,因为我想要它。有没有可能实现这一目标?

我希望你们中的一些人可以帮助我解决这些问题。它真的会帮助我全面了解 CoreAudio,尤其是 AudioSession 框架。

4

2 回答 2

11

AudioSession 是一件棘手的事情。

1.Bluetooth HFP 音频输出 (kAudioSessionOutputRoute_BluetoothHFP) 仅在设置了 AudioSession kAudioSessionCategory_PlayAndRecord 并且您覆盖以下属性的情况下才有可能:kAudioSessionProperty_OverrideCategoryEnableBluetoothInput。这是真的?如果没有,我如何将 MediaPlayback 会话作为示例路由到 kAudioSessionOutputRoute_BluetoothHFP 路由。

如果您连接了蓝牙耳机,那就是真的。您将需要 kAudioSessionCategory_PlayAndRecord 音频会话集和 kAudioSessionProperty_OverrideCategoryEnableBluetoothInput 集才能从蓝牙耳机中播放音频。EnableBluetoothInput 根据this影响输入和输出。另请记住,由于蓝牙输入设备的限制,音频将以 8000 Hz 的频率播放。对于连接的支持 A2DP 的设备,您可以将其保留在音频会话 kAudioSessionCategoryMediaPlayback 中,它将以 44100 Hz 的采样率播放。

2.kAudioSessionCategory_PlayAndRecord 类别无法在后台模式下进行音频输出。因此,如果我在后台,我无法通过蓝牙 HFP 路由播放声音。这是真的?如果应用程序在后台,有没有办法通过蓝牙 HFP 协议发送音频?

只要您在应用程序列表中设置了背景音频模式键,就可以在后台通过蓝牙 HFP 播放音频。在这里查看更多。

3.如果有支持 A2DP 的设备可用,我的音频路由将始终自动切换到 kAudioSessionOutputRoute_BluetoothA2DP 路由。如何防止此路线更改?另外我如何指定我现在想要的输出路线。使用 iOS5,可以通过 kAudioSessionProperty_AudioRouteDescription 标志查询所有这些路由目的地,但我不知道如何设置它,因为我想要它。有没有可能实现这一目标?

您希望音频转到哪里?您可以尝试将音频会话设置为 PlayAndRecord 以防止其进入 A2DP。不过,这可能超出您的控制范围,Audio Session 将使用它认为对用户而言直观的内容。如果他们只是连接了 A2DP 设备而您只是输出音频,则将使用 A2DP 设备。

于 2013-08-30T21:41:52.480 回答
0

他们提到它只适用于 USB 配件。

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

于 2013-02-13T07:14:33.227 回答