如何通过adb获取Android设备的供应商ID?

16

我遇到了如何获取 Android 设备的供应商 ID 和产品 ID 的问题。

是否有 adb 命令可以做到这一点?

当设备插入时,我可以获取供应商 ID 和产品 ID ,但是在安装了 Windows 驱动程序之后,如果同时插入两个设备,我无法分辨出真正的供应商 ID。因此,我需要通过 ADB 或其他硬件设备和 Android 设备之间的连接找到供应商 ID。

5个回答

21

如果您正在运行Ubuntu/Linux,只需键入

lsusb -v

并按下回车键。它将显示所有USB设备的详细信息。 在结果中查找名为“idVendor”的字段并找到您的设备。 例如:我的Motorola Defy [vendor id = 22b8]给出,

" idVendor 0x22b8 Motorola PCS"


1
这并不会将adb拥有的信息(序列号)与实际的供应商/产品ID连接起来。在这个层面上,拥有几部相同型号的手机将使它们无法相互识别。 - Błażej Michalik

4
我不知道您是否已经找到解决方案,但是通过将我的手机通过USB电缆连接到计算机并在Ubuntu终端中输入下面的代码行,我能够获取供应商ID。
lsusb

例如,如果您连接了 Nexus One,则会收到以下内容:
总线 002 设备 004:ID 18d1:4e12
在这种情况下,厂商 ID 是“18d1”,产品 ID 是“4e12”。(当然我们只对厂商 ID 感兴趣)

我在 Mac 上遇到了 lsusb:/sys/bus/usb/devices//1-2: Permission denied 的错误提示。 - Nouman Ch
@NoumanCh 你只需要在终端上输入“lsusb”即可。同时,确保你的手机可以从电脑访问。例如,如果你已将USB配置设置为仅充电,则可以更改为传输文件。 - Edijae Crusar

2
ADB本身无法帮助查找已连接硬件的供应商ID,事实上(对于Google ADB驱动程序),必须事先设置好供应商ID才能使用ADB。幸运的是,有一种简单的方法可以找到连接到Windows PC的任何设备的供应商ID(和产品ID),甚至不需要为此安装驱动程序:
1. 启动设备管理器 2. 在硬件树中,右键单击要确定供应商ID的设备的硬件条目。

Properties for item to be checked

在“详细信息”选项卡上,将属性下拉菜单设置为“硬件 ID”。供应商 ID 是紧随字母“VID_”后的 4 个十六进制字符。在下面的情况下,供应商 ID 是 18D1

Showing the Vendor and Product ID

下面的PID_是产品ID。它也有一个4位十六进制数字。

1
如果您想在Android应用程序中实现此功能,可以使用以下代码。
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
    HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
    Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
    while (deviceIterator.hasNext()) {
        UsbDevice device = deviceIterator.next();

        Log.e("DB", gson.toJson(device));
    }

0

希望这个链接能对你有所帮助。

-s serialNumber是adb命令,它可以给你一个特定的模拟器/设备实例,通过其adb分配的序列号进行引用(例如“emulator-5556”)。我认为这就是你要找的adb命令。


谢谢你的回答,我知道serialNumber,它应该部分地使用pid和vid进行编码,但我不知道具体如何操作。我想获取Windows的ID,而不是Android的。 - user1323681

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接