2010-09-01 3 views
0

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

  • Я установил ключ Info.plist UIBackgroundModes в аудио
  • Я подтвердил, что приложение не является прекращение
  • Я тестировал на 4.1 бета 3 с теми же результатами
  • I В Интернете вы искали похожие жалобы. Люди сообщают о других проблемах/ошибках 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 
+1

Как [документ] (http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/ Reference/Reference.html # // apple_ref/doc/uid/TP40008221), 'applicationMusicPlayer' не будет продолжать воспроизводиться, когда приложение заходит в фоновый режим. Для продолжения воспроизведения используйте «iPodMusicPlayer». – mAu

ответ

0

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

4

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

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

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

+0

Это неправда для тех, кто задается вопросом. Вы можете установить 'MPMusicPlayerController * player = [MPMusicPlayerController applicationMusicPlayer];' –

+0

вы уверены, что AVPlayer позволяет вам использовать AssetURL. , как ? можете ли вы привести пример, например, или –

Смежные вопросы