在打电话时如果想在电话接通时默认采用扬声器进行audio的输出,也就是打开免提。具体的做法是在InCallService文件中,做出下面的修改。

文件:frameworks-base / telecomm/java/android/telecom/InCallService.java

增加oncreate方法,添加phone状态监听的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平台的话,可以开启如下这个宏,也可以达到想要的效果

MTK_TB_APP_CALL_FORCE_SPEAKER_ON = yes

Android手机听筒和扬声器切换

 AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE); private void setSpeakerphoneOn(boolean on) {         if(on) {             audioManager.setSpeakerphoneOn(true);         } else {             audioManager.setSpeakerphoneOn(false);//关闭扬声器             audioManager.setRouting(AudioManager.MODE_NORMAL, AudioManager.ROUTE_EARPIECE, AudioManager.ROUTE_ALL);             setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);             //把声音设定成Earpiece(听筒)出来,设定为正在通话中             audioManager.setMode(AudioManager.MODE_IN_CALL);         } }

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多相关文章

  1. Android(安卓)Studio 入门:(五) 悬浮按钮增加联系人信息
  2. java.lang.Class Cast Exception: android.widget.HeaderViewLis
  3. android版本7.0以上无法抓取https
  4. Android(安卓)增加预置的APN信息
  5. Android的引用jar包
  6. android EditText增加删除事件
  7. Android(安卓)PopupWindow增加半透明蒙层
  8. Fragment中添加tabs
  9. Google Maps for Android(安卓)升级到 6.0,增加室内地图

随机推荐

  1. Android(安卓)使用level-list改变对应的
  2. EditText失去焦点时收起软键盘
  3. Android(安卓)IPC 通讯机制源码分析 二
  4. Android系统启动流程(源码分析)
  5. Android(安卓)SDK 与API版本对应关系
  6. 全新 Android(安卓)注入器:Dagger 2(一)
  7. android system setup and building (2)
  8. 配置android环境
  9. Android(安卓)组件 ContentProvider 内容
  10. Android中focusable属性的妙用——底层按