2012-05-08 41 views

回答

4

在處理音頻播放代碼的主類中有一個類型爲UIBackgroundTaskIdentifier的iVar,在啓動音頻播放器之前使用beginBackgroundTaskWithExpirationHandler ....方法對此進行初始化,並在音頻播放器完成時使用endBackgroundTask。

代碼:

@inerface AudioPlayerController : NSObject 
{ 
    UIBackgroundTaskIdentifier bgTaskID; 
} 
@end 

@implementation AudioPlayerController 

- (void) startPlayer 
{ 

    bgTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:NULL]; 

    // Write code to start the audio player 
} 

// Call this when your program receives message of audio playing complete 

- (void) audioPlayComplete 
{ 

    // Do the audio playing finish 

    if (bgTaskID != UIBackgroundTaskInvalid) 
     [[UIApplication sharedApplication] endBackgroundTask:bgTaskID]; 
} 

@end 
+0

我會測試一下。但它不會迴應將啓用或禁用此背景功能的UISwitch。我的意思是:用戶希望將該應用用作背景音頻播放器,他啓用它。他不想要,他會禁用它,在這種情況下,當他切換到另一個應用程序時,不會在後臺播放更多音頻。 – gluon

+0

上面的代碼是爲了演示如何以編程方式進行背景音頻播放。啓用或禁用使用UISwitch可以通過另一個BOOL iVar並有條件地編寫後臺任務代碼來實現。 –

0

在你AppDeletate:

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    [[YouPlayerClass sharedInstance] stop]; 
} 

因此音頻停在應用進入後臺。