1

我有一个用于播放混合音频文件的 SoundPool[]。Soundpools一起玩没有任何问题,而且非常高效!非常简短:

    private SoundPool[] sound = new SoundPool[C.ROWS];
    // every sound is initizialized with a load()
    // and when asked...
public void play(int row, int variation) {
    if (mute[row]) return;
    if (variation != 0)
        sound[row].play(variation_scheme[row][variation-1], volume[row], volume[row], PRI, 0, 1f);
}

这只是为了展示!:) 我没有放其他代码,因为一切都很好,这不是一个真正的问题。相反,我的问题是:

如何将应用程序的整个输出重定向到文件,而不是(或除了)音频扬声器?换句话说,有两个主要的解决方案: 1. 我如何指示 AudioPool 将声音播放()到文件而不是音频设备?2.或者如何将我的应用程序(甚至所有手机)的所有音频输出重定向到文件?

谢谢你。

4

1 回答 1

0

我发现如何录制音频的唯一方法是记录正在按下的声音的每个信息,例如持续时间(使用媒体播放器)、soundID、毫秒时间戳以播放到毫秒、音量、速率(如果需要)。然后将这些写入文本文件(内部或外部)以供以后使用。创建一个播放系统,从文本文件中解码保存的信息并将其组织在一些数组或哈希图中,并通过某种播放方法进行播放,可能使用处理程序和 postDelay 播放声音和所需时间,然后插入必要的数据从数组或哈希图中播放声音。

通过这种方式,您可以拥有自己的数据文件来播放声音序列。

于 2014-05-17T22:32:11.483 回答