2012-06-25 153 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應該工作。