2010-04-06 11 views
30

Có ai đã xây dựng OpenAL cho Android hay tìm thấy thư viện được chia sẻ cho nó trên hệ thống không? Điều này có vẻ như một nhu cầu rõ ràng đối với một trò chơi thuộc loại nào, nhưng không có nguồn lực nào ngoài đó cho nó. Có vẻ như thư viện âm thanh java Android không thể thay đổi độ cao so với những gì tôi có thể nói, vì vậy có vẻ như cần có OpenAL. Tôi biết OpenAL Soft có thể được xây dựng trên đầu trang của ALSA, nhưng tôi không chắc chắn nếu anyones làm điều đó, và tôi chắc chắn nó sẽ đưa tôi một tháng.Android OpenAL?

Nếu có hướng dẫn tốt ở đâu đó về thao tác âm thanh trên Android mà không có OpenAL, điều đó cũng tốt. Nó chỉ là OpenAL là một tiêu chuẩn cho các nhà sản xuất game và nó sẽ là tốt đẹp để port hàng ngàn dòng của tôi qua hệ thống này, mà tôi loại suy nghĩ là điểm của NDK trước khi tôi dugg vào nó và thấy rằng hầu như không có truy cập thư viện được chia sẻ trên hệ thống.

Cảm ơn .. Tôi hy vọng tôi thực sự có thể chuyển mà không cần trở thành chuyên gia java. Thực sự không thích NDK cho đến nay!

Trả lời

-3

Bạn có thể sử dụng NDK để xây dựng OpenAL và gói nó bằng APK của bạn. Bằng cách đó bạn có thể truy cập nó từ mã nguồn gốc của bạn.

+2

Bạn không thể truy cập API âm thanh cấp thấp (ALSA, v.v.) theo bất kỳ cách nào được hỗ trợ từ NDK, vì vậy không, bạn không thể thực hiện việc này. – SomeCallMeTim

+0

để api duy nhất có thể được sử dụng là một java: android.media? – RzR

+0

Không, bạn cũng có thể sử dụng soundpool và audiotrack (mức thấp), trong java, cũng như bây giờ là es mở trong mã gốc. –

5

OpenSL được lên kế hoạch cho một bản dựng Android trong tương lai; OpenAL không khả dụng và phần cứng cấp thấp không có giới hạn cho bất kỳ thứ gì bạn có thể thực hiện trong NDK, vì vậy bạn không thể tự mình xây dựng nó một cách an toàn.

Không có hỗ trợ cho âm thanh có độ trễ thấp thậm chí được lên kế hoạch; có một lỗi về việc đó ở đây:

http://code.google.com/p/android/issues/detail?id=3434

sao nó nếu nó phù hợp với bạn; có thể Google sẽ lắng nghe nếu nó có đủ ngôi sao.

CHỈNH SỬA: Có âm thanh độ trễ thấp trong Android 4.0 trở lên và OpenSL hiện khả dụng. Xem trang này và các trang được liên kết: http://source.android.com/devices/audio/latency.html Đồng thời xem hướng dẫn NDK về OpenSL.

8

Ngay trước khi Google thông báo rằng âm thanh 3D sẽ được đưa vào Android 2.3, tôi đã quản lý để biên dịch OpenAL cho Android và đóng gói nó làm đối tượng được chia sẻ.

Xem http://pielot.org/2010/12/14/openal-on-android/

Có thể vẫn hữu ích nếu bạn muốn nhắm mục tiêu các thiết bị < 2.3.

Chúc mừng.

+1

Để mở rộng câu trả lời của Martin: Ông cũng đưa ra một số ví dụ cấp cao về sử dụng [ở đây] (http://pielot.org/2011/11/10/openal4android-2/). –

31

Một vài tùy chọn có sẵn ngay bây giờ cho NDK âm thanh:

  1. Nó không phải OpenAL, nhưng OpenSL ES 1.0.1 là một phần chính thức của NDK như cấp API 9 (2.3). Thêm thông tin here.

  2. OpenAL Soft có phần phụ trợ OpenSL ES trong git master (không được phát hành phiên bản 1.13). Tuy nhiên, tại thời điểm này đã bị hỏng trên Android, vì nó được viết cho OpenSL ES 1.1, chứ không phải 1.0.1. Xem this commit để sửa chữa.

  3. Như đã đề cập trong câu trả lời trước, phụ trợ JNI cho OpenAL Soft được liên kết và mô tả here làm tùy chọn duy nhất cho OpenAL trên nền tảng Android 2.3. Tuy nhiên, đây là một nhánh cũ của OpenAL Soft - tôi đã cập nhật chương trình phụ trợ lên phiên bản mới nhất on a github repo here cùng với bản sửa lỗi OpenSL ES 1.0.1. Cũng bao gồm là untested optional patch tuyên bố cung cấp hiệu suất tốt hơn và ít thời gian chờ hơn.

+1

+1 từ tôi sau khi chỉnh sửa. Đăng câu trả lời (câu trả lời hay) về các câu hỏi cũ được khuyến khích tích cực ở đây, đó là lý do tại sao có [huy hiệu được trao cho nó] (http://stackoverflow.com/badges/17/necromancer). – Flexo