【问题标题】:iOS: Using Bluetooth audio output (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput) AudioSessioniOS:使用蓝牙音频输出 (kAudioSessionProperty_OverrideCategoryEnableBluetoothInput) AudioSession
【发布时间】:2013-01-14 02:55:45
【问题描述】:

我对 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 框架。

【问题讨论】:

    标签: ios bluetooth core-audio audiosession a2dp


    【解决方案1】:

    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 协议发送音频?

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

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

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

    【讨论】:

    【解决方案2】:
    猜你喜欢
    • 2017-12-11
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    • 2023-03-17
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    相关资源
    最近更新 更多