Android通话默认打开扬声器的方法

在打电话时如果想在电话接通时默认采用扬声器进行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);
         }
 }

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

(0)

相关推荐

  • Android开发之关闭和打开Speaker(扬声器)的方法

    本文实例讲述了Android开发之关闭和打开Speaker(扬声器)的方法.分享给大家供大家参考,具体如下: private int currVolume = 0; /** * 打开扬声器 */ private void openSpeaker() { try{ AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.

  • Android通话默认打开扬声器的方法

    在打电话时如果想在电话接通时默认采用扬声器进行audio的输出,也就是打开免提.具体的做法是在InCallService文件中,做出下面的修改. 文件:frameworks-base / telecomm/java/android/telecom/InCallService.java 增加oncreate方法,添加phone状态监听的listener. @Override public void onCreate() { super.onCreate(); MyPhoneStateListene

  • 在Pycharm中修改文件默认打开方式的方法

    新下载了一个Pycharm,建了个小demo,期间产生了一个sqlite3文件,由于是第一次打开,就弹出选择打开方式的对话框,手一块直接点了个Text,然后就乱码了: 那我们不小心操作后,怎么重新修改文件的默认打开方式呢? 1.File -> Settings -> Editor -> File Types 找到Text下的"*.sqlite3",把它删掉就ok啦~ 以上这篇在Pycharm中修改文件默认打开方式的方法就是小编分享给大家的全部内容了,希望能给大家一个参

  • PowerShell查看本机文件关联程序和默认打开程序的方法

    上次转载的一篇文章<PowerShell查看打开文件的默认应用程序>,它的亮点是调用了windows api,思路很独特,但是未必实用.后来@J在原文中评论,说assoc + ftype更方便.那么assoc 和 ftype是个神马东西,我简单描述下. assoc 和 ftype是windows系统上cmd.exe中两个命令: 前者assoc 可以返回文件扩展名(比如.mp3)和系统对该扩展名本身的命名(比如WMP11.AssocFile.MP3). 后者 ftype 可以返回系统的扩展名命名

  • android如何默认打开小区广播具体实现

    在nvram_cust_pack.c中COMMON_NVRAM_EF_SMSAL_COMMON_PARAM_DEFAULT 复制代码 代码如下: kal_uint8 const COMMON_NVRAM_EF_SMSAL_COMMON_PARAM_DEFAULT[] = { #if defined (__CS_SERVICE__) && defined (__SMS_OVER_PS_SUPPORT__) 0x03, /* bearer service : GSM prefer */ #el

  • android 使用浏览器打开指定页面的实现方法

    之前,我做一个功能时,服务器返回一个url地址,我需要跳转到指定网页.却发现自己不知道怎么做,在网上搜索了资料,最终是解决了问题.这里记录一下. 启动android默认浏览器 在Android程序中我们可以通过发送隐式Intent来启动系统默认的浏览器.如果手机本身安装了多个浏览器而又没有设置默认浏览器的话,系统将让用户选择使用哪个浏览器来打开连接. Uri uri = Uri.parse("https://www.baidu.com"); Intent intent = new In

  • Android使用WebView.loadUri()打开网页的方法

    本文实例讲述了Android使用WebView.loadUri()打开网页的方法.分享给大家供大家参考,具体如下: 程序如下所示: import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.webkit.WebView; import android.widget.EditText

  • Android键盘输入语言设置默认打开myanmar缅甸语的步骤

    locale是通过系统设置的地区和latin输入法语言通过merger出来的,所以在系统地区设置和输入法语言中同时支持才可以在"输入语言设置"里设置 languageList是从存储latin输入法设置的latin_preferences.xml文件里读取出来的,上一次设置的输入语言 如果要设置某种语言在输入法默认打开可按一下步骤添加文件,我这里已经验证时OK的,你可以试一下. 提供简单的sample code,如默认将缅甸语.英文.法语输入法勾选: 1.书写文件LatinImeRec

  • Pycharm2017版本设置启动时默认自动打开项目的方法

    最新版本不同于旧版本的设置,网上检索一番方法都不适用. 新版的设置位置在"configure->setting->Appearance&Behavior->System Setting->Reopen Last project on startup"这里勾选是否默认启动最近一次关闭的项目. 以上这篇Pycharm2017版本设置启动时默认自动打开项目的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • C#打开扬声器的实操方法和代码

    C#打开扬声器教程 1.播放系统事件声音 2.使用SoundPlayer 3.使用API函数播放 4.使用axWindowsMediaPlayer的COM组件来播放 5.Microsoft speech object Library 6.引入DirectX 的DLL文件的名字空间: 7.建立设备.在我们导入的Microsoft.DirectX.DirectSound空间中,有个Device的类.这个是表示系统中的声音设备. 8.设置CooperativeLevel.因为windows是多任务的系

随机推荐