AVAudioPlayer和AVAudioSession不会在iPad上播放BlueTooth立体声(2或其他)

Cal*_*l30 8 objective-c avaudioplayer ipad ios avaudiosession

我有一个播放录制音频和重复声音的应用程序.通过板载iPad扬声器可以正常播放声音,如果我从耳机插孔插入一根线到我的立体声音频输入,它也可以很好地播放.当我将iPad与我的蓝牙立体声输入配对时,来自我的其他应用程序(为iPhone编写,在我的iPad上运行)的所有声音都能正常工作,就像我设备上的所有其他声音一样.

问题是我为iPad编写的应用程序不是在蓝牙路径上播放,而是从内置扬声器播放.

在我的didFinishLaunchingWithOptions(...)方法的app委托中,我放置了以下内容:

NSError *error = nil;
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeDefault error:&error];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&error];
[[AVAudioSession sharedInstance] setActive:YES error:&error];
Run Code Online (Sandbox Code Playgroud)

正在调用此代码,并且不会返回任何错误.

在我的控制器代码中,我记录了使用AVAudioPlayer播放的样本,如下所示:

audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:recordURL error:&error];
audioPlayer.numberOfLoops = 0;
[audioPlayer setDelegate:self];
[audioPlayer play];
Run Code Online (Sandbox Code Playgroud)

在其他方面,我的无人机播放时间很短.在线程控制的循环中重复播放了01秒的声音,我使用OpenAL执行此操作:

    alSourcePlay(sourceID);
Run Code Online (Sandbox Code Playgroud)

这与我为iPhone编写的其他应用程序中的代码完全相同.

我意识到有关于蓝牙输入的其他线程,但我有一个特定的问题与我的iPad应用程序的音频声音的蓝牙输出.

And*_*ith 1

不可能。

来自非常有趣的 Apple 文档 AVAudioSession -- 选择麦克风 QA1799:

如果应用程序使用 setPreferredInput:error: 方法选择蓝牙 HFP 输入,输出将自动更改为蓝牙 HFP 输出。此外,使用 MPVolumeView 的路由选择器选择蓝牙 HFP 输出将自动将输入更改为蓝牙 HFP 输入。因此,即使仅单独设置了输入或输出,输入和输出也将始终位于蓝牙 HFP 设备上。