UsbAccessory
在Android中关闭连接的正确方法是什么?似乎甚至在谷歌股票的例子中,如果我连接和配件,退出应用程序然后回到它,连接不会重新建立.
仔细观察,似乎打完电话后close()
上FileDescriptor
,也不会再次打开,并且"无法打开/ dev/usb_accessory"日志发出.不调用close()
是一个糟糕的选择,因为线程阻塞read()
将不会被释放.在物理断开/重新连接设备后,一切正常.
看起来非常令人惊讶的是,退出应用程序然后再次打开它的简单用例在参考应用程序中不起作用,如果不可行则更令人惊讶.
我正在使用Nexus S运行的Android 2.3.6版本.
我正在尝试将我的PC作为Android 2.3.4设备的USB主机,以便能够开发API而无需实际的"附件".为此,我需要将PC建立为USB主机和"设备"(在我的例子中是运行2.3.4的Nexus One).
我从http://android.serverbox.ch/开始使用libusb代码作为PC端的基础,以及Android端的DemoKit代码和Android文档.
这两个似乎很好地协商连接,并且接口被"声称"但在实际的批量传输尝试中死亡.在OSX上,错误是-5(LIBUSB_ERROR_NOT_FOUND),在Ubuntu Linux上(作为root)错误是-1(LIBUSB_ERROR_IO).(最近发布的每个版本都有最新的libusb 1.0.8).
这是代码.关于问题的其他评论欢迎,虽然这主要是一个概念验证,所以我真的只是在寻找批量转移不起作用的原因:
#include <stdio.h>
#include <libusb.h>
#include <string.h>
#define ENDPOINT_BULK_IN 0x83
#define ENDPOINT_BULK_OUT 0x03 // Have tried 0x00, 0x01 and 0x02
#define VID 0x18D1
#define PID 0x4E11
#define ACCESSORY_PID 0x2D00
#define ACCESSORY_ADB_PID 0x2D01 // Can't get this to work, if ADB is active, can't get handle on device
/*
ON OSX
gcc adktest.c -I/usr/local/include -o adktest -lusb-1.0.0 -I/usr/local/include -I/usr/local/include/libusb-1.0
ON UBUNTU
gcc adktest.c -I/usr/include -o adktest -lusb-1.0 -I/usr/include -I/usr/include/libusb-1.0
Testing on Nexus …
Run Code Online (Sandbox Code Playgroud) 有没有人知道用手机控制Arduino Mega ADK的好介绍?我想做的就是使用一个非常基本的拨动开关应用控制引脚13上的LED.
编辑26/10/11:
http://labs.arduino.cc/ADK/Index
http://jeffreysambells.com/posts/2011/05/17/understanding-the-demokit-pde-arduino-sketch/
https://github.com/deadfalkon/HelloADK
现在我遇到了让我的Galaxy S2以配件模式连接的问题......
编辑27/10/11
http://sgccare.blogspot.com/2011/10/first-arduino-and-android-setup.html
我正在尝试使用Eclipse设置ADK(附件开发工具包),但在更新到API 12后,要运行demokit Hello World,我得到29个错误,前几个看起来像:
com.android.future cannot be resolved, etc UsbAccessory cannot be resolved to a type
涉及的软件:
* Latest Android SDK (as of today - 8/29/2012) with all of the latest APIs, Tools, Extras, etc downloaded.
* Processing 2.0a8 (latest build)
* Arduino ADK libraries for Processing ("ArduinoADK-beta-001" folder)
* My system: 64-bit Windows 7
Run Code Online (Sandbox Code Playgroud)
我跟着指示在 网页设置处理和Arduino的IDE和一切.我有一个Arduino Mega ADK板.我将其中一个ADK示例上传到电路板上没有任何问题.下一步是通过Processing将匹配示例上传到Android.我有一部Nexus One手机(Android版本2.3.6).
Android SDK Tools Revision 20.0.3
Installed at D:\Programs\Android SDK
Project Type: Application
Project Target: Android 2.3.3
API level: 10
Library dependencies:
No Libraries
------------------
API<=15: Adding annotations.jar to the classpath.
Merging AndroidManifest files into one. …
Run Code Online (Sandbox Code Playgroud) 是否有Android设备(手机,平板电脑)支持ADK /配件模式的列表?据我所知,我知道Nexus One,Nexus S和Xoom都支持它.是否有其他设备(包括自定义ROM)也支持它?我有一个ADK,无法让它与我的手机一起使用,我基本上都在寻找可以与ADK一起使用的最便宜的手机.
**更新**我发现这个与ADK一起使用的平板电脑列表
我对Arduino和Java有很好的理解,我决定尝试用我的三星Galaxy 10.1选项卡来控制我的Arduino ATMega.我已经安装了API 12和SDK管理器,Eclipse的ADT插件,现在我按照安装Arduino软件和必要的库(在Android开放附件开发套件中)的说明来安装ADK板的固件.当我点击编译时,它给了我两个错误:
demokit:146:错误:'acc'未在此范围内声明
demokit:249:错误:'touch_robot'未在此范围内声明
并说
'AndroidAccessory'没有命名类型.
代码如下所示:
#include <Wire.h>
#include <Servo.h>
#include <Max3421e.h>
#include <Usb.h>
#include <AndroidAccessory.h>
#include <CapSense.h>
#define LED3_RED 2
#define LED3_GREEN 4
#define LED3_BLUE 3
#define LED2_RED 5
#define LED2_GREEN 7
#define LED2_BLUE 6
#define LED1_RED 8
#define LED1_GREEN 10
#define LED1_BLUE 9
#define SERVO1 11
#define SERVO2 12
#define SERVO3 13
#define TOUCH_RECV 14
#define TOUCH_SEND 15
#define RELAY1 A0
#define RELAY2 A1
#define LIGHT_SENSOR A2
#define TEMP_SENSOR A3
#define …
Run Code Online (Sandbox Code Playgroud) 使用Android开放附件标准,我有一个Android驱动的设备来回与一个通过USB连接的arduino超级ADK微控制器.我想知道数据链路层级的最佳通信协议是什么.
从android和arduino方面来看,它是基于简单文件的IO,例如write(buffer [],buffer_length),read(buffer [],buffer_length).
做一些研究,我发现这个链接标题为"简单的串行点对点点对点通信协议"是建议使用HDLC协议.这是一个很好的协议,或者有更好的东西吗?
谢谢
我有一个仅限库的Android eclipse项目(没有主类,只有库类),我想包含在我的主要Android应用程序项目中.
我转到Build Path并将库项目添加到Projects选项卡上的"构建路径上的必需项目",并在"Order and Export"选项卡上进行了检查.
但是,当应用程序运行时,它会发出VerifyError异常,因为库项目中的类没有碰巧在apk中打包在一起.
对此有何解决方案?
几天前,Arduino刚刚为Android开发者发布了一个"启动包":http://arduino.cc/en/Main/ArduinoBoardADK
Arduino ADK是基于ATmega2560(数据表)的微控制器板.它具有USB主机接口,可与基于Android的手机连接,基于MAX3421e
我一直在寻找教程或其他东西以便开始Arduino编程,我正在寻找非常好的教程,也许某种"你好灯"会在我的Android上用一个按钮在卡上闪烁一下设备.
你有一些链接,粉丝博客,有关该主题的其他信息?
当然,我知道Arduino网站和Android开发者文档,但它们过于复杂......
adk ×10
android ×10
arduino ×5
eclipse ×2
accessory ×1
build.xml ×1
libusb ×1
processing ×1
usb ×1
verifyerror ×1