我正在尝试制作一个应用程序,该应用程序从麦克风(使用 Superpowered)获取音频信号,然后将其推入数据报包中发送。据我了解,我应该使用 SuperpoweredAndroidAudioIO 类进行输入,但我不知道如何读取它的缓冲区来发送它。
基本上我想使用 Superpowered 和 C++ 来实现类似的东西:
...
recBufSize = AudioRecord.getMinBufferSize(frequency, channelConfiguration,
audioEncoding);
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency,
channelConfiguration, audioEncoding, recBufSize);
new Thread(){
byte[] buffer = new byte[recBufSize];
public void run(){
try {
datagramSocket = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
audioRecord.startRecording();
isRecording = true;
while (isRecording){
int readSize = audioRecord.read(buffer, 0, buffer.length);
try {
DatagramPacket packet = new DatagramPacket(
buffer, readSize, receiverAddress, port);
datagramSocket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
datagramSocket.close();
}
}.start();
我是 JNI 和 NDK 的新手,所以我只想知道这是否可行或合理以减少延迟(与使用 Java 代码相比),如果可以,可能会提示从哪里开始。谢谢。