我嘗試使用SoundPool處理節奏和音高。在play()方法中,如果我們改變比率(最後一個參數),速度和音高都會改變。而且我無法使用SoundPool播放完整的聲音文件。我在SoundPool中使用FileDescriptor獲得解決方案,我們可以提到要播放的文件的長度,但它不起作用。請分享你的想法。如何在Android中使用MediaPlayer或SoundPool處理節奏和音高
謝謝
我嘗試使用SoundPool處理節奏和音高。在play()方法中,如果我們改變比率(最後一個參數),速度和音高都會改變。而且我無法使用SoundPool播放完整的聲音文件。我在SoundPool中使用FileDescriptor獲得解決方案,我們可以提到要播放的文件的長度,但它不起作用。請分享你的想法。如何在Android中使用MediaPlayer或SoundPool處理節奏和音高
謝謝
嘗試了這一點的間距的Android
改變這可能是一些使用。 嘗試一切後,我決定使用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);
}
}
}