gpt4 book ai didi

ios - 应用程序运行时无法将蓝牙耳机与AVAudioSessionCategoryPlayAndRecord连接

转载 作者:行者123 更新时间:2023-12-02 23:31:45 25 4
gpt4 key购买 nike

我正在开发一个需要麦克风输入的音乐应用,因此我的AVAudioSessionCategory设置为AVAudioSessionCategoryPlayAndRecord

我正在尝试使蓝牙耳机与该应用程序配合使用,但是我注意到将BT与不同的AVAudioSession类别配对时存在一些特殊之处:

如果我使用AVAudioSessionCategoryAmbient,则在应用程序运行时或在应用程序启动之前,可以将BT耳机配对/取消配对很好。配对或取消配对耳机时,我也可以接收AVAudioSessionRouteChangeNotification

但是,如果使用AVAudioSessionCategoryPlayAndRecord,我可以在应用程序启动之前将其与BT配对并接收音频,但是如果我尝试在应用程序运行时进行配对,将无法正常工作。我的BT耳机将指示它们已“连接”,但BT图标不会出现在iOS状态栏上。当我打开或关闭耳机时,我也没有收到任何AVAudioSessionRouteChangeNotification或其他音频中断通知。

如果将应用程序移至后台然后重新输入,我可以使BT工作,但是当应用程序处于前台时,我永远无法配对。

我将libpd用于音频引擎,这是初始化PdAudioController对象的方法:

 [self.pdAudio configurePlaybackWithSampleRate:samplingRate numberChannels:2 inputEnabled:YES mixingEnabled:NO];

//enable bluetooth
[PdAudioController setSessionOptions:AVAudioSessionCategoryOptionAllowBluetoothA2DP];

使用 AVAudioSessionCategoryPlayAndRecord时,我还能更改一些其他设置以在应用程序运行时配对耳机吗?

最佳答案

许多蓝牙耳机似乎仅限于特定的采样率集,有时输入(麦克风)和输出(扬声器)的采样率不相同。因此,他们无法连接到采样率不兼容的现场音频 session 。

当应用停止音频 session 进入后台,然后又重新进入前景时,此间隙使音频 session 和音频单元代码可以重新协商采样率(例如,建议并处理失败/错误代码,- 50(等),然后才能(重新)启用 session 并(重新)启动音频单元。

如果您收到路线更改通知,则可以尝试让该应用停止音频,关闭其 session ,等待几分钟,然后根据需要重新启动任何音频。

关于ios - 应用程序运行时无法将蓝牙耳机与AVAudioSessionCategoryPlayAndRecord连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com