启动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开发过程