Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ADK1.0设备无法与Jelly Bean一起工作,为什么?_Android_Arduino_Android 4.0 Ice Cream Sandwich_Adk_Android 4.2 Jelly Bean - Fatal编程技术网

Android ADK1.0设备无法与Jelly Bean一起工作,为什么?

Android ADK1.0设备无法与Jelly Bean一起工作,为什么?,android,arduino,android-4.0-ice-cream-sandwich,adk,android-4.2-jelly-bean,Android,Arduino,Android 4.0 Ice Cream Sandwich,Adk,Android 4.2 Jelly Bean,刚刚将久经考验的ADK附件连接到Nexus 7和Galaxy Nexus,但未能连接到“无法读取设备协议版本”消息。认为董事会死了,连接到Nexus S和ICS——工作正常。在Jelly Bean升级之前也在Galaxy Nexus上工作过,所以可以排除硬件故障 我一直在密切关注ADK的公告,但我不记得读过或听到过关于这一特殊变化的任何消息,也不记得支持ADK 2.0的Android设备的向后兼容性 指南说“协议版本1由安卓2.3.4(API级别10)和更高版本支持。协议版本2由安卓4.1(AP

刚刚将久经考验的ADK附件连接到Nexus 7和Galaxy Nexus,但未能连接到“无法读取设备协议版本”消息。认为董事会死了,连接到Nexus S和ICS——工作正常。在Jelly Bean升级之前也在Galaxy Nexus上工作过,所以可以排除硬件故障

我一直在密切关注ADK的公告,但我不记得读过或听到过关于这一特殊变化的任何消息,也不记得支持ADK 2.0的Android设备的向后兼容性

指南说“协议版本1由安卓2.3.4(API级别10)和更高版本支持。协议版本2由安卓4.1(API级别16)和更高版本支持”。它并没有说版本1不受4.1支持,并且发现现有硬件会像这样被抛弃是非常奇怪的


我错过了什么?这是一个bug还是一个功能?

去年发布的旧ADK1库不承认JellyBean设备(Android 4.1及更高版本)所使用的新AOA v2协议。这已在更新的ADK1库版本中修复

获取新的ADK1库:

  • (请在zip下载中查找“release_20120606”或更高版本)

更新ADK库并上载ADK1草图。请注意,新库已经更新,可以与Arduino 1.0及更高版本一起使用,因此您可能还需要更新您的Arduino IDE。

在回复@Chris Stratton时,问题是原始库的编写没有考虑到未来的兼容性

原始库假定(通过
协议==1
签入
开关设备()
),未来的协议版本将不向后兼容。从20120606库版本(通过修订的
协议>=1
签入
开关设备()
)可以看出,现在的目的是希望未来的库版本能够向后兼容

不幸的是,这意味着使用库的原始版本编译的现有固件与Jelly Bean设备不兼容。固件需要使用新的库版本重新编译并重新上载到附件

还要注意,在我写这篇文章时,文档中有一个错误,侧栏中的“ADK软件包”链接链接到较旧的库版本,而不是正文中链接的较新版本。(我为此添加了一个bug:)

其他信息:

  • 请注意
    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
    两者都使用
    协议>=1
    咒语。(我无法验证这一点,但鉴于原始库未使用此版本的检查,我认为ADK2011文档已更新为使用新检查。)


我已经设法用我的果冻豆设备运行了旧的ADK。详情如下:

  • 在Mac OS Mountain Lion上运行
  • 带Arduino Mega ADK
  • 三星Galaxy S3和4.1.1
步骤:

  • 下载darduino-1.0.1-macosx
  • 清空Documents/Arduino文件夹
  • 在其中创建一个文件夹库
  • 从labs.arduino.cc/uploads/ADK/GettingStarted/ArduinoADK-beta-001.zip下载USB兼容性文件
  • 解压后,将ArduinoADK-beta-001/libraries/UsbHost文件夹复制到上述库文件夹中
  • 获取AndroidAccessory文件夹并将其复制到库中。苏瑞,我记得是从哪里弄来的。这是必要的,以便代码可以编译,因为in知道什么是附件。此文件夹特别包含AndroidAccessory.cpp和AndroidAccessory.h
  • 启动Ardoinu,例如将代码上载到您的电路板(请在包含和定义之前插入#,代码格式不显示):

    包括 包括 包括 定义数组_大小12

    AndroidAccessory acc(“制造商”、“型号”、“说明”、“版本”、“URI”、“序列号”)

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

    无效设置(){ 序列号开始(115200); //acc.powerOn(); 根据begin(); }

    void循环(){

    如果(根据断开连接()){ 对于(int i=0;i<12;i++){ Serial.print(hello[i]); 延迟(250); }

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

  • 当通过USB连接S3时,您应该可以在串行监视器中看到输出
  • 致意
    FL

    简单地将固件从(协议==1)检查更改为(协议>=1)对我来说很有效(至少对于枚举-发送和接收仍然需要测试)。我的硬件是LPC1768 mbed。()

    我也有同样的问题。在Jellybean连接到Nexus 7时被确定为媒体设备之前,一个USB附件在所有方面都非常有效。我刚刚用两台运行4.1的设备(Galaxy Nexus和Nexus 7)试用了我的ADK2011(可以说是一个“久经考验的真正的ADK附件”)。有没有什么方法可以提供比它不起作用更多的上下文?源代码/错误/日志/有什么可以说明问题的吗?@ajray:有问题的代码位于。适用于您的代码的源代码是否公开?@vt.developer.android.com/tools/adk/adk.html我正在使用带有默认草图(demokit.pde)的设备(ADK2011)。我可以使用你的应用程序连接到设备,然后随机按下按钮点亮其中一个LED。我不能让你的arduino草图来建造;如果可以,我会在我的设备上测试。如果可以的话