Thay vì chèn sẵn các tệp WAV và nhúng chúng vào ứng dụng của bạn, bạn có thể tạo âm thanh WAV kênh tách trong bộ nhớ từ mã, sau đó lưu nó dưới dạng tệp WAV mà bạn sẽ phát với SoundPool hoặc phát âm thanh trực tiếp bằng cách sử dụng AudioTrack (Tôi khuyên bạn nên sử dụng sau).
Bản thân âm thanh chỉ là một mảng các số nguyên (thường) 2 byte. Với âm thanh nổi, các mẫu trái và phải được xen kẽ trong toàn bộ mảng (vì vậy mẫu [0] là mẫu L đầu tiên, mẫu [1] là mẫu R đầu tiên, mẫu [2] là mẫu L thứ hai, vv). Vì vậy, khi ứng dụng của bạn khởi động, bạn sẽ tạo một mảng tuy nhiên bạn cần (với âm thanh chất lượng CD, mảng của bạn sẽ cần 88200 phần tử cho mỗi giây âm thanh), sau đó điền các mẫu có giá trị được tính cho âm của bạn, sau đó truyền mảng sang AudioTrack để phát.
Hoặc bạn sẽ lưu âm thanh dưới dạng tệp WAV và phát âm thanh đó bằng SoundPool (có thể thực sự tốt hơn từ quan điểm dấu chân bộ nhớ).Định dạng WAV là rất đơn giản để viết (đọc là phức tạp hơn): chỉ là một tiêu đề 44-byte với các thuộc tính khác nhau, và sau đó các dữ liệu âm thanh chính nó.
Tôi nghĩ rằng tôi đã trả lời một câu hỏi android tương tự trước đây, vì vậy tôi sẽ đi xem nếu tôi có một số mã cơ bản để làm điều này.
Không tôi, nhưng một số mã tốt cho việc đọc và viết WAV file trong java:
http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java
Ở bước 4, tôi nghĩ tần số bên trái và bên phải sẽ không phát cùng nhau. Tôi cần phải chơi tần số trái và phải với nhau. –
@ NeigylR.Noval Bạn đã thử chưa? Miễn là chúng tôi đã xây dựng SoundPool bằng cách sử dụng tối đa 2, cả hai sẽ chơi cùng nhau. –