1

我有一个来自 Google I/O 2011 的 ADK 工具包,我正在尝试让示例应用程序工作(可在此处获得:http: //developer.android.com/tools/adk/adk.html)。

我已按照说明对固件和设备进行了编程,但无法让演示工作。应用程序启动,并在插入时检测到 ADK 板,但随后进入一个循环,在该循环中设备连接然后断开连接非常迅速,导致 UI Activity 不断重启。

我已经调试了几天,并验证了设备在DemoKitActivity.java的 run() 方法中获得了一个 IOException,这导致线程终止,尽管我不确定这是由设备断开。

抛出的异常是:

06-27 23:21:51.284: E/DemoKit(13573): There was an IO Exception
06-27 23:21:51.284: E/DemoKit(13573):   at libcore.io.IoBridge.read(IoBridge.java:435)
06-27 23:21:51.284: E/DemoKit(13573):   at java.io.FileInputStream.read(FileInputStream.java:179)
06-27 23:21:51.284: E/DemoKit(13573):   at java.io.InputStream.read(InputStream.java:163)
06-27 23:21:51.284: E/DemoKit(13573):   at com.google.android.DemoKit.DemoKitActivity.run(DemoKitActivity.java:278)
06-27 23:21:51.284: E/DemoKit(13573):   at java.lang.Thread.run(Thread.java:841)
06-27 23:21:51.284: E/DemoKit(13573): Caused by: libcore.io.ErrnoException: read failed: EIO (I/O error)
06-27 23:21:51.284: E/DemoKit(13573):   at libcore.io.Posix.readBytes(Native Method)
06-27 23:21:51.284: E/DemoKit(13573):   at libcore.io.Posix.read(Posix.java:127)
06-27 23:21:51.284: E/DemoKit(13573):   at libcore.io.BlockGuardOs.read(BlockGuardOs.java:149)
06-27 23:21:51.284: E/DemoKit(13573):   at libcore.io.IoBridge.read(IoBridge.java:425)

一个可能的怪癖是我的设备设置为通过 PTP 进行通信(设置 > 存储 > 菜单 > USB 计算机连接 > 相机 (PTP)。

我还没有更多的信息。我希望有人可以确认 Google 提供的示例代码仍然适用于 ADK,或者可以提供一些关于在哪里查看以调试断开连接的见解。

4

1 回答 1

0

我可以确认示例 ADK 代码适用于运行 4.2.1 的 Nexus 4 和运行 4.0.4 的 Galaxy Nexus。

我已成功尝试使用 Gingerbread 兼容性 API 和 Android DemoKit 应用程序上的 API 12 类。

我最近没有使用过的 ADK 2011 板,因此当它与 ICS (4.0.4) 设备一起使用时,它不能与带有 JB 的 Nexus 4 一起使用。

以下 SO 主题涵盖了 JB 的问题: ADK 1.0 设备无法使用 Jelly Bean,为什么?

CapSense 库也已在最近从 Arduino 站点下载的文件中重命名。CapSense.h 变为 CapacitorSensor.h 等等。

否则,我可以将新代码安装到 Arduino ADK 板上,在 Android 设备上安装应用程序并运行 DemoKit 应用程序。

Nexus 4 在我的测试期间也处于 PTP 模式,所以我不认为那是你的问题。

我还假设您通过 adb 通过 wi-fi 获取日志,而不是通过 USB 连接它,因为该电缆应该进入 ADK 板。除了确保 ADK 代码正确并且可能使用不同的 USB 电缆或 PC 进行尝试之外,我没有任何建议。虽然我确实在一个测试会话的日志中看到了一些错误,但 ADK 和应用程序的重置将其清除。这里是我的工作会话中的 logcat 供参考,希望它可以提供帮助。

07-06 23:01:02.364 I/ActivityManager(  575): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.google.android.DemoKit/.DemoKitLaunch} from pid 899
07-06 23:01:02.404 I/ActivityManager(  575): Start proc com.google.android.DemoKit for activity com.google.android.DemoKit/.DemoKitLaunch: pid=8715 uid=10110 gids={50110, 1028}
07-06 23:01:02.495 I/DemoKitLaunch( 8715): starting phone ui
07-06 23:01:02.925 D/DemoKit ( 8715): accessory opened 
07-06 23:01:03.185 I/ActivityManager(  575): Displayed com.google.android.DemoKit/.DemoKitPhone: +692ms (total +795ms)
07-06 23:01:35.690 D/UsbDeviceManager(  575): entering USB accessory mode: UsbAccessory[mManufacturer=Google, Inc., mModel=DemoKit, mDescription=DemoKit Arduino Board, mVersion=1.0, mUri=http://www.android.com, mSerial=0000000012345678]
07-06 23:01:35.690 I/ActivityManager(  575): START u0 {flg=0x10000000 cmp=com.android.systemui/.usb.UsbConfirmActivity (has extras)} from pid 575
07-06 23:01:35.860 I/ActivityManager(  575): Displayed com.android.systemui/.usb.UsbConfirmActivity: +64ms
07-06 23:01:37.782 I/ActivityManager(  575): START u0 {act=android.hardware.usb.action.USB_ACCESSORY_ATTACHED flg=0x10000000 cmp=com.google.android.DemoKit/.UsbAccessoryActivity (has extras)} from pid 748
07-06 23:01:37.912 I/DemoKitLaunch( 8715): starting phone ui
07-06 23:01:37.912 I/ActivityManager(  575): START u0 {flg=0x14000000 cmp=com.google.android.DemoKit/.DemoKitPhone} from pid 8715
07-06 23:01:38.022 D/DemoKit ( 8715): accessory opened
于 2013-07-07T03:21:58.610 回答