Попробовав все, я решил использовать SoundPool, чтобы изменить высоту звука. При скорости воспроизведения 2,0 звук воспроизводится с частотой, удвоенной по сравнению с оригиналом, а при скорости воспроизведения 0,5 он воспроизводится вдвое меньше исходногочастота.Диапазон скорости воспроизведения составляет от 0,5 до 2,0.Но он работал с частотой ниже и выше, чем 0,5 и 2,0.
Я публикую свой рабочий код,
, но для демонстрационных целей здесь необходимо вручную изменять «скорость воспроизведения», каждый раз, когда вы устанавливаете приложение, например: «sp.play (Explosion, 1,1,0,0,1.5f) "здесь" 1.5f "- скорость воспроизведения.Можно легко создать EditView или что-то подобное, чтобы установить значение скорости воспроизведения во время выполнения.
В этом приложении вам просто нужно коснуться экрана приложения, чтобы воспроизвести музыку с установленной скоростью воспроизведения.
import java.io.IOException;
import android.app.Activity;
import android.content.res.AssetFileDescriptor;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SoundPoolActivity extends Activity implements OnClickListener {
SoundPool sp;
int explosion = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View v = new View(this);
v.setOnClickListener(this);
setContentView(v);
sp = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
//explosion = sp.load(this, R.raw.hh,0);
explosion = sp.load("/sdcard/hh.m4a",0);
}
public void onClick(View v){
if (explosion!=0){
sp.play(explosion, 1,1,0,0,2.3f);
}
}
}