2011-01-14 138 views
8

我正在編寫使用「Flite」文本到語音引擎來發布特定事件的iPad應用程序。 Flite引擎使用AVAudioPlayer實例播放語音音頻。爲了好玩,我決定在我的應用程序中添加一些簡單的控件,以允許用戶在使用MPMusicPlayerController(當然)運行我的應用程序時控制iPod播放(接下來,prev,播放/暫停和音量 - 基本操作)。iPod音量級別影響應用程序音量級別

我遇到的問題是,當我使用MPMusicPlayerController調整iPod音量時,所有音頻都受到影響,包括其他音效和語音音頻。我在播放聲音之前將這些其他音頻播放器(AVAudioPlayer實例)的音量設置爲1.0,但無論iPod播放器的音量設置爲多少,音量似乎都會受到限制...

這是正常的嗎?我能做些什麼來解決它?無論iPod播放器的音量如何,我都希望我的應用的音頻以系統全音量播放。 (例如:用戶已將系統音量設置爲設備最大音量的80%,我希望我的應用能夠以80%的100%播放音頻,同時允許用戶將iPod音頻播放調整爲該80%的0-100% )注意:我對「躲閃」不感興趣,但在我的應用程序運行時(背景音樂)始終將iPod音量調低。

我也有這個問題,有時候 - 當你第一次啓動應用程序並按下iPod播放器(發送[播放器播放]呼叫)播放時,iPod不響應。如果我按主頁按鈕,進入iPod應用程序並開始播放,然後,一旦返回到我的應用程序,它工作正常。這是怎麼回事?

在此先感謝您的幫助!

+0

嗨維克,你有沒有解決這個問題,因爲我也面臨着與MPMusicPlayerController&AVAudioPlayer相同的問題。 – 2011-03-19 18:24:33

+0

不,我確實實施了「躲避」,但這種解決方案並不是我或我的用戶的行爲...... – Vic320 2011-04-08 14:30:46

回答

1

這可能與您指定的音頻會話類別有關。查看Audio Session Programming Guide以查看您是否選擇了正確的類別。

+0

此文檔沒有幫助。我能做的唯一事情就是實現我已經完成的「躲避」,但這不是我或我的用戶想要的...... – Vic320 2011-04-08 14:29:27

+0

您正在使用哪種音頻會話類別? – jdmunro 2011-04-11 12:49:51

0

側面的音量按鈕可控制系統音量,並可擴展應用聲音的音量。

我想它被認爲是主音量控制。

0

您可以設置特定的樣品體積或使用聲音的AVItem的setVolume

[項目setVolume]

您可以創建一個AVItem引用現有的聲音文件在您的應用程序或在iPhone上。代碼很簡單,看起來像這樣 - >

AVItem * item [[AVItem alloc] initWithPath:@「the file」]; [item setVolume];

順便說一下,這不會影響音頻通道的其餘部分(由某種AVController對象實例化),並且您在代碼中設置的音量不會顯示在屏幕上,因此我不確定您是否可以更改它在運行時。