簡體   English   中英

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

[英]what is the alternative class for AudioInputStream in java (Android)?

大約一年前,我開始為 android 構建應用程序。 現在,當我嘗試運行它時,我得到了一個關於 AudioInputStream class 的異常,經過我使用 GOOGLE 進行的簡短研究后,我發現 android 不再支持這個 class 了嗎?

這是我寫的代碼:

    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();
    }
}

在開發在 android 上設置的頻率生成方法時,我也遇到了與您類似的問題,因此我在 android 參考和 java se 1 的 API 中到處挖掘。 但是在您的代碼中不存在 class AudioInputStream 甚至 class AudioSystem 的易於更換的替代品。 如果你想使用你的遺產,你可能需要修改和重構幾個項目。 在我的例子中,我使用了 InputStream 和 ByteArrayInputStream (java.io),記錄和系統化的一些動作將由 AudioRecord 和 AudioManager (android.media) 管理。 注意android和java7中的AudioFormat其內部特性不同。 如果我在音頻處理時解決了我的問題,我將為您附上一段示例代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM