iPhone: почему applicationMusicPlayer прекращает воспроизведение, когда приложение переходит в фоновый режим? - PullRequest
0 голосов
/ 01 сентября 2010

Я сделал небольшое тестовое приложение, чтобы попытаться изолировать эту проблему, но оно демонстрирует то же поведение: applicationMusicPlayer немедленно прекращает воспроизведение, когда приложение переходит в фоновый режим.Я не знаю, что я делаю неправильно, или это ошибка Apple.Кажется, это так просто, что если бы это была ошибка Apple, другие бы с ней столкнулись и опубликовали.

  • Я установил ключ info.plist UIBackgroundModes в Audio
  • I 'я проверил, что приложение не завершает работу
  • Я протестировал на 4.1 бета 3 с теми же результатами
  • Я искал в Интернете аналогичные жалобы.Люди сообщают о других проблемах / ошибках MPMediaPlayerController, но более сложных, например, связанных с взаимодействием с AVAudio.

Любые / все предложения приветствуются.

Вот ядро ​​моего тестового приложения:

MPTest.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <MediaPlayer/MediaPlayer.h>

@interface MPTestViewController : UIViewController <MPMediaPickerControllerDelegate> {
    MPMusicPlayerController *MPPlayer;
}

@property (nonatomic, retain) MPMusicPlayerController *MPPlayer;

@end

MPTest.m

#import "MPTestViewController.h"

@implementation MPTestViewController

@synthesize MPPlayer;

- (void)viewDidLoad {
    [super viewDidLoad];

    // get the application music player
    self.MPPlayer = [MPMusicPlayerController applicationMusicPlayer];

    // break to allow application didFinishLaunching to complete
    [self performSelector:@selector(presentMPPicker) withObject:nil afterDelay:0.01];
}


- (void)presentMPPicker {
    // present the picker in a modal view controller
    MPMediaPickerController *picker = [[MPMediaPickerController alloc] initWithMediaTypes:MPMediaTypeAnyAudio];     
    picker.delegate = self;
    [self presentModalViewController:picker animated:YES];
    [picker release];   
}


// delegate called after user picks a media item
- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection {
    [self dismissModalViewControllerAnimated:YES];

    // tell the player what to play
    [MPPlayer setQueueWithItemCollection:mediaItemCollection];

    // start playing
    [MPPlayer play];
}

@end

Ответы [ 2 ]

4 голосов
/ 22 сентября 2010

MPMusicPlayerController не поддерживает фоновый звук.Вам нужно будет использовать что-то вроде AVAudioPlayer или AVPlayer (AVPlayer позволяет вам использовать элементы библиотеки iPod через AssetURL).

Причина в том, что MPMusicPlayerController использует приложение iPod для воспроизведения аудио, поэтому ваше приложение фактически не воспроизводитсячто угодно.

Дополнительную информацию см. в этой теме на форумах разработчиков Apple: https://devforums.apple.com/thread/47905?start=0&tstart=120

0 голосов
/ 01 сентября 2010

Вы установили подходящий тип аудиосеанса, чтобы быть медиаплеером? ОС использует типы сеансов для принятия решений среди конкурирующих видов использования аудиоканалов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...