当应用程序处于后台并没有录制时,我无法获得红色的“录制”状态栏来隐藏我的应用程序.
我恰好是使用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持有的东西,它无法禁用麦克风.我没有向控制器添加任何输入,所以我不知道它可能是什么.
解决方法
已解决,请参阅编辑2
只要麦克风在使用中,录音也不会消失.这是一个安全措施,允许用户知道应用程序正在听麦克风,而不是显示手机正在录制.
消除它的唯一方法是从输入接收器中移除麦克风
要点是,只要麦克风打开,您就无法隐藏红色条.
如果你想暂时禁用它,你可以试试这个吗?
[audioController setInputEnabled:NO]
你还要做什么呢?可能会有更好的处理方式
我不知道setInputEnabled是只读的,对不起.
那么另一件事就是完全停止控制器,试试这个:
[audioController stop]
如果没有,如果您不使用ARC或简单地尝试释放它
audioController = Nil;
希望解决这个问题.但我宁愿尝试找出为什么它不会从输入接收器中删除麦克风.或许麦克风是没有,当你调用[audioController removeInputReceiver:mic]?
当您将inputEnabled设置为YES进行初始化时,会出现此问题,因为readOnly不能禁用输入,唯一的方法是实际释放audioController.如果您使用ARC,只需将其设置为Nil,如果没有,只需[audioController release]