如何检测Android手机上的非标准USB设备?

时间:2018-05-31 06:54:12

标签: android usb host

这是我的原理图 schematic

  1. 我的设备是非标准USB设备
  2. 我只使用5V的电源 手机通过将ID引脚接地来为我的设备供电
  3. 我用一个1.5k的上拉电阻将D-引脚连接到5V,以便在我的设备插入电源时告诉手机D-引脚上有电压变化
  4. 我没有使用D + / D-针与手机通信
  5. 我的问题:如何在连接到Android手机时检测设备? 我试图读取两个变量

    UsbManager.ACTION_USB_DEVICE_ATTACHED 
    android.hardware.usb.action.USB_STATE
    

    两者都没有变化。

    但奇怪的是当我插入USB线时android.hardware.usb.action.USB_STATE =已连接

1 个答案:

答案 0 :(得分:0)

USB是一种复杂的协议。 USB设备按device classes组织,如大容量存储类通信设备类(CDC),...( http://www.usb.org/developers/docs/devclass_docs/ https://www.kernel.org/doc/html/v4.13/driver-api/usb/power-management.html )当USB设备连接到主机时,它会将其类报告给主机(通过数据D-D +线路),主机加载相应的内核模块/驱动程序和配置

设备类和USB类型也决定USB端口的输出功率,当简单连接USB电缆时,使用标准配置输出功率(我认为500 mA)但是我不知道机制主机如何检测连接的USB线缆,可能使用万用表测量USB线缆各线之间的电阻和电容......

可能会将您的设备连接到USB线并将其连接到Android,因为检测到电缆并启用了电源输出......