Sau khi thử mọi thứ, tôi quyết định đi với SoundPool để thay đổi Pitch, tốc độ phát lại 2.0 khiến âm thanh phát ở mức gấp đôi bản gốc, và tốc độ phát lại 0,5 khiến nó phát ở mức một nửa tần số ban đầu. Phạm vi tốc độ phát lại là 0,5 đến 2,0. Nhưng nó đã làm việc với freq thấp hơn và cao hơn 0,5 và 2,0.
Tôi gửi bài mã làm việc của tôi,
nhưng như nó chỉ dành riêng cho mục đích demo, Ở đây bạn cần phải thay đổi thủ "tốc độ phát lại", mọi lúc bạn cài đặt ứng dụng cho ví dụ: "sp.play (nổ, 1,1,0,0,1,5f) "ở đây" 1,5f "là tốc độ phát lại. Người ta có thể dễ dàng tạo ra một EditView, hoặc một cái gì đó tương tự để thiết lập giá trị của tỷ lệ phát lại tại thời gian chạy.
Trong ứng dụng này, bạn chỉ cần chạm vào màn hình của ứng dụng để phát nhạc ở tốc độ phát lại đã đặt.
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);
}
}
}
thay đổi '1 + x' cho' 1.0f + x' và (cũng thay đổi '0.005' cho '0.005f' –
Điều này làm cho không có sự khác biệt. – Patrick
How are you kiểm tra mã của bạn. Nếu bạn đang sử dụng một thiết bị thực, có thể thiết bị của bạn quá chậm để tự động thay đổi tốc độ phát lại.Nếu bạn đang sử dụng trình mô phỏng, có thể sự cố là thẻ âm thanh của máy chủ. Thay đổi tốc độ phát lại không phải là một nhiệm vụ tầm thường và có thể yêu cầu nội suy phức tạp – MBober