简体   繁体   English

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

[英]android studio changing playback speed of audio for API<23

I want to play a soundtrack where I need full control over the playback speed. 我想播放一个需要完全控制播放速度的配乐。 I have tried several ways to do this in android studio, but I'm facing the following problems: 我已经尝试了几种在android studio中执行此操作的方法,但遇到了以下问题:

  • my API level is 19, so I cannot use MediaPlayer to change the speed 我的API级别是19,所以我无法使用MediaPlayer更改速度
  • SoundPool is supposed to play short sounds and stops after a few seconds of music SoundPool应该会播放短声音并在播放几秒钟的音乐后停止播放

What else could I try? 我还能尝试什么?

Something like this: 像这样:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM