首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MODE_IN_CALL,MODE_IN_COMMUNICATION,MODE_CALL_SCREENING有什么区别?

MODE_IN_CALL,MODE_IN_COMMUNICATION,MODE_CALL_SCREENING有什么区别?
EN

Stack Overflow用户
提问于 2021-10-21 01:56:38
回答 2查看 1.1K关注 0票数 8

这是文件上说的,但我不能完全理解。

代码语言:javascript
复制
/* modes for setMode/getMode/setRoute/getRoute */
    /**
     * Audio harware modes.
     */
    /**
     * Invalid audio mode.
     */
    public static final int MODE_INVALID            = AudioSystem.MODE_INVALID;
    /**
     * Current audio mode. Used to apply audio routing to current mode.
     */
    public static final int MODE_CURRENT            = AudioSystem.MODE_CURRENT;
    /**
     * Normal audio mode: not ringing and no call established.
     */
    public static final int MODE_NORMAL             = AudioSystem.MODE_NORMAL;
    /**
     * Ringing audio mode. An incoming is being signaled.
     */
    public static final int MODE_RINGTONE           = AudioSystem.MODE_RINGTONE;
    /**
     * In call audio mode. A telephony call is established.
     */
    public static final int MODE_IN_CALL            = AudioSystem.MODE_IN_CALL;
    /**
     * In communication audio mode. An audio/video chat or VoIP call is established.
     */
    public static final int MODE_IN_COMMUNICATION   = AudioSystem.MODE_IN_COMMUNICATION;
    /**
     * Call screening in progress. Call is connected and audio is accessible to call
     * screening applications but other audio use cases are still possible.
     */
    public static final int MODE_CALL_SCREENING     = AudioSystem.MODE_CALL_SCREENING;

你能用例子解释一下吗?

目前,我在WebView上使用视频聊天服务,我得到了MODE_CALL_SCREENING,它使用媒体音量,它应该使用“呼叫”音量。我怎么能强迫它?

EN

回答 2

Stack Overflow用户

发布于 2022-01-10 08:28:01

MODE_IN_CALL

你是通过只打音频电话(普通电话)与某人交谈的。

MODE_IN_COMMUNICATION

你是视频和音频,和你的朋友聊天,或者在VoIP上给他们打电话

MODE_CALL_SCREENING

你的电话响了,你在接电话之前先检查一下号码。

票数 1
EN

Stack Overflow用户

发布于 2022-01-17 05:40:18

模式参数在AudioSystem类中定义,以设置电话的状态。

MODE_IN_CALL:来电模式。一个电话已经确定了。

Constant Value: 2 (0x00000002)

代码语言:javascript
复制
public static final int MODE_IN_CALL 





private void setAudioNormal() {
    AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setMode(AudioManager.MODE_NORMAL);
    audioManager.setSpeakerphoneOn(false);
  }
}

另一个例子

代码语言:javascript
复制
import android.media.AudioManager; 
public void startOutgoingRinger(OutgoingRinger.Type type) {
    AudioManager audioManager = ServiceUtil.getAudioManager(context);
    audioManager.setMicrophoneMute(false);

    if (type == OutgoingRinger.Type.SONAR) {
        audioManager.setSpeakerphoneOn(false);
    }

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
    } else {
        audioManager.setMode(AudioManager.MODE_IN_CALL);
    }

    outgoingRinger.start(type);
}

通信音频模式下的MODE_IN_COMMUNICATION:。建立音频/视频聊天或VoIP通信。

Constant Value: 3 (0x00000003)

代码语言:javascript
复制
public static final int MODE_IN_COMMUNICATION



  private void chooseVoiceMode() {
      AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
      if(mAudioConfiguration.aec) {
        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        audioManager.setSpeakerphoneOn(true);
      } else {
        audioManager.setMode(AudioManager.MODE_NORMAL);
        audioManager.setSpeakerphoneOn(false);
      }
    }

MODE_CALL_SCREENING:呼叫筛选正在进行中。有一个呼叫连接,但音频没有使用。呼叫筛选:这是识别来电者的过程,提供有关来电者的信息,并确定如何最好地响应该呼叫。

Constant Value: 4 (0x00000004)

代码语言:javascript
复制
public static final int MODE_CALL_SCREENING





public int getMode() {
    final IAudioService service = getService();
    try {
        int mode = service.getMode();
        int sdk;
        try {
            sdk = getContext().getApplicationInfo().targetSdkVersion;
        } catch (NullPointerException e) {
            // some tests don't have a Context
            sdk = Build.VERSION.SDK_INT;
        }
        if (mode == MODE_CALL_SCREENING && sdk <= Build.VERSION_CODES.Q) {
            mode = MODE_IN_CALL;
        }
        return mode;
    } catch (RemoteException e) {
        throw e.rethrowFromSystemServer();
    }
}

单击此处获取更多示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69654954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档