продолжать воспроизведение звука, когда iphone / устройство переходит в спящий режим или заблокировано

Я использую следующий код, чтобы продолжать воспроизведение звука, когда iPhone / iPod переходит в спящий режим или заблокирован.

mv = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://myurl/myMusic.mp3"]];
mv.movieSourceType = MPMovieSourceTypeUnknown;
[self.view addSubview:mv.view];
[mv play];

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory); AudioSessionSetActive(true);  

Используя этот код, мое устройство не переходит в спящий режим, но я хочу, чтобы устройство перешло в спящий режим, но воспроизведение звука не должно прекращаться.
Я добавил Required background modes и App plays audio в свой info.plist файл.

Пожалуйста, подскажите, в чем я ошибаюсь? Почему устройство не уходит в спящий режим / блокируется?


person iUser    schedule 10.09.2012    source источник
comment
Попробуйте это stackoverflow.com/a/7545093/1557663   -  person Mário Carvalho    schedule 10.09.2012


Ответы (2)


Используйте этот код в viewdidload:

NSError *setCategoryErr = nil;
NSError *activationErr  = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
[[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
UIBackgroundTaskIdentifier newTaskId = UIBackgroundTaskInvalid;
newTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL];

У меня все работает нормально.

person Vishal    schedule 11.09.2012
comment
Пробовал. Опять же, приложение не переходит в спящий режим .. Не знаю, в чем проблема. - person iUser; 11.09.2012
comment
вы добавили обязательные фоновые режимы и приложение воспроизводит звук в моем файле info.plist? - person Vishal; 11.09.2012
comment
да. Я добавил все это. - person iUser; 12.09.2012

Прежде всего, включите в свой проект эти фреймворки: AudioToolbox, CoreAudio, MediaPlayer и AVFoundation. Импортируйте их все в viewController, куда будет помещен ваш игрок. После выделения и начала воспроизведения аудио вставьте следующий код:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback;
AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (sessionCategory), &sessionCategory);
AudioSessionSetActive(true);

И, наконец, перейдите в файл Info.plist своего приложения и добавьте строку с именем UIBackgroundModes. Новая строка будет массивом и будет содержать 1 элемент, элемент 0. Для этого вы просто устанавливаете значение как audio. И вы сделали! Наслаждайтесь своим приложением для воспроизведения фонового звука!

Надеюсь, поможет. счастливого кодирования :)

person Anshuk Garg    schedule 10.09.2012
comment
Я уже пробовал. Единственная проблема - устройство не переходит в спящий режим. - person iUser; 10.09.2012
comment
@Anshuk Я думаю, что предоставленный вами код заставит устройство проснуться, пока приложение не будет на переднем плане. - person viral; 10.09.2012