2012-06-06 60 views
5

我的應用程序中存在一個奇怪的錯誤。我使用AVAudioPlayer播放聲音(多個實例),通過耳機完美播放聲音,但使用沒有耳機的應用程序不會產生揚聲器發出的聲音。所有的音頻剪輯都是AAC編碼的。應用程序的音頻無法通過揚聲器工作

我已經嘗試通過Objective-C API([AVAudioSession sharedInstance])和C API設置AVAudioSession屬性,但沒有一個選項似乎工作。

+1

您是否嘗試調高音量?它可能被靜音,內置揚聲器有獨立的音量級別。 –

+0

是的,音量很好。 – SMK

+0

同樣的問題在這裏 – intomo

回答

4

在iPhone上的問題 - 當聲音很低 - 似乎有人來了電話聽筒,而不是底部揚聲器(未 耳機插孔) - 改變默認爲SPEAKER

//http://stackoverflow.com/questions/3104562/avaudiorecorder-avaudioplayer-sound-output-on-internal-speaker-how-to-chang 


UInt32 doChangeDefaultRoute = 1; 
AudioSessionSetProperty (
    kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, 
    sizeof (doChangeDefaultRoute), 
    &doChangeDefaultRoute 
); 
18

接受的答案(中ios7)沒有爲我工作,下面的代碼工作。 (我沒有足夠的積分,評論,發佈此作爲單獨的答案)

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord 
           withOptions:AVAudioSessionCategoryOptionDefaultToSpeaker 
             error:nil]; 
+0

+1!這也幫助我解決了與AVSpeechUtterance數量極低有關的半相關問題。非常感謝你!看到http://stackoverflow.com/a/28922543/2578205 – Glavin001

+0

工作就像一個魅力!謝謝 :) –

2

對於那些使用Swift Syntax ...

下面爲我工作。

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord, withOptions: AVAudioSessionCategoryOptions.DefaultToSpeaker) 
    } 
catch { 
      print("can't default to speaker ") 
     }