2012-06-25 52 views
24

我正在开发一个Android应用程序,我必须与USB设备进行通信。我试图在我的应用中使用标准的Google API,但设备列表总是空的。Android USB主机和隐藏设备

同样的事情,如果我使用USB设备信息与谷歌API。通过谷歌API搜索设备列表是空的,

的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库。 安卓五:4.0.3 内核五:3.0.8固件 构建:crane_evb-ENG 4.0.3 IMLK74k 20120330

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

UPDATE:即使我在*系统的/ etc创建信息文件/ usb_modeswitch.d/*含

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

我得到了同样的错误名称2226_0014 : “没有这样的文件或目录”

回答

44

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

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

到该文件夹​​中的文件夹

/system/etc/permissions 

找到名为

handheld_core_hardware.xml or tablet_core_hardware.xml 

文件,并添加

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

<permissions>部分。

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

使用android 4测试CUBE U30GT。

+0

谢谢你队友!它也适用于我的Yarvik TAB464! –

+0

优秀)一切都很好) –

+0

谢谢,为我工作 – Marijn

6

非常好!这对我运行Android 4.0.4的Envizen V700NA有效。

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

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

步骤:

  1. 亚行拉/system/etc/permissions/tablet_core_hardware.xml
  2. 更新文件并创建机器人。由Greg-q指定的hardware.usb.host.xml。
  3. ADB推android.hardware.usb.host.xml /系统的/ etc /权限
  4. ADB推tablet_core_hardware.xml /系统的/ etc /权限
  5. 重启。
1

我用的MK809,搭载Android 4.1果冻豆亚行和该命令是:

亚行重新装入/../../file.xml RW 亚行推...

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

我的英文不好对不起:P

2

工作就像一个魅力Micromax的A120帆布2手机上(奇巧4.4.2)。现在我可以控制我的Arduino!我使用busybox工具来完成所有的命令行工作(否则chmod将无法工作)。我的步骤(可能有些不是必需的):

(0)在我的Windows 8计算机上安装PDAnet驱动程序(http://pdanet.co/a/)。 (1)在http://www.mgyun.com/m/en处使用Vroot(现在称为iRoot)对电话进行根。非常简单,唯一的好处是,su授予/拒绝页面部分是中文,没什么大不了的。 (2)安装的busybox和jackpal的Android终端仿真器(见GitHub的https://github.com/jackpal/Android-Terminal-Emulator或play商店https://play.google.com/store/apps/details?id=jackpal.androidterm&hl=en

(3)打开一个终端窗口,成为超级用户:

# 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 : Read-Only file system stuck 也,https://ckirbach.wordpress.com/2012/11/27/how-to-remount-system-as-read-write-in-android/

(5)使default.prop读/写:

chmod 666 /default.prop 

(6)编辑/默认。道具,做如下修改:

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

看到https://android.stackexchange.com/questions/28653/obtaining-root-by-modifying-default-propro-securehttp://bclary.com/blog/2014/04/14/splitting-and-packing-android-boot-images/

最后,只是为了完整性,如上回答说(https://stackoverflow.com/a/11992683/979369):

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

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

到名为

handheld_core_hardware.xml or tablet_core_hardware.xml 

和文件夹中找到文件夹

/system/etc/permissions 

添加

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

成部分。

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