加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 02:26:05 所属栏目:Java 来源:网络整理
导读:大约一年前,我开始构建一个 Android应用程序. 现在,当我尝试运行它时,我得到一个关于AudioInputStream类的异常,经过我使用GOOGLE做的一个简短的研究后我发现android不再支持这个类… 他们有什么替代品吗? 这是我写的代码: private void merge2WavFiles(Str
大约一年前,我开始构建一个 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.getFrameLength() + clip2.getFrameLength()
                    );

        AudioSystem.write(appendedFiles,AudioFileFormat.Type.WAVE,new File(newWavFilePath));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读