Android USB主机和隐藏设备

我正在开发一个Android应用程序,我必须与USB设备进行通信。 我试图在我的应用程序中使用标准的谷歌API,但设备清单是空的。

同样的事情,如果我使用谷歌API的USB设备信息。 google apisearch的设备列表是空的,

lsusb给出了以下结果:

Bus 001 Device 001: ID 1d6b:0001 Bus 002 Device 001: ID 1d6b:0002 Bus 003 Device 001: ID 1d6b:0001 Bus 002 Device 002: ID 2226:0014 

我的设备是2226:0014

日食日志:

 I/USB3G(92): event { 'add', '/devices/platform/sw-ehci.1/usb2/2-1', 'usb', '', 189, 133 } I/USB3G(92): path : '/sys/devices/platform/sw-ehci.1/usb2/2-1' I/USB3G(92): VID :size 5,vid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idVendor',VID '2226 I/USB3G(92): '. I/USB3G(92): PID :size 5,Pid_path '/sys/devices/platform/sw-ehci.1/usb2/2-1/idProduct',PID '0014 I/USB3G(92): '. I/USB3G(92): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/2226_0014 &, I/USB3G(92): excute ret : 0,err:No such file or directory 

如果我插入rs232适配器,蓝牙适配器,没有任何反应,并没有任何API和lsusb的结果。

设备的协议基于ezusb库。 Android v .: 4.0.3内核v:3.0.8固件版本:crane_evb-eng 4.0.3 IMLK74k 20120330

是否有任何方法通过API访问隐藏的USB设备,或者我应该通过编写驱动程序并将其修补到固件来实现对此设备的支持?

更新:即使我创build信息文件在*系统/ etc / usb_modeswitch.d / *名称2226_0014包含

 DefaultVendor= 0x2226 DefaultProduct=0x0014 TargetVendor= 0x2226 TargetProductList="0014" MessageEndpoint="0x00" NeedResponse=1 CheckSuccess=20 

我得到同样的错误:“没有这样的文件或目录”

要启用USB主机API支持,您应该添加一个名为的文件
android.hardware.usb.host.xml并包含以下几行:

 <permissions> <feature name="android.hardware.usb.host"/> </permissions> 

进入文件夹

 /system/etc/permissions 

在该文件夹中find名为的文件

 handheld_core_hardware.xml or tablet_core_hardware.xml 

并添加

 <feature name="android.hardware.usb.host" /> 

<permissions>部分。

重新启动您的设备。 USB主机API应该工作。

使用android 4testingCUBE U30GT。

优秀! 这在我的运行Android 4.0.4的Envizen V700NA上工作。

小错字: <feature name="android.hardware.usb.host">

应该是: <feature name="android.hardware.usb.host"/>

程序:

  1. adb pull /system/etc/permissions/tablet_core_hardware.xml
  2. 更新该文件并按照Greg-q的指定创buildandroid.hardware.usb.host.xml。
  3. adb push android.hardware.usb.host.xml / system / etc / permissions
  4. adb push tablet_core_hardware.xml / system / etc / permissions
  5. 重启。

像micromax A120帆布2手机(kitkat 4.4.2)上的魅力工作。 现在我可以控制我的Arduino了! 我用busybox工具来做所有的命令行工作(否则chmod不会工作)。 我的步骤(也许有些不是必需的):

(0)在我的Windows 8电脑上安装PDAnet驱动程序( http://pdanet.co/a/ )。 (1)使用http://www.mgyun.com/m/en上的; Vroot(现在称为iRoot)对电话进行根。 很简单,唯一的好处就是这个su / deny页面是中文的,没什么大不了的。 (2)安装busybox和jackpal的Androidterminal仿真器(参见github https://github.com/jackpal/Android-Terminal-Emulator或者玩商店https://play.google.com/store/apps/details?id = jackpal.androidterm&hl = en )

(3)打开terminal窗口,成为超级用户:

 # su 

(4)文件系统可能是只读的,所以你可能不得不重新安装它:

 # mount -o rw,remount -t yaffs2 / 

要么

 # mount -o rw,remount -t rootfs / 

要么

 # mount -o rw,remount -t rootfs rootfs /system 

看到http://www.pocketmagic.net/write-on-the-android-read-only-file-system/也见Android 2.3:只读文件系统卡住了 , https://ckirbach.wordpress.com / 2012/11月27日/如何对重新挂载系统-如读取,写入function的Android /

(5)使default.prop读/写:

 chmod 666 /default.prop 

(6)编辑/default.prop,进行如下更改:

 ro.secure=0 ro.debuggable=1 persist.service.adb.enable=1 

请参阅https://android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-secure或http://bclary.com/blog/2014/04/14/splitting-and-packing -Android启动图像/

最后,为了完整起见,正如上面的答案( https://stackoverflow.com/a/11992683/979369 )所示:

(7)要启用USB主机API支持,您应该添加一个名为android.hardware.usb.host.xml的文件并包含以下行:

 <permissions> <feature name="android.hardware.usb.host"/> </permissions> 

进入文件夹

 /system/etc/permissions 

在该文件夹中find名为的文件

 handheld_core_hardware.xml or tablet_core_hardware.xml 

并添加

 <feature name="android.hardware.usb.host" /> 

进入部分。

(8)重新启动您的设备。 USB主机API应该工作。

我在MK809,Android 4.1 Jelly Bean上使用了adb,命令是:

adb remount /../../file.xml rw adb push …

与正常的命令i'vent权限和文件是只读的

对不起,我的英语不好:P