试了一切后,我决定使用SoundPool来改变音高,2.0的播放速度会导致声音以原来的两倍频率播放,0.5的播放速度会导致其播放一半原始频率。播放速率范围是0.5到2.0。 但它的确适用于低于和高于0.5和2.0的频率。
我张贴我的工作代码,
但由于其仅用于演示的目的,在这里,你需要手动更改“回放速度”,每次你安装了如应用程序:“sp.play(爆炸, 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);
}
}
}
改变'1 + x'到'1.0F + x'和(也改变'0.005'到'0.005f' –
这没什么区别。 – Patrick
你如何测试你的代码。如果您使用的是如果您使用的是模拟器,可能问题在于您的主机的声卡,更改播放速度并不是一项简单的任务,可能需要复杂的插值特别是在使用非标准转换速率运行时 – MBober