Android ADK 2011: исключение ввода-вывода в потоке запуска
У меня есть набор ADK от Google I/O 2011, и я пытаюсь заставить пример приложения работать (доступно здесь: http://developer.android.com/tools/adk/adk.html).
Я запрограммировал прошивку и устройство в соответствии с инструкциями, но не могу заставить демо работать. Приложение запускается и обнаруживает плату ADK при подключении, но затем входит в цикл, в котором устройство подключается, затем очень быстро отключается, в результате чего активность пользовательского интерфейса продолжает перезапускаться.
Я отлаживал это в течение нескольких дней и убедился, что устройство получает IOException в методе run() файла DemoKitActivity.java, что приводит к завершению потока, хотя я не уверен, является ли это причиной или причиной отключение устройства.
Исключение:
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, или может дать некоторое представление о том, где искать дальше для устранения отсоединений.
1 ответ
Я могу подтвердить, что пример кода ADK работает как с Nexus 4 с 4.2.1, так и с Galaxy Nexus с 4.0.4.
Я попытался использовать API совместимости Gingerbread и классы API 12 в приложении Android DemoKit.
Плата ADK 2011, которую я недавно не использовал, поэтому, хотя она работала с устройством ICS (4.0.4), она не работала с Nexus 4 с JB.
Следующая тема 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-кабеля или ПК, мне нечего предложить. Хотя в одном тестовом сеансе я видел некоторые ошибки в журнале, сброс 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