2013-05-28 35 views
21

Tôi đang cố gắng nhập một số lớp học javax.* trong ứng dụng Android của mình, nhưng tôi vẫn gặp phải lỗi trình biên dịch bên trong Android Studio. Tôi đang sử dụng Ubuntu Linux 13.04.javax. * Trong ứng dụng Android của tôi?

Dưới đây là hàng nhập khẩu của tôi:

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
// Here are the imports I am having trouble with: 
import javax.sound.sampled.AudioFormat; 
import javax.sound.sampled.AudioSystem; 
import javax.sound.sampled.SourceDataLine; 

Và khi tôi cố gắng để chạy các ứng dụng hoặc thậm chí biên dịch các tập tin hoạt động java, tôi nhận được các lỗi này:

Gradle: error: package javax.sound.sampled does not exist 
Gradle: error: package javax.sound.sampled does not exist 
Gradle: error: package javax.sound.sampled does not exist 

Tôi chỉ không thể hình ra vấn đề này. Bất cứ sự giúp đỡ nào cũng thật sự tuyệt vời!

+0

Bạn đã kiểm tra đường dẫn lớp học chưa? đảm bảo bạn đã thêm Thư viện hệ thống của mình. – Smit

+0

Làm cách nào để thêm vào Thư viện hệ thống? Cảm ơn sự giúp đỡ của bạn, bằng cách này. – Tux

+0

Tôi không chắc chắn về Phát triển Android. Nhưng đây là con đường từ quan điểm của Eclipse .... Nhấp chuột phải vào Project Explorer -> Build Path -> Configure Build Path -> Thư viện tab -> Thêm nút Thư viện -> Chọn Thư viện Hệ thống JRE -> Tiếp theo - > Hoàn thành – Smit

Trả lời

32

Hãy lưu ý rằng khi bạn chạy một ứng dụng Android: bạn không chạy/biên dịch nó trên một JVM chuẩn/JDK, bạn thậm chí không thực hiện java bytecode. Google chọn ngôn ngữ java (hoặc ít nhất là một tập hợp con của nó) làm ngôn ngữ để phát triển Android, nhưng nó chỉ là ngôn ngữ.

Vào cuối mã java đã biên dịch không phải là bytecode java, nhưng đây là bytecode dalvik. (không có tệp .class, nhưng tệp .dex)

Vì vậy, khi phát triển Android: bạn không thể sử dụng API JavaSE đầy đủ: bạn bị giới hạn đối với API được VM dalvik hỗ trợ (có sẵn here).

(Lưu ý rằng khi bạn duyệt qua API này hãy cẩn thận của phiên bản ở góc trên cùng bên phải của trang. gia tăng ở mức API X Nó thông báo cho bạn về phiên bản Android-API hỗ trợ mà lớp hay phương thức)

6

Các lớp học đó không có trong thư viện Android. Bạn phải sử dụng các API âm thanh cụ thể của Android. Xem: http://developer.android.com/reference/android/media/package-summary.html

+0

Mặc dù vậy, tôi đã sử dụng các lớp java khác trong các ứng dụng của mình. Nó chỉ là 'javax. *'? – Tux

+2

Gói javax được bao gồm trong khung công tác Android. – Ahmad

+2

Dường như nó đặc biệt là gói 'javax.sound.sampled' không được bao gồm. – SimonC

-1

Tôi đã làm việc trên một vấn đề javax.sound trong Android trong hai ngày. Tôi đã thực hiện một cách dễ dàng vì sử dụng javax.sound có nghĩa là tạo một tệp jar của libs mà tôi cần và nếu có mã C trong JNI bên dưới chúng, tôi sẽ phải chuyển mã đó thành nhánh. Hoặc tôi có thể lấy một cánh tay Linux dist và mang những gì tôi cần để chuyển đổi mp3 sang wav từ đó sang JNI. Bạn có thể sử dụng các tệp jar thông thường trong Android. Tôi sử dụng một thư viện FTP có sẵn từ bên thứ ba cho FTP Juju. MP3 của tôi không phải là rất lớn. Vì vậy, tôi chỉ chuyển đổi chúng thành wavs trong res/raw. Nhưng các giải pháp trên có sẵn cho bạn.

0

Nếu bạn tải xuống OpenJDK từ Chương trình nhà phát triển Red Hat (thành viên miễn phí), bạn có thể tìm thấy tệp nguồn .java cho toàn bộ OpenJDK bao gồm javax.sound.sampled. Tôi đã có thể gỡ lỗi ứng dụng Android của mình bằng cách sử dụng OpenJDK8.

Xin lưu ý, không phải tất cả các tính năng OpenJDK8 đều có sẵn trong Android, do đó, chỉ bao gồm các lớp bạn cần. Để biết thêm thông tin, hãy xem https://developer.android.com/studio/write/java8-support.html

Các vấn đề liên quan