2012-11-05 67 views
1

我想建立一個帶有傳感器的設備(帶有Arduino或帶有微控制器的自制電路),並且我想通過USB電纜將數據發送到Android設備。通過USB連接設備需要什麼庫?有沒有我可以讀的文件?問題是,只要我搜索這個,我只會得到有關ADK及其電路板的結果,而不是其他設備。 有事情我應該事先知道嗎?我對任何一個領域都不陌生,但這是我與這兩個相連的第一個項目。Android外部附件開發庫?

謝謝。

+0

如果我的答案不夠充分,請告訴我該如何改進0 - 目前還不完全清楚您確切的問題。 –

+0

謝謝,非常感謝,它有點像我在找的東西,但我還在等第二個意見,如果有的話。如果沒有,您的答案已經成爲我工作的一個非常好的起點! – FloIancu

+0

我剛剛發現了這本書,您可能也會覺得它很有用:http://www.apress.com/9781430241973 –

回答

2

首先要檢查的是您的Android設備是否配備了USB host接口。在這種情況下,您可以將常規USB設備連接到Android,並使用this API與設備進行通信。

但是,典型的Android設備(幾乎每部手機)都只配備USB設備接口,用於連接到PC或其他USB主機。在這種情況下,您必須使用Android的USB Accessory支持。 Android Open Accessory protocol背後的最重要思想是它交換(邏輯上)USB設備和USB主機角色。這是USB主機尋找具有特定供應商/產品ID的設備,選擇特定的USB協議接口,然後簡單地使用發現進行通信的輸入/輸出批量終端 - 非常聰明,不是嗎?

要構建Android Open Accessory兼容設備,您需要一個帶有USB主機接口的CPU。如果你想使用Arduino,this shield可能是一個很好的起點,因爲firmware已經實現了Android Open Accessory Protocol。還有一些example applications

1

你有兩個解決方案

1:您的Arduino板充當USB主機和電源的Android設備。

使用此解決方案,您必須在Arduino主板上實現USB Host堆棧,並且必須實現Android Open Accessory Protocol。您的Arduino板必須爲Android設備供電。然後,您的應用必須使用USB Accessory API與您的董事會溝通。

愛維穩特:

  • 幾乎所有的Android設備(無需Android設備上的USB主機端口)

Disavantage工作:

  • 裝置盤較爲複雜(必須爲兩個設備提供電源)
  • 固件更復雜(我必須mplement USB Accessory模式)

    2.您的Arduino板充當USB設備,並且您的主板上的Android設備爲 供電。

有了這個解決方案,您不必實現特定的USB協議。你的主板將作爲一個標準的USB設備。既然您充當設備,您可以直接通過USB電纜爲您的電路板供電(Android設備將爲您自己和您的電源供電)。要與您的主板溝通,您將使用Android的USB host API

愛維穩特:

  • 裝置盤是非常簡單的
  • 固件是簡單並易於調試(你甚至可以與你進行測試PC)

Disavantage:

  • 僅適用於具有USB主機端口的Android設備
  • 在大多數設備,您將需要一個特定的電纜或適配器(例如:OTG USB主機連接線)

我有解決方案2的經驗,它工作得很好。 Android源代碼的所有源代碼都可以從下面的鏈接中獲得。我已經驗證了它與該公司的傳感器設備的工作原理,我在下面的Android設備的工作:

  • 三星Galaxy S3
  • 宏碁ICONIA TAB A200
  • 華碩變壓墊TF300T

但它應該適用於大多數平板電腦和最近的手機you can see this post如果你想看看我們的經驗。