这个需求涉及到PC 端android ADB driver和工程代码中ALPS 两部分的修改。
(1)Android 手机driver端:请直接修改 alps\mediatek\custom\mt6573\kernel\usb\src\mtk_usb_custom.h 文件。如下:
#define USB_MS_PRODUCT_ID 0x0008 //关闭USB模式的时候显示的PID
#define USB_MS_ADB_PRODUCT_ID 0x0c08 //打开USB模式的时候显示的PID
#define VENDOR_ID 0x0bb8 //修改的VID
(2)PC端驱动:修改ADB的USB driver, 加上新的VID和PID 即可,否则ADB连不上。具体是android_winusb.inf,在
; HTC Magic
%CompositeAdbInterface% = USB_Install, USB\VID_0BB4&PID_0C03&MI_01
参考如上这一句,后面加上贵司的改动。比如:
; ZTE/LENOVO/HUAWEI phone
%CompositeAdbInterface% = USB_Install, USB\VID_XXXX&PID_XXXX&MI_01
即完成。说明一下PC端驱动需要在两个模块里面添加,分别在该inf文件的[Google.NTx86]区段和[Google.NTamd64]区段添加(适配不同PC上的CPU),这样就将这三个数值与机型对应起来了,当我们将这个机型的这些参数传给豌豆夹公司之后,他们会将这些参数与机型匹配。这样豌豆夹软件就可以匹配自己正确的机型了。
需要注意的是在适配豌豆荚时还要注意其它方面,在豌豆荚适配完成之前,厂商自行为Android设备安装 ADB 驱动后,使用豌豆荚可以成功连接,但此时设备并不一定能正确识别。还需要厂商提供以下信息才能精确识别:
A,该Android设备的正式型号名称,比如“魅族 M9”,“联想乐Phone”,用于展示给用户。
B,该Android设备的内部型号值,即Model值。这个值并不唯一,但每种设备仅会使用一个。获取此值的方法:adb shell getpropro.product.model(自己验证不可行),也可以在手机的“关于手机”-->“型号”一项看到。
C,该Android所使用到的所有VID、PID、SN(可选),这些值并不唯一。
====================================Android 获取USB设备的类型===========================================
实际使用中,在安卓手机上插入U盘和插入鼠标,系统是如何识别是什么设备的呢?可参考: http://blog.csdn.net/u013686019/article/details/50409421。跟其他设备一样,分为以下几个部分,driver->HAL->Framework->APP。涉及到的文件:
(1)driver
Ch9.h (kernel\include\linux\usb),usb设备class和interface的定义
(2)HAL
Usbhost.c (system\core\libusbhost) ,提供驱动接口供JNI调用
(3)JNI
com_android_server_UsbHostManager.cpp (frameworks\base\services\jni)
(4)Framework
UsbHostManager.java (frameworks\base\services\java\com\android\server\usb),与JNI互相访问,实现功能
(5)供APP使用的文件
UsbDevice.java (frameworks\base\core\java\android\hardware\usb)
UsbInterface.java (frameworks\base\core\java\android\hardware\usb)
获取USB设备信息的APK实例可参见http://m.blog.csdn.net/article/details?id=51916998
=========================================Android USB Host开发=====================================
安卓平台上USB HOST的开发使用,以下几个内容:
一Android中的USB
二USB插入事件
三Usb插入时启动程序
四UsbManager的初始化
五列出Usb设备
六USB使用权限(仅写)
七通信
详情参见:http://blog.csdn.net/lincyang/article/details/50739342。HOST设备读写外设的实例apk可参考http://blog.csdn.net/centralperk/article/details/9312401,的源码,有读写,自己验证未成功。