刚刚将经过验证的ADK配件连接到Nexus 7和Galaxy Nexus - 它无法连接“无法读取设备协议版本”消息。认为董事会死了,与ICS连接到Nexus S - 工作得很好。在Jelly Bean升级之前就开始使用Galaxy Nexus,因此可以排除硬件故障。
我一直在密切关注ADK公告,但不记得阅读或听到有关此特定更改的任何内容,也不记得支持ADK 2.0的Android设备的向后兼容性。
Accessory Development Kit 2011指南说“Android 2.3.4(API级别10)及更高版本支持协议版本1. Android 4.1(API级别16)及更高级别支持协议版本2”,它不支持说版本1是4.1支持不,并且发现现有硬件将被抛弃将是非常奇怪的。
我在这里缺少什么?这是一个错误还是一个功能?
答案 0 :(得分:5)
去年发布的旧ADK1库不承认JellyBean设备(Android 4.1及更高版本)所说的新AOA v2协议。这已在更新的ADK1库版本中修复。
去获取新的ADK1库:
更新ADK库并上传ADK1草图。请注意,新库已更新,可与Arduino 1.0及更高版本配合使用,因此您可能还需要更新Arduino IDE。
答案 1 :(得分:2)
在回复@Chris Stratton时,问题是原始图书馆没有考虑到未来的兼容性。
原始库假设(通过protocol == 1
检查switchDevice()
)未来的协议版本将不向后兼容。从20120606库版本(通过protocol >= 1
中修订的switchDevice()
检查的含义)看来,现在的意图是未来的库版本应该向后兼容。
不幸的是,这意味着使用原始版本的库编译的现有固件与Jelly Bean设备不兼容。需要使用新库版本重新编译固件并重新上载到附件。
另请注意,在我写这篇文章时,文档中有一个错误,其中侧栏中的“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-adk
和 http://developer.android.com/tools/adk/aoa2.html#detecting
中的代码均使用protocol >= 1
咒语。 (我无法验证这一点,但鉴于原始库未使用此版本的检查,我认为ADK2011文档已更新为使用新检查。)
答案 2 :(得分:1)
我已经设法用我的Jelly Beans设备运行旧的ADK。以下是详细信息:
步骤:
启动Ardoinu,例如将代码上传到您的主板(请在包含和defince之前插入#,代码格式不显示):
包括< Max3421e.h> 包括< Usb.h> 包括< AndroidAccessory.h> 定义ARRAY_SIZE 12;
AndroidAccessory acc(“制造商”,“型号”,“描述”,“版本”,“URI”,“序列”);
char hello [12] = {'h','e','l','l','o','','w','o','r','l',' d'};
void setup(){ Serial.begin(115200); // acc.powerOn(); acc.begin(); }
void loop(){
if(acc.isConnected()){ for(int i = 0; i< 12; i ++){ Serial.print(你好[I]); 延迟(250); }
Serial.println(); 延迟(250); } }
祝你好运 FL
答案 3 :(得分:0)
简单地将固件从(协议== 1)检查更改为(协议> = 1)对我有用(至少对于枚举 - 仍然需要测试发送和接收)。我的硬件是LPC1768 mbed。 (http://mbed.org/cookbook/mbed-with-Android-ADK)