com.tencent.av.sdk
Class AVAudioCtrl

java.lang.Object
  extended by com.tencent.av.sdk.AVAudioCtrl

public class AVAudioCtrl
extends java.lang.Object

AVAudioCtrl表示音频控制器,主要用于简化音频设备控制。
通过AVAudioCtrl,您可以控制麦克风、扬声器,获取设备音量。
方法中涉及到的音量,全部为App内部的音量,和操作系统的音量没有联系。
在SDK正常启动之后,可以通过AVContext的GetAudioCtrl()来获取AVAudioCtrl对象。
另外需要注意的是,当App被切到后台,需要暂停SDK,否则会导致无法接触对系统资源的占用。


Nested Class Summary
static class AVAudioCtrl.AudioDataSourceType
          音频数据输入和输出类型。
static class AVAudioCtrl.AudioFrame
          单帧音频数据。
static class AVAudioCtrl.AudioFrameDesc
          音频数据格式。
static class AVAudioCtrl.Delegate
          AVAudioCtrl的委托类,主要用于通知输出设备变化。
static class AVAudioCtrl.RegistAudioDataCompleteCallback
          音频数据回调函数定义。
通过回调函数,来通知外部读取或者写入具体类型的音频数据。
对于输入音频数据,AudioFrame.data指向数据缓冲区, 用户将音频数据写入缓冲区, AudioFrame.dataLen表示数据缓冲区总大小, 用户需改写为输入音频数据实际大小。
回调处理要求是非阻塞的,SDK回调时间间隔稳定在20ms左右, 在回调中阻塞过长时间会导致声音异常等问题。
SDK通过回调返回值来判断数据处理是否成功输。处理成功请返回 AVError.AV_OK,否则返回 AVError.AV_ERR_FAILED。
 
Field Summary
static int AUDIO_CODEC_TYPE_CELT
          音频编解码器类型: celt。
static int AUDIO_CODEC_TYPE_SILK
          音频编解码器类型: silk。
 int nativeObj
           
static int OUTPUT_MODE_HEADSET
          听筒模式。
static int OUTPUT_MODE_SPEAKER
          扬声器模式。
 
Constructor Summary
AVAudioCtrl()
          构造函数。
 
Method Summary
 boolean enableMic(boolean isEnable)
          开启或关闭麦克风。
同步返回结果。
 boolean enableSpeaker(boolean isEnable)
          开启或关闭扬声器/耳机。
同步返回结果。此方法操作的物理设备和setAudioOutputMode(int)有关系。
输出模式为OUTPUT_MODE_SPEAKER,则操作的是扬声器。 输出模式为OUTPUT_MODE_HEADSET,则操作的是耳机。
 AVAudioCtrl.AudioFrameDesc getAudioDataFormat(int src_type)
          获取某类型的音频格式参数。
 float getAudioDataVolume(int src_type)
          获取某类型的音频音量。
 int getAudioOutputMode()
          获取语音输出模式。
同步返回结果。主要用于App区分现在SDK是否采用外放模式播放声音。
SDK默认的语音模式是听筒模式。
 int getDynamicVolume()
          获取麦克风的实时音量。
同步返回结果。
 java.lang.String getQualityTips()
          获取通话中实时音频质量相关信息,业务侧可以不用关心,主要用来查看通话情况、排查问题等。
 int getVolume()
          获取麦克风的音量。
同步返回结果。
 int registAudioDataCallback(int src_type, AVAudioCtrl.RegistAudioDataCompleteCallback javacallback)
          注册具体数据类型的回调函数。
 boolean setAudioDataFormat(int src_type, AVAudioCtrl.AudioFrameDesc audio_desc)
          设置某类型的音频格式参数。
 int setAudioDataVolume(int src_type, float volume)
          设置某类型的音频音量。
 boolean setAudioOutputMode(int outputMode)
          设置语音输出模式。
同步返回结果。主要用于切换扬声器/听筒,SDK把听筒、有线耳机、蓝牙耳机统一归类为听筒。
切换成扬声器模式,声音会外放,切换成耳机模式,SDK会按照有线耳机 > 蓝牙耳机 > 听筒的优先级枚举设备,播放声音。
 void setDelegate(AVAudioCtrl.Delegate delegate)
          注册委托。 同步返回结果。App通过注册此委托,同步更新显示当前的声音播放状态,例如是否为外放。 注意:SDK在用户插耳机的时候,会自动选择用户新插入的耳机,设备优先级:有线耳机 > 蓝牙耳机 > 听筒。 SDK自动选择的操作会导致实际的outputMode和setAudioOutputMode(int)不一样,App需要响应委托,及时更新状态。
 void setIsSystemApp(boolean isSystemApp)
          设置是否是系统APK
 void setVolume(int volume)
          设置SDK的播放音量。
同步返回结果。
 void startTRAEService()
          开启音视频服务
进房间前要调用,否则会导致音频参数失效,音频设备组件切换失败
 void startTRAEServiceWhenIsSystemApp()
          在当前APK是系统APK的情况下开启音视频服务
 void stopTRAEService()
          停止音视频服务
 void stopTRAEServiceWhenIsSystemApp()
          在当前APK是系统APK的情况下停止音视频服务
 void uninit()
          退出音视频通话之后销毁音视频通话资源
 int unregistAudioDataCallback(int src_type)
          反注册具体数据类型的回调函数。
 int unregistAudioDataCallbackAll()
          反注册所有回调函数。
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

OUTPUT_MODE_HEADSET

public static final int OUTPUT_MODE_HEADSET
听筒模式。

See Also:
Constant Field Values

OUTPUT_MODE_SPEAKER

public static final int OUTPUT_MODE_SPEAKER
扬声器模式。

See Also:
Constant Field Values

