2010-04-18 48 views
9

我試圖在編程方式中使用audiomanager.setSpeakerphoneOn(true)在服務中調用揚聲器,但它似乎不工作,我不知道爲什麼。 我應該做點別的嗎?Android以編程方式設置揚聲器

謝謝

+0

類似的問題被提出和回答[這裏] [1] [1]:http://stackoverflow.com/questions/8617381/turn-on-speakerphone-whenever-an-outgoing-叫做/ 21328490#21328490 – 2014-01-24 09:08:49

回答

13

檢查您的清單文件是否有權限執行此操作。

我覺得這是允許你需要MODIFY_AUDIO_SETTINGS

+0

它的工作原理!這很容易!謝謝 – Matroska 2010-04-19 07:48:16

4

在Android 4.1及以上,當你撥打電話,手機自動關閉手機的揚聲器。所以,你需要做的是在監聽呼叫的reciever添加免提電話時,狀態爲「摘機」,甚至把0.5秒的延遲開啓揚聲器一樣,正在取得:

final Handler mHandler = new Handler(); 
mHandler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
    audioManager.setMode(AudioManager.MODE_IN_CALL); 
    audioManager.setSpeakerphoneOn(true); 
    MainActivity.shouldTurnSpeakerOn = false; 
    MainActivity.shouldTurnSpeakerOff = true; 
    Log.d("incoming_call","speaker_on");      
    } 
}, 500); 

請記住將此添加到電話狀態偵聽器。並且在狀態爲空閒狀態時運行揚聲器電話(早期版本需要)。

祝你好運。

+0

我不知道爲什麼要延遲500毫秒的原因。謝謝! – Ishaan 2017-01-01 12:36:44

相關問題