启动recvData逻辑线程
场景介绍
预先启动接收的逻辑线程,并注册音频和录音的回调对象。
前提条件
指令流引擎对象已创建。
开发流程
- 封装好逻辑线程对象UpstreamReceiveDispatcher,循环调用指令流引擎的recvData接口。
- 注册音频数据回调和录音回调函数。
- 启动逻辑线程。
编码实例
public class Activity implements BaseActivity {
protected void onCreate(Bundle savedInstanceState) {
upstreamReceiveDispatcher = UpstreamReceiveDispatcher.getInstance();
upstreamReceiveDispatcher.setInstructionEngine(engine);
// 音频数据回调
audioPlayerCallback = new AudioPlayerCallback();
// 注册音频回调
upstreamReceiveDispatcher.addNewPacketCallback((byte) InstructionWrapper.AUDIO, audioPlayerCallback);
// 启动逻辑线程接收音频数据
upstreamReceiveDispatcher.start();
}
}
public class UpstreamReceiveDispatcher extends Thread {
@Override
public void run() {
byte[] recvBuf = new byte[MAX_BUF_LEN];
while (!stopFlag) {
// 循环调用recvData接收数据
int packetLen = engine.recvData(mtype, recvBuf, recvBuf.length);
if (packetLen > 0) {
byte[] copyData = new byte[packetLen];
System.arraycopy(recvBuf, 0, copyData, 0, packetLen);
// 将数据回调给钩子函数
callback.onNewPacket(copyData);
continue;
}
}
}
}
父主题: API开发过程