AUDIO_CODEC_TYPE_SILK

public static final int AUDIO_CODEC_TYPE_SILK
音频编解码器类型: silk。

See Also:
Constant Field Values

AUDIO_CODEC_TYPE_CELT

public static final int AUDIO_CODEC_TYPE_CELT
音频编解码器类型: celt。

See Also:
Constant Field Values

nativeObj

public int nativeObj
Constructor Detail

AVAudioCtrl

public AVAudioCtrl()
构造函数。

Method Detail

registAudioDataCallback

public int registAudioDataCallback(int src_type,
                                   AVAudioCtrl.RegistAudioDataCompleteCallback javacallback)
注册具体数据类型的回调函数。

Parameters:
[in] - src_type 音频数据类型。
[in] - callback 用户自定义的回调函数地址。
[in] - custom_data 用户自定义回调数据。
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

unregistAudioDataCallback

public int unregistAudioDataCallback(int src_type)
反注册具体数据类型的回调函数。

Parameters:
[in] - src_type 音频数据类型。
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

unregistAudioDataCallbackAll

public int unregistAudioDataCallbackAll()
反注册所有回调函数。

Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

setAudioDataFormat

public boolean setAudioDataFormat(int src_type,
                                  AVAudioCtrl.AudioFrameDesc audio_desc)
设置某类型的音频格式参数。

Parameters:
[in] - src_type 音频数据类型。
[in] - audio_desc 音频数据的格式。
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

getAudioDataFormat

public AVAudioCtrl.AudioFrameDesc getAudioDataFormat(int src_type)
获取某类型的音频格式参数。

Parameters:
[in] - src_type 音频数据类型。
[out] - audio_desc 音频数据的格式。
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

setAudioDataVolume

public int setAudioDataVolume(int src_type,
                              float volume)
设置某类型的音频音量。

Parameters:
[in] - src_type 音频数据类型。
[in] - volume 音量 (范围 0-1)。
Returns:
成功返回AVError.AV_OK, 否则返回AVError.AV_ERR_FAILED。

getAudioDataVolume

public float getAudioDataVolume(int src_type)
获取某类型的音频音量。

Parameters:
[in] - src_type 音频数据类型。
Returns:
返回音量 大小(0-1)。

getVolume

public int getVolume()
获取麦克风的音量。
同步返回结果。

Returns:
音频设备音量,取值范围0-100。

getDynamicVolume

public int getDynamicVolume()
获取麦克风的实时音量。
同步返回结果。

Returns:
音频设备音量,取值范围0-100。

setVolume

public void setVolume(int volume)
设置SDK的播放音量。
同步返回结果。

Parameters:
volume - 音量,取值范围为0-100。

enableMic

public boolean enableMic(boolean isEnable)
开启或关闭麦克风。
同步返回结果。

Parameters:
isEnable - true表示开启,false表示关闭。
Returns:
true表示设置成功,false表示失败。

enableSpeaker

public boolean enableSpeaker(boolean isEnable)
开启或关闭扬声器/耳机。
同步返回结果。此方法操作的物理设备和setAudioOutputMode(int)有关系。

Parameters:
isEnable - true表示开启,false表示关闭。
Returns:
true表示设置成功,false表示失败。
See Also:
setAudioOutputMode(int)

setAudioOutputMode

public boolean setAudioOutputMode(int outputMode)
设置语音输出模式。
同步返回结果。主要用于切换扬声器/听筒,SDK把听筒、有线耳机、蓝牙耳机统一归类为听筒。
切换成扬声器模式,声音会外放,切换成耳机模式,SDK会按照有线耳机 > 蓝牙耳机 > 听筒的优先级枚举设备,播放声音。

Parameters:
outputMode - 输出模式,取值如下:
Returns:
true表示设置成功,false表示失败, false原因包括输入无效的枚举值,没有枚举到可用到设备。
See Also:
getAudioOutputMode()

getAudioOutputMode

public int getAudioOutputMode()
获取语音输出模式。
同步返回结果。主要用于App区分现在SDK是否采用外放模式播放声音。
SDK默认的语音模式是听筒模式。

Returns:
输出模式,取值如下:
See Also:
setAudioOutputMode(int)

setDelegate

public void setDelegate(AVAudioCtrl.Delegate delegate)
注册委托。 同步返回结果。App通过注册此委托,同步更新显示当前的声音播放状态,例如是否为外放。 注意:SDK在用户插耳机的时候,会自动选择用户新插入的耳机,设备优先级:有线耳机 > 蓝牙耳机 > 听筒。 SDK自动选择的操作会导致实际的outputMode和setAudioOutputMode(int)不一样,App需要响应委托,及时更新状态。

See Also:
TODO robotding 说明setAudioOutputMode和Delegate是否会互相影响。

getQualityTips

public java.lang.String getQualityTips()
获取通话中实时音频质量相关信息,业务侧可以不用关心,主要用来查看通话情况、排查问题等。

Returns:
tips。

uninit

public void uninit()
退出音视频通话之后销毁音视频通话资源


stopTRAEService

public void stopTRAEService()
停止音视频服务


startTRAEService

public void startTRAEService()
开启音视频服务
进房间前要调用,否则会导致音频参数失效,音频设备组件切换失败


setIsSystemApp

public void setIsSystemApp(boolean isSystemApp)
设置是否是系统APK

Parameters:
[in] - isSystemApp 是否为系统APK。

startTRAEServiceWhenIsSystemApp

public void startTRAEServiceWhenIsSystemApp()
在当前APK是系统APK的情况下开启音视频服务


stopTRAEServiceWhenIsSystemApp

public void stopTRAEServiceWhenIsSystemApp()
在当前APK是系统APK的情况下停止音视频服务