package com.source.sounds; import com.rftransceiver.datasets.MyDataQueue; import com.rftransceiver.datasets.AudioData; public class Audio_Reciver implements Runnable { private boolean isReceiving = false; private MyDataQueue dataQueue = null; public Audio_Reciver() { /** * 初始化缓冲区 */ dataQueue = MyDataQueue.getInstance(MyDataQueue.DataType.Sound_Receiver); } public void startReceiver() { if(!isReceiving) { new Thread(this).start(); } } @Override public void run() { //先启动解码器 Audio_Decoder decoder = Audio_Decoder.getInstance(); decoder.startDecoding(); this.isReceiving = true; while(isReceiving) { AudioData data = (AudioData)dataQueue.get(); if(data == null) { //此处可以增加一个延时 }else { //将数据添加至解码器 decoder.addData(data); } } //停止解码器 decoder.stopDecoding(); } public void stopReceiver() { //停止接收线程 isReceiving = false; } public boolean isReceive() { return isReceiving; } public void cacheData(byte[] data,int size) { AudioData receviceData = new AudioData(); receviceData.setSize(size); receviceData.setencodeData(data); dataQueue.add(receviceData); } public void clear() { dataQueue.clear(); } }