使用soundpool播放一系列声音并改变速度

时间:2016-03-13 10:23:21

标签: android arrays android-handler soundpool android-audiomanager

我正在尝试开发一个应用程序,它可以连续播放一个预定义的声音阵列,并使用soundpool类的android来改变速度,音高(单独)等。

我知道如何改变声音的音高。

但我不知道如何播放整个阵列以及整个阵列的速度。

请帮忙!

提前谢谢!

编辑:我想我必须使用Handler来播放声音数组,但我不知道怎么做!

1 个答案:

答案 0 :(得分:0)

public class Sound {

private static int length = 22050 * 10; //10 seconds long
private static byte[] data = new byte[length];

static void fillRandom() {
new Random().nextBytes(data); //Create some random noise to listen to.
}

static void play() {

fillRandom();

final int TEST_SR = 22050; //This is from an example I found online.
final int TEST_CONF = AudioFormat.CHANNEL_OUT_MONO;
final int TEST_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
final int TEST_MODE = AudioTrack.MODE_STATIC; //I need static mode.
final int TEST_STREAM_TYPE = AudioManager.STREAM_ALARM;
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR, TEST_CONF, TEST_FORMAT, length, TEST_MODE);
track.write(data, 0, length);
track.play();
}
}

此代码会播放一些随机噪音。您所要做的就是用您想要播放的正确音乐文件填充byte []数据数组......