# 音频管理

音频设备管理主要用到 JCMediaDevice 类中的方法,具体如下:

# 选择音频输入设备

在发起通话前或者加入频道前,您可以通过设置 audioParam (opens new window) 属性来选择音频输入的设备。

// 1. 使用默认音频源
mMediaDevice.audioParam.audioInputDevice = JCMediaDevice.JCMediaDeviceAudioParam.INPUT_DEFAULT;
// 2. 发起通话,内部会自动调用 startAudio()方法开启音频
mCall.call("userID",true , new JCCall.CallParam("extraParam", "ticket"));

音频输入设备分为以下几中类型:

静态变量名 含义
INPUT_DEFAULT DEFAULT 默认音频源
INPUT_MIC MIC 麦克风音频源
INPUT_VOICE_UPLINK VOICE_UPLINK 语音呼叫上行链路(Tx)音频源
INPUT_VOICE_DOWNLINK VOICE_DOWNLINK 语音呼叫下行(Rx)音频源
INPUT_VOICE_CALL VOICE_CALL 语音通话上行加下行音频源
INPUT_CAMCORDER CAMCORDER 调整了用于视频录制的麦克风音频源,方向相同作为相机(如果有)
INPUT_VOICE_RECOGNITION VOICE_RECOGNITION 麦克风音源经过调整,可进行语音识别
INPUT_VOICE_COMMUNICATION IVOICE_COMMUNICATION 已针对语音通信(如VoIP)调整了麦克风音频源。例如,如果可供使用的话,它将使用回声消除或自动增益控制

# 获取音频路由类型

/**
 * 音频路由类型
 *
 * @return 音频路由类型
 */
public abstract int getAudioRouteType();

音频路由类型(AudioRouteType)有以下几种

/** 听筒 */
public static final int AUDIO_ROUTE_RECEIVER = 0;
/** 扬声器 */
public static final int AUDIO_ROUTE_SPEAKER = 1;
/** 有线耳机 */
public static final int AUDIO_ROUTE_HEADSET = 2;
/** 蓝牙耳机 */
public static final int AUDIO_ROUTE_BLUETOOTH = 3;

# 开启/关闭扬声器

/**
 * 开启/关闭扬声器
 *
 * @param enable 是否开启
 */
public abstract void enableSpeaker(boolean enable);

# 开启/关闭音频设备

/**
 * 启动音频,一般正式开启通话前需要调用此接口
 *
 * @return 成功返回 true,失败返回 false
 */
public abstract boolean startAudio();

TIP

从 JCSDK-2.3.1-202009101 版本开始弃用,在通话连接中或者加入频道成功时,内部会自动调用此方法来启动音频

/**
 * 停止音频,一般在通话结束时调用
 *
 * @return 成功返回 true,失败返回 false
 */
public abstract boolean stopAudio();

TIP

从 JCSDK-2.3.1-202009101 版本开始弃用,在通话挂断时或者离开频道时,内部会自动调用此方法来停止音频

示例代码

// 开启扬声器
mediaDevice.enableSpeaker(true);
// 开启音频设备
mediaDevice.startAudio();
// 关闭音频设备
mediaDevice.stopAudio();