预先启动接收的逻辑线程,并注册音频和录音的回调对象。
指令流引擎对象已创建。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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; } } } } |