Экземпляр SBStatusBarController

Может ли кто-нибудь помочь мне с небольшим примером, как получить экземпляр SBStatusBarController? Я посмотрел на многих форумах и исходных кодах, и это не работает для меня:(

Спасибо.

1 ответ

Решение

Хорошо, я нашел способ показать строку состояния двойной высоты, такую ​​как строка состояния In-Call, без SpringBoard и используя законные средства. Вот решение. Существует два способа отображения строки состояния двойной высоты с именем приложения, когда приложение находится в режиме мешка: подключитесь к услуге VoIP с помощью сокетов или смоделируйте аудиозапись. Используя первый способ, вы увидите зеленую светящуюся строку состояния, и если вы предпочитаете красный цвет, вы должны использовать второй. Хорошо, я использую второй подход и выполняю симуляцию записи звука. Для этого просто добавьте следующие строки в конфигурационный файл приложения PLIST:

<key>UIBackgroundModes</key>
<array>
    <string>voip</string>
    <string>audio</string>
</array>

Он сообщит iOS, что ваше приложение будет использовать аудио и VoIP в фоновом режиме. А теперь код. Мы смоделируем запись звука с микрофона на устройство NULL:

- (void) startRecording
{

    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    NSError *err = nil;
    [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];
    if(err){
        NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
        return;
    }
    [audioSession setActive:YES error:&err];
    err = nil;
    if(err){
        NSLog(@"audioSession: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
        return;
    }


    recordSetting = [[NSMutableDictionary alloc] init];

    [recordSetting setValue :[NSNumber numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];

    [recordSetting setValue :[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
    [recordSetting setValue :[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];


    NSURL *url = [NSURL fileURLWithPath:@"/dev/null"];    
    err = nil;
    recorder = [[ AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:&err];
    if(!recorder){
        NSLog(@"recorder: %@ %d %@", [err domain], [err code], [[err userInfo] description]);
        UIAlertView *alert =
        [[UIAlertView alloc] initWithTitle: @"Warning"
                                   message: [err localizedDescription]
                                  delegate: nil
                         cancelButtonTitle:@"OK"
                         otherButtonTitles:nil];
        [alert show];
        [alert release];
        return;
    }

    //prepare to record
    [recorder setDelegate:self];
    [recorder prepareToRecord];
    recorder.meteringEnabled = YES;

    BOOL audioHWAvailable = audioSession.inputIsAvailable;
    if (! audioHWAvailable) {
        UIAlertView *cantRecordAlert =
        [[UIAlertView alloc] initWithTitle: @"Warning"
                                   message: @"Audio input hardware not available"
                                  delegate: nil
                         cancelButtonTitle:@"OK"
                         otherButtonTitles:nil];
        [cantRecordAlert show];
        [cantRecordAlert release]; 
        return;
    }

    // start recording
    [recorder record];//recordForDuration:(NSTimeInterval) 40];

}

Добавьте этот метод в ваш делегат приложения и вызовите его из didFinishLaunchingWithOptions. Также, как я понял, вы можете просто установить категорию аудио сеанса как AVAudioSessionCategoryPlayAndRecord и сделать его активным. Если вы добавите этот код в свой проект, то, если вы поместите свое приложение в фоновый режим, вы увидите строку состояния двойной высоты с именем вашего приложения внутри.

Я думаю, что это все.

Благодарю.

Другие вопросы по тегам