什么是java(Android)中AudioInputStream的替代类?

时间:2011-06-01 17:01:21

标签: java android

大约一年前,我开始构建一个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();
    }
}

1 个答案:

答案 0 :(得分:1)

在开发android设置的频率生成方法时,我也遇到了类似的问题,所以我在android参考和java se 1.7 docs的API中随处可见。但是不存在类AudioInputStream的易于交换的替代方案,甚至在代码中也找不到类AudioSystem。 如果你想使用你的遗产,你可能需要修改和重构几个项目。在我的例子中,我使用了InputStream和ByteArrayInputStream(java.io),记录和系统的一些动作将由AudioRecord和AudioManager(android.media)管理。请注意,android和java7中的AudioFormat与其内部特征不同。如果我在音频处理上清除了我的问题,我会为你附上一段示例代码。