2012-10-05 34 views
5

Tôi đang phát triển một ứng dụng Android mà tôi cần kết nối với thiết bị USB.Viết trình điều khiển USB cho Android

Tôi đã phát triển một ứng dụng tương tự trên các cửa sổ và tôi có trình điều khiển được viết bằng c.

Tôi muốn phát triển trình điều khiển USB cho ứng dụng Android của mình. Tôi muốn biết điều gì là cần thiết để phát triển trình điều khiển USB cho Android.

hoặc

Tôi có thể sử dụng lại mã được viết bằng c bằng cách sử dụng ndk hay không.

Cảm ơn,

Trả lời

6

Thứ nhất, Android là thực sự chỉ Linux, vì vậy nếu bạn đang nói về "viết một trình điều khiển USB cho các ứng dụng Android của tôi" bạn chứ không nên nói "viết một trình điều khiển USB linux cho thiết bị cụ thể của bạn".

Tiếp theo, bạn sẽ phải truy cập thiết bị của mình theo một cách nào đó. Những gì bạn sẽ nhận được khi bạn đã viết trình điều khiển USB cho Linux có lẽ là một số nút tập tin trong/dev /. Tôi đoán bạn muốn tạo ra một trình điều khiển cho một thiết bị USB không chuẩn (như một con chuột/phím điều khiển/lưu trữ khối lượng) mà Android không cung cấp một api JAVA tốt đẹp? Trong trường hợp đó, bạn sẽ phải viết một thư viện riêng (có thể dựa trên mã c bạn đã có) và biên dịch nó với NDK. Các tập tin .so bạn sẽ nhận được ra khỏi nó có thể được đóng gói trong ứng dụng Android của bạn, mà sau đó có thể sử dụng nó để nói chuyện với thiết bị USB của bạn.

Vì vậy, để tóm tắt: điều khiển thiết bị

usb -> tạo ra một mô-đun hạt nhân hoặc nhúng một tài xế vào hạt nhân Linux của bạn: đây là usb linux thứ lập trình điều khiển, mà bạn sẽ có thể tìm thấy đủ hướng dẫn trên web. Bạn sẽ có thể tái sử dụng các phần của mã c của bạn nếu bạn thực sự tạo ra một trình điều khiển usb cửa sổ.

thư viện trình bao bọc gốc để truy cập thiết bị của bạn (.so tệp hoặc .dll nếu bạn quen với thuật ngữ cửa sổ) -> tạo dự án NDK mở nút thiết bị phù hợp và đọc/ghi chính xác thiết bị của bạn.

ứng dụng android -> bao gồm tệp .so và truy cập các phương thức gốc (c) của nó thông qua jni. Bạn có thể sử dụng các công cụ như javah hoặc swig để tạo mã jni từ các tệp tiêu đề của thư viện của bạn.

3

Câu trả lời trước giả định rằng bạn có quyền truy cập root vào thiết bị của mình và không phù hợp để triển khai hàng loạt. Kể từ api phiên bản 12 android đã cung cấp một giao diện usb cho phép bạn tương tác với một số thiết bị bằng cách sử dụng các kênh điều khiển mức thấp và bộ đệm yêu cầu usb.

Có hai loại thiết bị hỗ trợ các thiết bị máy chủ usb thiết bị usb (android) phụ kiện

chủ chế độ thường chỉ hỗ trợ tốt trên máy tính bảng, điện thoại di động có thể và không hỗ trợ nó nhưng ablity của họ để duy trì chế độ hỗ trợ là ít hơn và rất phụ thuộc vào nhu cầu điện áp của deviec trong câu hỏi

chế độ phụ kiện là số lẻ vì nó mở rộng các tiêu chuẩn usb để thêm một trao đổi thêm để xác định một phụ kiện như một phụ kiện "android"

nếu các phương thức trên một có thể sử dụng được cho bạn sau đó họ là lựa chọn tốt hơn để sử dụng trình điều khiển c cấp thấp trừ khi bạn hoàn toàn kiểm soát tất cả các thiết bị mà nó sẽ được cài đặt trên đó.

Đây là cả hai java apis và có thể được tìm thấy tài liệu trên trang web tài liệu google android, dưới usb.

+0

Ứng dụng NDK có yêu cầu quyền truy cập root không? –

+1

Không, bạn không. Mã nguồn gốc có thể được xây dựng và triển khai không có gốc nhưng truy cập vào các tài nguyên do hệ thống sở hữu như các thiết bị sẽ yêu cầu root. Một ví dụ không phải USB sẽ sử dụng một sshd linux chuẩn như dropbear, điều này là hợp lý bạn có thể tìm thấy chúng trên cửa hàng play tuy nhiên để chạy trên các cổng standrard, chúng sẽ cần phải được chạy dưới dạng root. – Neil

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