Tôi có một câu hỏi về những hạn chế của những gì bạn có thể làm trong mã gốc trên nền tảng Android. Về cơ bản tôi đã phát triển một thư viện trong mã C bản địa sử dụng ổ cắm UDP cho SIP/RTP và sử dụng OpenAL để ghi/phát lại âm thanh - về cơ bản là toàn bộ ứng dụng. Ý tưởng là có càng nhiều càng tốt trong mã C gốc hơn là mã Java. Tôi muốn làm điều này bởi vì tôi cũng sẽ sử dụng nó trên các nền tảng khác.Hạn chế NDK của Android?
Câu hỏi của tôi sau đó chỉ đơn giản là - có thể chỉ sử dụng Java cho GUI và sau đó xử lý tất cả trong mã gốc? Điều gì sẽ xảy ra khi mã gốc của tôi cố gắng tạo ổ cắm, liên kết nó, ghi âm, phát, v.v. - vì nó nằm trong mã gốc, tôi có cần thiết lập quyền cho nó (chẳng hạn như ứng dụng truy cập micrô và điều gì đó) hay không nó sẽ chỉ bỏ qua công cụ này kể từ mã nguồn gốc của nó? Mã gốc có thể thực hiện được nhiều thứ trên Android như trên PC không?
Xin lỗi nếu nó không rõ ràng; chỉ cần nói và tôi sẽ cố gắng cải thiện nó
Cảm ơn
Bạn có thể giải thích về ý nghĩa của từ 'được hỗ trợ' không? Ví dụ, tôi không thể tìm thấy ổ cắm trong danh sách thư viện NDK. Tôi vẫn có thể sử dụng chúng? Bạn sử dụng các tệp tiêu đề và nội dung nào - không có sys/sockets? – KaiserJohaan
Bạn sẽ không thích điều này, nhưng ... bạn sẽ phải trải qua Java, tức là bạn sử dụng FindClass trên 'Socket', sau đó lấy phương thức cho hàm tạo, phương thức' read', phương thức để 'write' , bạn lưu trữ các socket như là một 'jobject' trong mã của bạn, và bạn sử dụng' CallVoidEnvMethod' hoặc một cái gì đó tương tự. Nghe có vẻ hoàn toàn khủng khiếp, nhưng bạn có thể viết một lớp mỏng hơn là dịch giữa C và Java và kết thúc với chỉ một số ít các chức năng dịch đó. – EboMike
Btw, như Kazuki đã chỉ ra, có thể có hỗ trợ đầy đủ cho API socket, nhưng cá nhân tôi đã luôn luôn sử dụng này indirection thông qua Java. – EboMike