2010-07-20 91 views
3

我正在研究一個iPhone iOS4應用程序,該應用程序包含從用戶的iPod庫播放音樂。我也想跟蹤已播放的歌曲,並且能夠隨機更改歌曲,即使在背景中也是如此。所以我設置使用音樂播放器:iPhone應用程序使用MPMusicPlayer背景

[self setMusicPlayer: [MPMusicPlayerController iPodMusicPlayer]]; 

現在,我想這個應用程序繼續運行,並在後臺播放音樂,所以我已經設置:

Required background modes: App plays audio 

我有問題是當我的應用程序移動到後臺時(當applicationDidEnterBackground被調用時,即在應用程序開關上),我的應用程序失去了控制權。由於我使用的是iPodMusicPlayer,因此音樂會繼續播放,但我的應用程序無法控制,因此無法跟蹤或更改歌曲。

現在,蘋果文檔指出,您的應用程序應該繼續使用這個所需的背景模式標籤在後臺執行,但我的不是。是因爲我在使用MPMusicPlayer嗎?有什麼辦法可以解決它嗎?有任何想法嗎?

PS。我也試圖讓遠程鎖定和多任務iPod控制器與我的應用程序一起工作。我使用下面的代碼,但remoteControlReceivedWithEvent永遠不會被調用!它可以與MPMusicPlayer一起使用嗎?我只用AVAudioPlayer看過它。

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { 
    NSLog(@"remoteControlReceivedWithEvent"); 
    switch (event.subtype) { 
     case UIEventSubtypeRemoteControlTogglePlayPause: 
      NSLog(@"Play Pause"); 
      break; 
     case UIEventSubtypeRemoteControlNextTrack: 
      NSLog(@"Next"); 
      break; 
     default: 
      break; 
    } 
} 

- (BOOL)canBecomeFirstResponder { 
    NSLog(@"canBecomeFirstResponder"); 
    return YES; 
} 

- (void) viewWillAppear:(BOOL)animated{ 
    [[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 
    [self becomeFirstResponder]; 
} 

回答

5

你是對的。在使用MPMusicPlayerController時,您的iPhone應用程序不會在後臺運行。這也會阻止你接收遠程控制事件。

如果您想從iPod庫播放音頻並讓您的應用程序在後臺繼續運行,則必須使用低級AVPlayer類。

相關問題