как воспроизводить музыку с помощью AVAudioPlayer, когда экран заблокирован - PullRequest
0 голосов
/ 15 июля 2011

Мне нужно воспроизвести простой звук с помощью AVAudioPlayer, когда экран заблокирован. Как я могу это сделать, пожалуйста, помогите

Ответы [ 2 ]

0 голосов
/ 19 августа 2013

Первый: Добавьте следующие фреймворки в ваш проект

AudioToolbox, CoreAudio, Медиа-плейер AVFoundation.

enter image description here Второй: Добавьте в файл info.plist новый ключ

Необходимые фоновые режимы = Приложение воспроизводит звук

enter image description here

Третье: Создайте метод keepAwakeForAudio и вызывайте его сразу после воспроизведения звука

- (Недействительными) keepAwakeForAudio

{ UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), & sessionCategory); AudioSessionSetActive (истина); }

//////

NSURL * url = [NSURL fileURLWithPath: [NSString stringWithFormat: @ "% @ / rain1_Rain_on_Street.m4a", [[NSBundle mainBundle] resourcePath]]];

NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;

if (audioPlayer == nil)
    NSLog([error description]);


else
    [audioPlayer play];

[self **keepAwakeForAudio**];
0 голосов
/ 15 июля 2011

На этот вопрос ответили здесь ранее. Как подсказывает вещь, вам нужно установить аудио сеанс, как в этом примере

UInt32 category = kAudioSessionCategory_MediaPlayback;
OSStatus result = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory,
                                                                                sizeof(category), &category);

if (result){
        DebugLog(@"ERROR SETTING AUDIO CATEGORY!\n");
}

result = AudioSessionSetActive(true);
if (result) {
        DebugLog(@"ERROR SETTING AUDIO SESSION ACTIVE!\n");
}
...