簡體   English   中英

為Android編寫USB驅動程序

[英]Writing USB driver for Android

我正在開發一個Android應用程序,我需要連接到USB設備。

我在Windows上開發了類似的應用程序,我用c編寫了驅動程序。

我想為我的Android應用程序開發一個USB驅動程序。 我想知道為Android開發USB驅動程序需要什么。

要么

我可以使用ndk重用c中編寫的代碼嗎?

謝謝,

首先,Android實際上只是Linux,所以如果你在談論“為我的Android應用程序編寫USB驅動程序”,你應該說“為你的特定設備編寫一個linux USB驅動程序”。

接下來,您必須以某種方式訪問​​您的設備。 為linux編寫USB驅動程序后,您將得到的可能是/ dev /中的某個文件節點。 我猜你想要為非標准的USB設備(如鼠標/操縱桿/大容量存儲設備)創建一個驅動程序,Android沒有提供一個漂亮的JAVA API? 在這種情況下,您將不得不編寫一個本機庫(可能基於您已有的C代碼)並使用NDK編譯它。 您將從中獲取的.so文件可以打包到您的Android應用程序中,然后可以使用它與您的USB設備進行通信。

總結一下:

usb設備驅動程序 - >創建一個內核模塊或將驅動程序嵌入你的linux內核:這是linux usb驅動程序編程的東西,你應該能夠在網上找到足夠的指南。 如果你真的創建了一個windows usb驅動程序,你應該可以重用c代碼的一部分。

用於訪問設備的本機包裝器庫(.so文件,或者.dll,如果您習慣使用Windows術語) - >創建一個NDK項目,打開正確的設備節點並正確讀取/寫入您的設備。

android app - >包含.so文件並通過jni訪問其原生(c)方法。 您可以使用javah或swig等工具從庫的頭文件生成jni代碼。

上一個答案假定您具有對設備的root訪問權限,並且不適合大規模部署。 由於api版本12 android提供了一個usb接口,允許您使用低級別控制通道和USB請求緩沖區與某些設備進行交互。

有兩種類型的設備支持usb主機設備usb(android)附件設備

主機模式通常只支持平板電腦,手機可以並且確實支持它但是它們維持主機模式的能力較低且非常依賴於deviec在問題中的電壓需求

附件模式是奇怪的,因為它擴展了usb標准以添加額外的交換,將附件標識為“android”附件

如果上述模式對您有用,那么它們是使用低級別c驅動程序的最佳選擇,除非您對將要安裝的所有設備進行完全控制。

這些都是java apis,可以在usb下的google android文檔站點上找到。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM