我正試圖讓音頻應用在後臺播放。到目前爲止,我補充說:「應用程序播放音頻」中的info.plist的「所需的背景模式」,也有下面的代碼剛開始我的聲音發生器前:屏幕鎖定時iOS背景音頻會停止
AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, &interruptionListener, sgD);
AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, &routeChangeListener, sgD);
// select "Playback" audio session category
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &setCategoryError];
OSStatus propertySetError = 0;
UInt32 category = kAudioSessionCategory_MediaPlayback;
propertySetError = AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof (category), &category);
AudioSessionSetActive(true);
然而,這個時候我切換到另一個應用程序僅適用或iPod的主屏幕。當我關閉屏幕時,它也會關閉我的音頻輸出,這絕對不是我想要的。但是,對於stackoverflow上的問題,所有教程/文檔/答案似乎都表明,在屏幕關閉時保持音頻運行時會自動獲得背景音頻。有人給我提示嗎?提前感謝! 弗裏茨
什麼我忘了說:我使用AudioQueues來生成音頻輸出流。當屏幕關閉時,音頻隊列回調被調用,但耳機聽不到聲音。這可能表示一些音頻路由問題。但是,我的路由更改回調從未被調用。 –
好的,問題解決了......原來,音頻緩衝區大小必須足夠大,如果它應該在屏幕關閉時運行。我不知道這是否適用於所有應用程序,但我的應用程序需要至少2048個樣本的緩衝區大小。有1024個樣本,它只是停止工作。 –
如果你能夠得到它的工作,你可以添加你的解決方案作爲答案?謝謝。 –