大约一年前,我开始构建一个Android应用程序。 现在,当我尝试运行它时,我得到一个关于AudioInputStream类的异常,经过我使用GOOGLE做的一个简短的研究后我发现android不再支持这个类... 是他们的替代品吗?
这是我写的代码:
private void merge2WavFiles(String wavFile1, String wavFile2, String newWavFilePath) {
try {
File wave1 = new File(wavFile1);
if(!wave1.exists())
throw new Exception(wave1.getPath() + " - File Not Found");
AudioInputStream clip1 = AudioSystem.getAudioInputStream(wave1);
AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));
AudioInputStream emptyClip =
AudioSystem.getAudioInputStream(new File(emptyWavPath));
AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, emptyClip),
clip1.getFormat(),
clip1.getFrameLength() + 100
);
clip1 = appendedFiles;
appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength()
);
AudioSystem.write(appendedFiles, AudioFileFormat.Type.WAVE, new File(newWavFilePath));
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:1)
在开发android设置的频率生成方法时,我也遇到了类似的问题,所以我在android参考和java se 1.7 docs的API中随处可见。但是不存在类AudioInputStream的易于交换的替代方案,甚至在代码中也找不到类AudioSystem。 如果你想使用你的遗产,你可能需要修改和重构几个项目。在我的例子中,我使用了InputStream和ByteArrayInputStream(java.io),记录和系统的一些动作将由AudioRecord和AudioManager(android.media)管理。请注意,android和java7中的AudioFormat与其内部特征不同。如果我在音频处理上清除了我的问题,我会为你附上一段示例代码。