我正在开发一个Android应用程序。我需要做的是读取每个录制的音频文件。音频文件已被录制并保存为.pcm文件。我使用此代码来读取.pcm文件。
public double[] readPCM() {
double[] result = null;
try {
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/recording.pcm");
InputStream in = new FileInputStream(file);
int bufferSize = (int) (file.length()/2);
result = new double[bufferSize];
DataInputStream is = new DataInputStream(in);
for (int i = 0; i < bufferSize; i++) {
result[i] = is.readShort() / 32768.0;
}
} catch (FileNotFoundException e) {
Log.i("File not found", "" + e);
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
我想知道这段代码是否正确,因为在这段代码中,bufferSize是fileLength / 2。这令我感到困惑。请向我解释一下。顺便说一下,它确实返回一个带有值的双数组。这段代码工作正常,但我想确保这完全正常。提前谢谢。