0

我正在使用 VNC2 芯片为 Android 平板电脑开发定制硬件。

在 VNC2 芯片上,我已经刷新了一些我制作的自定义固件。我已将 USB VendorID 设置为 0403,将 USB ProductId 设置为 6001。

我还有一个正在开发的 Android 应用程序。我在清单中添加了以下内容:

<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" />      

device_filter.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <usb-device/>
</resources>

我的目标是,如果我连接 USB 设备,这个应用程序应该启动。但是,这不起作用。我从 Google Play 下载了一个名为“USB 主机控制器”的工具,这个应用程序向我显示 USB 设备已连接,因此某些部件似乎可以工作。

连接设备时,我还在 logcat 中看到了输出:

I/USB3G   (   91): event { 'add', '/devices/platform/sw_hcd_host0/usb1/1-1', 'usb', '', 189, 12 }
I/USB3G   (   91): path : '/sys/devices/platform/sw_hcd_host0/usb1/1-1'
I/USB3G   (   91): VID :size 5,vid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idVendor',VID  '0403
I/USB3G   (   91): '.
I/USB3G   (   91): PID :size 5,Pid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idProduct',PID  '6001
I/USB3G   (   91): '.
I/USB3G   (   91): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/0403_6001 &,
I/USB3G   (   91): excute ret : 0,err:No such file or directory

深入研究 modeswitch,它似乎是一种主要在 USB 3G 调制解调器上切换状态的工具。我的第一个猜测是我的设备上有一个非常残缺的图像(基于 Allwinner A10)。但即使我觉得不太可能,这也可能是我的应用程序中的一些错误。根据我的理解,在插入 OTG 硬件时,无论我是否安装了匹配的意图过滤器的应用程序,我都应该看到某种对话框,还是我错了?

任何想法,将不胜感激。如果需要,我可以以任何方式更改 apk。平板电脑已植根,我可以以任何可能的方式更改文件。很乐意尝试您的任何想法。

4

1 回答 1

1

现在我终于解决了这个问题。主要问题似乎是我需要安装一个带有意图过滤器的应用程序才能发生任何事情。这有点奇怪,因为如果您没有可以处理附件的应用程序,使用 AOA(Android 开放附件协议)的硬件将显示一个对话框并引导您到 Google Play 下载。

但是,如果您没有具有与 USB 供应商和设备 ID 匹配的意图过滤器的应用程序,USB OTG 设备将默默地忽略您将它们连接到您的 Android 设备。测试时,我有一个没有安装意图过滤器的应用程序。以为我会得到像 AOA 中的对话,但在这里我错了。

为了使 OTG 正常工作,我唯一需要添加到 rom 中的就是将 android.hardware.usb.host.xml 放入 /system/etc/permissions。然后一切都很完美。

于 2013-08-14T19:45:21.147 回答