在打電話時(shí)如果想在電話接通時(shí)默認(rèn)采用揚(yáng)聲器進(jìn)行audio的輸出,也就是打開免提。具體的做法是在InCallService文件中,做出下面的修改。
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、連山網(wǎng)站維護(hù)、網(wǎng)站推廣。
文件:frameworks-base / telecomm/java/android/telecom/InCallService.java
增加oncreate方法,添加phone狀態(tài)監(jiān)聽的listener。
@Override public void onCreate() { super.onCreate(); MyPhoneStateListener phonehoneStateListener=new MyPhoneStateListener(); TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mTelephonyManager.listen(phonehoneStateListener,PhoneStateListener.LISTEN_CALL_STATE); }
增加銷毀事件
@Override public void onDestroy() { super.onDestroy(); }
增加事件的定義。
private class MyPhoneStateListener extends PhoneStateListener{ @Override public void onCallStateChanged(int state, String incomingNumber) { switch (state) { case TelephonyManager.CALL_STATE_IDLE: setAudioRoute(CallAudioState.ROUTE_EARPIECE); break; case TelephonyManager.CALL_STATE_RINGING: setAudioRoute(CallAudioState.ROUTE_SPEAKER); break; case TelephonyManager.CALL_STATE_OFFHOOK: setAudioRoute(CallAudioState.ROUTE_SPEAKER); default: break; } super.onCallStateChanged(state, incomingNumber); } }
如果是MTK平臺(tái)的話,可以開啟如下這個(gè)宏,也可以達(dá)到想要的效果
MTK_TB_APP_CALL_FORCE_SPEAKER_ON = yes
Android手機(jī)聽筒和揚(yáng)聲器切換
AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); private void setSpeakerphoneOn(boolean on) { if(on) { audioManager.setSpeakerphoneOn(true); } else { audioManager.setSpeakerphoneOn(false);//關(guān)閉揚(yáng)聲器 audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL); setVolumeControlStream(AudioManager.STREAM_VOICE_CALL); //把聲音設(shè)定成Earpiece(聽筒)出來,設(shè)定為正在通話中 audioManager.setMode(AudioManager.MODE_IN_CALL); } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。