android studio改变API的音频播放速度< 23

时间:2017-03-20 12:23:22

标签: java android audio playback

我想播放配音,我需要完全控制播放速度。我在android studio中尝试了几种方法,但我遇到了以下问题:

  • 我的API级别是19,因此我无法使用MediaPlayer来更改速度
  • SoundPool应播放短音并在几秒音乐后停止

我还能尝试什么?

1 个答案:

答案 0 :(得分:1)

这样的事情:

public class AudioActivity extends Activity {
AudioTrack audio = new AudioTrack(AudioManager.STREAM_MUSIC,
        44100,
        AudioFormat.CHANNEL_OUT_STEREO,
        AudioFormat.ENCODING_PCM_16BIT,
        intSize, //size of pcm file to read in bytes
        AudioTrack.MODE_STATIC);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //read track from file
        File file = new File(getFilesDir(), fileName);

        int size = (int) file.length();
        byte[] data = new byte[size];

        try {
            FileInputStream fileInputStream = new FileInputStream(file);
            fileInputStream.read(data, 0, size);
            fileInputStream.close();

            audio.write(data, 0, data.length);
        } catch (IOException e) {}
    }

    //change playback speed by factor
    void changeSpeed(double factor) {
        audio.setPlaybackRate((int) (audio.getPlaybackRate() * factor));
    }
}