我正在使用AVAudioPlayer
和NSFileHandle
進行音頻流式傳輸。基本思想是我將流式音頻數據保存到帶有文件系統的設備上,然後使用AVAudioPlayer
回放剛剛保存的文件。即使正在進行流式傳輸,AVAudioPlayer
仍然可以播放該文件。AVAudioPlayer不會在後臺開始播放
我有一個UIButton
開始流式傳輸/下載。當下載的數據累積到特定數量的字節時,將自動播放AVAudioPlayer
(觸發「播放」方法AVAudioPlayer
)。我的問題是:我點擊按鈕開始流式傳輸/下載,然後很快按下iPhone的主頁按鈕,使我的應用程序轉到後臺。下載繼續在後臺工作,但AVAudioPlayer
的「播放」方法返回「NO」,這意味着「播放」方法不播放音頻。
我加入AVAudioSession
相關的代碼,以我的音頻播放器的init方法:
- (id) initWithURL:(NSString *) downloadedMusicURL
{
if ((self = [super init]))
{
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
CFURLRef url = CFURLCreateWithFileSystemPath (NULL, (CFStringRef)downloadedMusicURL, kCFURLPOSIXPathStyle, FALSE);
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:CFBridgingRelease(url) error:nil];
AVAudioSession *session = [AVAudioSession sharedInstance];
[session setActive:YES error:nil];
[session setCategory:AVAudioSessionCategoryPlayback error:nil];
}
return self;
}
另外在info.plist中我增加了一個項目「應用程序播放音頻」爲重點「所需的背景模式」。然而,「戲劇」在後臺仍然沒有被正確調用。我還錯過了什麼?提前致謝。
這是,如果你想完成一個漫長的任務,將只允許最多10分鐘。額外的時間後,您可以完成您的任務。 – rckoenes
根據我的項目我有很長的任務,所以我用這個 – iEinstein
我沒有添加上面的代碼,但它仍然無法正常工作。馬特上面的評論是有道理的。 – stspb