Android Studio меняет скорость воспроизведения аудио для API<23
Я хочу сыграть саундтрек, где мне нужен полный контроль над скоростью воспроизведения. Я пробовал несколько способов сделать это в Android Studio, но я сталкиваюсь со следующими проблемами:
- мой уровень API 19, поэтому я не могу использовать MediaPlayer для изменения скорости
- SoundPool должен проигрывать короткие звуки и останавливаться через несколько секунд музыки
Что еще я мог попробовать?
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));
}
}