2012-07-19 70 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

相关问题