当应用程序在后台且未录制时,我无法在我的应用程序中隐藏红色的“正在录制”状态栏。
我碰巧在使用The Amazing Audio Engine,但我认为这个问题可以通过该库的知识来解决。它的设置如下:
audioController = [[AEAudioController alloc] initWithAudioDescription:desc inputEnabled:YES];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
当用户想要录音时,我打开麦克风是这样的:
[audioController addInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_PlayAndRecord;
当用户想要停止录制时,我将其关闭:
[audioController removeInputReceiver:mic];
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
问题是,当应用程序没有录制并且用户离开应用程序时,红色的“正在录制”状态栏仍然出现。我无法停止/处置 audioController,因为该应用程序可能仍在播放音频。
如果我没有录制,我不希望红色录制状态栏显示。任何想法如何做到这一点?
更新
我将以下代码块设置为在我的应用程序中每 2 秒运行一次。
audioController.audioSessionCategory = kAudioSessionCategory_MediaPlayback;
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError* error = nil;
[audioSession setActive:NO error: &error];
NSLog(@"error: %@", error);
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
这记录:
TAAE: Setting audio session category to MediaPlayback
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryEnableBluetoothInput) result 2003329396 77686174 what
Error Domain=NSOSStatusErrorDomain Code=560030580 "The operation couldn’t be completed. (OSStatus error 560030580.)"
显然,由于 TAAE 坚持使用某些东西,它无法禁用麦克风。我没有向控制器添加任何输入,所以我不知道它可能是什么。