不同手机在豌豆夹上显示设备同名的解决方法 && Android 获取USB设备的类型 && Android USB Host开发

         开发中,会碰到两个不同但类似的机型在豌豆夹里面被识别为同一个机型,比如XT810和MT810都被豌豆夹识别为XT810,那做MT810的工程师就比较郁闷,因为不同的机型需要区别对待。由于豌豆夹是根据设备的PID和VID来识别,所以我们需要修改手机的PID和VID。

        这个需求涉及到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,的源码,有读写,自己验证未成功。

你可能感兴趣的:(Android)