在不记录的iOS应用程序中隐藏红色记录状态栏

当应用程序处于后台并没有录制时,我无法获得红色的“录制”状态栏来隐藏我的应用程序.

我恰好是使用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]

你还要做什么呢?可能会有更好的处理方式

编辑1:增加了其他解决方法

我不知道setInputEnabled是只读的,对不起.

那么另一件事就是完全停止控制器,试试这个:

[audioController stop]

如果没有,如果您不使用ARC或简单地尝试释放它

audioController = Nil;

希望解决这个问题.但我宁愿尝试找出为什么它不会从输入接收器中删除麦克风.或许麦克风是没有,当你调用[audioController removeInputReceiver:mic]?

编辑2:添加解决方

当您将inputEnabled设置为YES进行初始化时,会出现此问题,因为readOnly不能禁用输入,唯一的方法是实际释放audioController.如果您使用ARC,只需将其设置为Nil,如果没有,只需[audioController release]

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...