尝试了一切后,我决定使用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("/sdcard/hh.m4a",0);
}
public void onClick(View v){
if (explosion!=0){
sp.play(explosion, 1,1,0,0,2.3f);
}
}
}
1 + x
更改为1.0f + x
,并且(也将0.005
更改为0.005f
)。 - Sherif elKhatibSystemClock.sleep(100);
? - MBober