首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序正在运行时,无法使用AVAudioSessionCategoryPlayAndRecord连接蓝牙耳机

应用程序正在运行时,无法使用AVAudioSessionCategoryPlayAndRecord连接蓝牙耳机
EN

Stack Overflow用户
提问于 2018-08-25 08:13:32
回答 1查看 436关注 0票数 1

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

我正在尝试让蓝牙耳机与这款应用兼容,但我注意到了BT与不同的AVAudioSession类别配对的一些奇怪之处:

如果我使用AVAudioSessionCategoryAmbient,在应用程序运行时或应用程序启动之前,BT耳机配对/解除配对都可以正常工作。当配对或取消配对耳机时,我也能收到AVAudioSessionRouteChangeNotification

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

如果我将应用程序移动到后台,然后重新进入,我可以让BT工作,但当应用程序在前台时,我永远不能配对。

我使用libpd作为音频引擎,下面是我初始化PdAudioController对象的方式:

代码语言:javascript
复制
 [self.pdAudio configurePlaybackWithSampleRate:samplingRate numberChannels:2 inputEnabled:YES mixingEnabled:NO];

 //enable bluetooth
 [PdAudioController setSessionOptions:AVAudioSessionCategoryOptionAllowBluetoothA2DP];

使用AVAudioSessionCategoryPlayAndRecord时,是否有其他设置可以在应用程序运行时配对耳机

EN

回答 1

Stack Overflow用户

发布于 2018-08-27 12:42:25

许多蓝牙耳机似乎受到特定采样率的限制,有时输入(麦克风)和输出(扬声器)的采样率不同。因此,它们无法连接到采样率不兼容的实时音频会话。

当应用程序停止其音频会话转到后台,然后重新进入前台时,此间隙允许音频会话和音频单元代码重新协商采样率(例如,建议和处理故障/错误代码,-50等)。在(重新)启用会话和(重新)启动音频单元之前。

如果您收到路由更改通知,您可以尝试让应用程序停止音频,拆除其会话,等待几分钟,然后根据需要重新启动任何音频。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52013041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档