2012-04-19 103 views
0

我需要通過耳機播放一些音頻。我正在使用AudioTrack在設備上播放一些聲音。並且音頻模式設置爲STREAM_VOICE_CALL。 此外,在我的活動,揚聲器被關閉:setSpeakerphoneOn()不工作2.1,工作於2.3

AudioManager am;    
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
am.setSpeakerphoneOn(false); 

這似乎是在2.3的設備正常工作。但在2.1版上,揚聲器仍然播放聲音。

作爲該修復,我嘗試使用setMode()爲:

am.setMode(AudioManager.MODE_IN_CALL); 

由此,聲音通過耳機爲2.1和2.3播放,但大多數時候不通過2.3使用了在所有。 另外,我在某些地方閱讀過setMode()不應該被應用程序使用,因爲它影響系統範圍的電話狀態。 here:http://code.google.com/p/sipdroid/issues/detail?id=270

任何幫助?

回答

0

2.3以下,Android已與setSpeakerPhoneOn()有點小錯誤。根據this answer,我認爲你需要使用兩種API方法。

關於2.3音頻根本不播放,請檢查您的通話音量設置(將使用什麼)。在使用setMode()之前,嘗試並跟蹤手機的狀態,也可以在音頻管理器不再使用時重新設置爲MODE_NORMAL

+0

我確實將其設置回MODE_NORMAL。仍然是問題。 我想我必須忍受2.1版本的應用程序是2.3+還是bug。 setmode()根本不推薦用於這種應用程序(請查看我的問題編輯中的鏈接) – Alabhya 2012-04-19 18:52:05

+0

由於路由方法已過時,我不認爲還有其他解決方案,除非您專門爲2.2-使用它們。這可能是你使用手機的一個錯誤,順便說一句,就像一個不完整的音頻驅動程序或其他東西。 – 2012-04-19 19:00:38