2012-07-19 32 views
5

剛剛將可靠且真正的ADK附件連接到Nexus 7和Galaxy Nexus - 並且無法連接「無法讀取設備協議版本」消息。認爲董事會死了,與ICS的Nexus S連接 - 工作得很好。在Jelly Bean升級之前也在Galaxy Nexus上工作,因此可以排除硬件故障。ADK 1.0設備無法與Jelly Bean一起使用,爲什麼?

我一直在看ADK公告相當密切,但不記得閱讀或聽到這個特殊的變化,也不支持ADK 2.0的Android設備的向後兼容性東西。

Accessory Development Kit 2011指南中提到「協議版本1支持Android 2.3.4(API Level 10)及更高版本,協議版本2支持Android 4.1(API Level 16)及更高版本」,但並未說明版本1是而不是受4.1的支持,如果發現現有的硬件會被丟棄,那將是非常奇怪的。

我在這裏錯過了什麼?這是一個錯誤還是一個功能?去年發佈

+0

我遇到同樣的問題。在連接到Nexus 7之前,Jellybean被確定爲媒體設備之前,USB配件可以很好地工作。 – Snowwire 2012-07-21 22:46:32

+0

我剛剛嘗試使用運行4.1的兩個設備運行我的ADK2011(可以說是一種「經過驗證的真正的ADK附件」),它運行良好(Galaxy Nexus和Nexus 7)。你有什麼辦法可以提供更多的上下文嗎?源代碼/錯誤/日誌/任何證明問題的東西? – machinaut 2012-07-22 12:33:41

+0

@ajray:有問題的代碼位於https://github.com/home-climate-control/arduino。適用於您的代碼的來源是否公開可用? – 2012-07-22 19:45:01

回答

5

老ADK1庫不承認新AOA V2協議,豆形軟糖設備(Android 4.1及以上)說話。這已在更新的ADK1庫版本中修復。

去拿新ADK1庫:

更新您的ADK庫,並上傳您ADK1草圖。請注意,新庫已更新爲可與Arduino 1.0及更高版本一起使用,因此您可能還需要更新Arduino IDE。

+1

如果確實確實如此,應該將其作爲針對Android 4.1的錯誤提交,因爲它與文檔相矛盾,並且作爲移動目標,在實際產品中消除了界面的可用性。 – 2012-07-24 01:17:18

+0

@Chris:猜猜這是一個可以稱爲功能的錯誤。來自adk_release_0512.zip的Arduino.ccp顯然拒絕與協議1以外的任何其他語言進行通話。打印提供的協議編號的微小更改揭示了JellyBean設備提供了版本2. release_20120606雖然似乎理解> = 1 - 但是這會留下所有現有設備的灰塵符合ADK 1.0;祝你好運,修復已經發貨的設備上的固件並且不可及。有點不高興看到ADK團隊缺乏遠見。 – 2012-07-24 05:53:41

+0

我認爲Google很清楚他們並不過分關心維護ADK的USB接口。如果您今年在Google IO上觀看他們的演示文稿,他們會爲觀衆問題提供一個有趣的答案。從36m30s觀看,http://www.youtube.com/watch?v=ZUaKSs3utrs – Snowwire 2012-07-24 07:50:09

2

在答覆@克里斯斯特拉頓,這個問題是原來的庫沒有考慮到未來的兼容性寫入。

原始庫假定(通過protocol == 1檢查switchDevice())未來的協議版本不會向後兼容。它從20120606庫版本(在switchDevice()修訂protocol >= 1檢查的含義)出現這樣做的目的是,現在,未來的庫版本預計將向後兼容。

不幸的是,這意味着與庫的原始版本編譯的現有固件不符合果凍豆設備兼容。需要使用新的庫版本重新編譯固件並重新上傳到附件。

也要注意,當我寫這篇文章有這裏的「ADK包」鏈接側欄鏈接到舊庫版本,而不是更新的版本在正文鏈接的文檔中的錯誤。 (我添加了一個錯誤此:https://code.google.com/p/android/issues/detail?id=35463

其他信息:

  • 注意http://developer.android.com/tools/adk/aoa2.html#detecting說:「該協議的2.0版本是向上兼容,所以設計的原裝附件協議附件仍然工作與更新的Android設備。「但是這忽略了原始圖書館的問題。

  • 還要注意的是,在http://developer.android.com/tools/adk/adk.html#start-adkhttp://developer.android.com/tools/adk/aoa2.html#detecting兩個密碼使用protocol >= 1咒語。 (我無法驗證這一點,但考慮到原來的庫沒有使用這個版本的檢查我想ADK2011文檔已經更新爲使用新的檢查。)

1

我已成功地運行老ADK與我的軟糖裝置。下面是詳細信息:

  • 運行在Mac OS山獅
  • 隨着Arduino的巨型ADK
  • 三星Galaxy S3 4.1.1

步驟:

  1. 下載darduino -1.0.1-macosx
  2. 清空Documents/Arduino文件夾
  3. 在其中創建一個文件夾庫
  4. 從labs.arduino.cc/uploads/ADK/GettingStarted/ArduinoADK-beta-001.zip下載USB兼容文件。
  5. 解壓後,將ArduinoADK-beta-001/libraries/UsbHost文件夾複製到上面提到的庫文件夾中。
  6. 獲取AndroidAccessory文件夾並將其複製到庫中。我可以記得我從哪裏得到它。這是必要的,以便代碼可以編譯,因爲知道什麼是附件。此文件夾特別是包含AndroidAccessory.cpp和AndroidAccessory.h
  7. 開始Ardoinu和例如上傳代碼到你的板子(請將#包括和definces,代碼格式不顯示它之前):

    包括< Max3421e.h> 包括< Usb.h> 包括< AndroidAccessory.h> 定義ARRAY_SIZE 12; (「製造商」,「型號」,「描述」,「版本」,「URI」,「序列號」);

    char hello [12] = {'h','e','l','l','o','','w','o','r','l', 'D'};

    void setup(){ Serial.begin(115200); // acc.powerOn(); acc.begin(); }

    空隙環(){

    如果(acc.isConnected()){對於 (INT I = 0;我< 12;我++){ Serial.print(你好[I]); 延遲(250); }

    Serial.println(); 延遲(250); }}

    1. 當通過USB連接的S3,你應該看到在串行監視器輸出。

此致 FL

相關問題