|
| 1 | +### 1. 工程中集成回音消除库 |
| 2 | + |
| 3 | +#### 1.1 引用稳定版: |
| 4 | + |
| 5 | +在应用模块的build.gradle中配置 |
| 6 | +``` |
| 7 | +dependencies { |
| 8 | + implementation 'com.tencent.iot.thirdparty.android:trae-voip-sdk:x.x.x' |
| 9 | +} |
| 10 | +``` |
| 11 | +具体版本号可参考[版本号列表](https://search.maven.org/search?q=trae-voip-sdk) |
| 12 | + |
| 13 | +#### 1.2 引用SNAPSHOT版: |
| 14 | + |
| 15 | +(1). 在工程的build.gradle中配置仓库url |
| 16 | +``` |
| 17 | +allprojects { |
| 18 | + repositories { |
| 19 | + google() |
| 20 | + jcenter() |
| 21 | + maven { |
| 22 | + url "https://oss.sonatype.org/content/repositories/snapshots" |
| 23 | + } |
| 24 | + } |
| 25 | +} |
| 26 | +``` |
| 27 | +(2). 在应用模块的build.gradle中配置 |
| 28 | +``` |
| 29 | +dependencies { |
| 30 | + implementation 'com.tencent.iot.thirdparty.android:trae-voip-sdk:x.x.x-SNAPSHOT' |
| 31 | +} |
| 32 | +``` |
| 33 | + |
| 34 | +**注:建议使用稳定版本,SNAPSHOT版仅供开发自测使用** |
| 35 | + |
| 36 | + |
| 37 | +### 2. 接口使用说明 |
| 38 | + |
| 39 | +#### 2.1 初始化 |
| 40 | + |
| 41 | +##### 2.1.1 构造方法 |
| 42 | + |
| 43 | +public TraeVoip(Context context) |
| 44 | + |
| 45 | +| 参数 | 类型 | 描述 | |
| 46 | +|:-:|:-:|:-:| |
| 47 | +| context | Context | 上下文 | |
| 48 | + |
| 49 | +##### 2.1.2 初始化方法 |
| 50 | + |
| 51 | +public boolean initVoip(int fps, int channel, boolean isLog) |
| 52 | + |
| 53 | +| 参数 | 类型 | 描述 | |
| 54 | +|:-:|:-:|:-:| |
| 55 | +| fps | int | 帧率 | |
| 56 | +| channel | int | 通道数 | |
| 57 | +| isLog | boolean | 是否打印日志 | |
| 58 | + |
| 59 | +| 返回值 | 描述 | |
| 60 | +|:-:|:-:| |
| 61 | +| boolean | 是否初始化成功 | |
| 62 | + |
| 63 | +##### 2.1.3 是否已经初始化 |
| 64 | + |
| 65 | +public boolean isVoipInit() |
| 66 | + |
| 67 | +| 返回值 | 描述 | |
| 68 | +|:-:|:-:| |
| 69 | +| boolean | 是否已经初始化 | |
| 70 | + |
| 71 | +#### 2.2 销毁 |
| 72 | + |
| 73 | +##### 2.2.1 析构方法 |
| 74 | + |
| 75 | +public void unInitVoip() |
| 76 | + |
| 77 | +##### 2.2.2 重置AEC缓冲区 |
| 78 | + |
| 79 | +public void voipResetEcBuff() |
| 80 | + |
| 81 | +#### 2.3 核心方法 |
| 82 | + |
| 83 | +##### 2.3.1 Capture方法 |
| 84 | + |
| 85 | +public boolean voipCapture(short[] pPcmIn0ut) //处理麦克风采集数据 |
| 86 | + |
| 87 | +| 参数 | 类型 | 描述 | |
| 88 | +|:-:|:-:|:-:| |
| 89 | +| pPcmIn0ut | short[] | 从麦克风采集到的音频数据 | |
| 90 | + |
| 91 | +| 返回值 | 描述 | |
| 92 | +|:-:|:-:| |
| 93 | +| boolean | 处理结果成功或失败 | |
| 94 | + |
| 95 | +##### 2.3.2 Render方法 |
| 96 | + |
| 97 | +public boolean voipRender(short[] pPcmRef) //处理扬声器将要回放的数据 |
| 98 | + |
| 99 | +| 参数 | 类型 | 描述 | |
| 100 | +|:-:|:-:|:-:| |
| 101 | +| pPcmRef | short[] | 扬声器即将播放的音频数据 | |
| 102 | + |
| 103 | +| 返回值 | 描述 | |
| 104 | +|:-:|:-:| |
| 105 | +| boolean | 处理结果成功或失败 | |
| 106 | + |
| 107 | + |
| 108 | + |
| 109 | +### 3. 示例代码 |
| 110 | + |
| 111 | +``` |
| 112 | +// 初始化 |
| 113 | +mVoip = new TraeVoip(getBaseContext()); |
| 114 | +if (!mVoip.isVoipInit()) { |
| 115 | + if (!mVoip.initVoip(frequency, 1, true)) { |
| 116 | + Log.e("", "Voip Init failed!"); |
| 117 | + } |
| 118 | +} |
| 119 | +
|
| 120 | +// 处理麦克风采集数据 |
| 121 | +audioRecord.read(pcmInOut, 0, mVoip.getFrameSizeInShort()); |
| 122 | +mVoip.voipCapture(pcmInOut); |
| 123 | +
|
| 124 | +// 处理扬声器将要回放的数据 |
| 125 | +mVoip.voipRender(pcmOut); |
| 126 | +audioTrack.write(pcmOut, 0, mVoip.getFrameSizeInShort() * 2); |
| 127 | +
|
| 128 | +
|
| 129 | +// 销毁 |
| 130 | +if (mVoip.isVoipInit()) { |
| 131 | + mVoip.voipResetEcBuff(); |
| 132 | + mVoip.unInitVoip(); |
| 133 | +} |
| 134 | +``` |
| 135 | + |
0 commit comments