在浏览 IBM 开发者论坛中的一篇文章后,我意识到 Android sdk 从麦克风录音中读取字节并将其写入 Websocket。我现在尝试从内存中的音频文件读取字节并将它们写入 websocket。我该怎么做?到目前为止我已经:
public class AudioCaptureThread extends Thread{
private static final String TAG = "AudioCaptureThread";
private boolean mStop = false;
private boolean mStopped = false;
private int mSamplingRate = -1;
private IAudioConsumer mIAudioConsumer = null;
// the thread receives high priority because it needs to do real time audio capture
// THREAD_PRIORITY_URGENT_AUDIO = "Standard priority of the most important audio threads"
public AudioCaptureThread(int iSamplingRate, IAudioConsumer IAudioConsumer) {
android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
mSamplingRate = iSamplingRate;
mIAudioConsumer = IAudioConsumer;
}
// once the thread is started it runs nonstop until it is stopped from the outside
@Override
public void run() {
File path = Activity.getContext.getExternalFilesDir(null);
File file = new File (path, "whatstheweatherlike.wav");
int length = (int) file.length();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[length];
FileInputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
for (int readNum; (readNum = in.read(b)) != -1;) {
bos.write(b, 0, readNum);
}
} catch (IOException e) {
e.printStackTrace();
}
byte[] bytes = bos.toByteArray();
mIAudioConsumer.consume(bytes);
}
但是,Activity.getContext 无法识别。我可以在 MainActivity 中将文件转换为字节,但是如何将其写入 websocket?我走在正确的道路上还是这不是正确的方法?如果是,我该如何解决这个问题?
感谢任何帮助!
最佳答案
Activity.getContext
无法识别,因为没有对 Activity
的引用,因为它只是一个 Thread
。您必须传入 Activity
,尽管如果您需要的话,传入 Context
可能更有意义。
您的想法是正确的,您可以创建一个 FileInputStream
并使用它。您可能想使用我们的 MicrophoneCaptureThread
作为引用。这将是一个非常相似的情况,只不过您将使用 FileInputStream
而不是从麦克风读取。您可以在此处查看它(以及使用它的示例项目):https://github.com/watson-developer-cloud/android-sdk/blob/master/library/src/main/java/com/ibm/watson/developer_cloud/android/library/audio/MicrophoneCaptureThread.java
关于android - 使用 IBM Watson Android sdk 将音频文件写入 websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37717597/