codec2_talkie/codec2talkie/src/main/java/com/radio/codec2talkie/protocol/Raw.java

82 wiersze
2.2 KiB
Java

package com.radio.codec2talkie.protocol;
import android.content.Context;
import android.util.Log;
import com.radio.codec2talkie.protocol.message.TextMessage;
import com.radio.codec2talkie.protocol.position.Position;
import com.radio.codec2talkie.transport.Transport;
import java.io.IOException;
import java.util.Arrays;
public class Raw implements Protocol {
private static final String TAG = Raw.class.getSimpleName();
private static final int RX_BUFFER_SIZE = 8192;
protected Transport _transport;
protected final byte[] _rxDataBuffer;
private ProtocolCallback _parentProtocolCallback;
public Raw() {
_rxDataBuffer = new byte[RX_BUFFER_SIZE];
}
@Override
public void initialize(Transport transport, Context context, ProtocolCallback protocolCallback) {
_transport = transport;
_parentProtocolCallback = protocolCallback;
}
@Override
public int getPcmAudioRecordBufferSize() {
Log.w(TAG, "getPcmAudioBufferSize() is not supported");
return -1;
}
@Override
public void sendCompressedAudio(String src, String dst, byte[] frame) throws IOException {
_transport.write(Arrays.copyOf(frame, frame.length));
}
@Override
public void sendTextMessage(TextMessage textMessage) throws IOException {
Log.w(TAG, "sendTextMessage() is not supported");
}
@Override
public void sendPcmAudio(String src, String dst, short[] pcmFrame) {
Log.w(TAG, "sendPcmAudio() is not supported");
}
@Override
public void sendData(String src, String dst, String path, byte[] dataPacket) throws IOException {
_transport.write(Arrays.copyOf(dataPacket, dataPacket.length));
}
@Override
public boolean receive() throws IOException {
int bytesRead = _transport.read(_rxDataBuffer);
if (bytesRead > 0) {
_parentProtocolCallback.onReceiveCompressedAudio(null, null, Arrays.copyOf(_rxDataBuffer, bytesRead));
return true;
}
return false;
}
@Override
public void sendPosition(Position position) {
Log.w(TAG, "sendPosition() is not supported");
}
@Override
public void flush() {
}
@Override
public void close() {
}
}