私有API显示红色脉动双高状态栏(通常用于录制)

时间:2014-11-26 22:46:17

标签: ios iphone iphone-privateapi

我正在寻找一个私有API示例,介绍如何显示录制音频时使用的红色脉动双高状态栏。我想从我的应用程序启用此状态栏而不开始录制。我只想要状态栏,我希望它在系统范围内,所以如果我把我的应用程序放在后台我想看到它仍然。开始录制实际上是一个很好的解决方法,问题是我需要在应用程序在后台运行时触发状态栏(例如在静音推送后)

我记得能够在iOS早期修改全局状态栏,但我丢失了代码,我希望有人知道这是否可以在iOS 8中完成,并且可以分享一些关于我应该使用哪些API的提示。我知道Apple现在已经锁定了许多功能,但我希望尽管这是他们没有锁定的东西。

请注意,这不适用于应用程序商店提交,而是内部应用程序,我不是在寻找有关如何执行此操作的优缺点,而是关于如何执行此操作的技术信息。

修改

为了完整起见,我试图在后台开始录制,这似乎不起作用。当应用程序处于前台时,代码可以正常工作,但当应用程序处于后台时,只有[self.recorder record]返回false。能够从后台启动录像机将是完美的,这也将解决我的问题。当我尝试在后台开始录制时,我得到“错误!无法启动录音机”(见下文)

[[AVAudioSession sharedInstance] requestRecordPermission:^(BOOL granted) {
    if (!granted) {
        NSLog(@"Permission not granted");
    }
}];

NSError *error;

NSArray *pathComponents = [NSArray arrayWithObjects:
                           [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject],
                           @"Audio.m4a",
                           nil];
NSURL *outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

AVAudioSession *session = [AVAudioSession sharedInstance];
[session setCategory:AVAudioSessionCategoryRecord error:&error];

NSDictionary *recordSetting = @{
                                AVFormatIDKey:[NSNumber numberWithInt: kAudioFormatMPEG4AAC],
                                AVSampleRateKey:[NSNumber numberWithFloat:16000.0],
                                AVNumberOfChannelsKey:[NSNumber numberWithInt: 1]
                                };


// Initiate and prepare the recorder
self.recorder = [[AVAudioRecorder alloc] initWithURL:outputFileURL settings:recordSetting error:&error];
self.recorder.delegate = self;
BOOL prepared = [self.recorder prepareToRecord];
if (!prepared) {
    NSLog(@"ERROR! Failed to prepare recorder");
}

[[AVAudioSession sharedInstance] setActive:YES error:&error];
BOOL isRecording = [self.recorder record];
if (!isRecording) {
    NSLog(@"ERROR! Failed to start recorder");
}

0 个答案:

没有答案