MPMoviePlayer играть, когда приложение выходит Фон - PullRequest
2 голосов
/ 28 февраля 2012

Я работаю с iOS5 .

Я работаю над проектом HTTPLivestream. Здесь я использую MPMovieplayer , моя проблема в том, что когда приложение переходит в фоновый режим, звука нет. Я изменяю список в фоновом режиме аудио. Но нет результата, пожалуйста, помогите мне.

AppDel

- (void)applicationDidEnterBackground:(UIApplication *)application {
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
  [[AVAudioSession sharedInstance] setActive: YES error: nil];

  UIApplication *app = [UIApplication sharedApplication];
  backgroundTask = [app beginBackgroundTaskWithExpirationHandler:^{
  }];

  dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
  });
}

RadioControlView

  NSString *path =[[NSString alloc] initWithString:@"http://*******/alayam/alayam/playlist.m3u8"];

  audioUrl=[NSURL URLWithString:path];

  appDelegate.player =  [[MPMoviePlayerController alloc] initWithContentURL:audioUrl];
                                   [[NSNotificationCenter defaultCenter] addObserver:self 
                                                         selector:@selector(loadStateDidChange:) 
                                                             name:MPMoviePlayerLoadStateDidChangeNotification 
                                                           object:appDelegate.player];
                if ([appDelegate.player respondsToSelector:@selector(loadState)]) 
                {
                    [appDelegate.player setControlStyle:MPMovieControlModeVolumeOnly];
                    [appDelegate.player setFullscreen:YES];
                    [appDelegate.player prepareToPlay];
                 }

- (void)loadStateDidChange:(NSNotification *)notification
      {   
        [[NSNotificationCenter defaultCenter]removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:appDelegate.player];

      }

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 28 февраля 2012

Необходимо выполнить настройку дистанционного управления в сочетании с настройкой поддержки фона в ios5-

.

// зарегистрируем ваше приложение для дистанционного управления

if([[UIApplication sharedApplication]  respondsToSelector:@selector(beginReceivingRemoteControlEvents)])
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];


// allows you to play in the background when app is suspended in iOS5
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:nil];

Поместите обе настройки в приложение didFinishLaunching делегата

1 голос
/ 28 февраля 2012

Если вы тестируете на симуляторе, то он не работает на симуляторе, пожалуйста, используйте устройство. Если вы используете устройство, а звук не воспроизводится в фоновом режиме, отправьте мне полный исходный код по электронной почте khalid0491@gmail.com. Я также сделал в моем заявлении. Мой код приведен ниже.

- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSError *setCategoryErr = nil;
    NSError *activationErr  = nil;
    [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryErr];
    [[AVAudioSession sharedInstance] setActive: YES error: &activationErr];
}

и в plist я создал массив с именем «Необходимый фоновый режим» и вставил элемент в имя массива «App Plays Audio».

1 голос
/ 28 февраля 2012

Попробуйте активировать аудио сеанс до инициализации проигрывателя, например, в делегате запуска приложения:

- (void)applicationDidFinishLaunching:(UIApplication *)application
  NSError *error = nil;
  [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];
  [[AVAudioSession sharedInstance] setActive:YES error:&error];

  // other init stuff ...
}

PS: Вы должны быть на устройстве, чтобы аудио-сеансы работали, симулятор не обрежет его.

...