你知道如何在Android 14上识别U盘是2.0还是3.0吗

最近接了一个新需求,就是客户需要代码识别插入的u盘是2.0还是3.0的。 我在百度遨游了一天,嘿嘿,没找到。
后面经过我百般尝试,千锤百炼,github都翻烂了,编译都编累了,终于勉强找到了方法。这个方法仅适用于在主板上3.0的usb口才能识别出你的u盘是2.0的还是3.0的,如果在主板上2.0的usb口上,不好意思,这个方法不行。
话不多说,直接上代码。

        // 获取所有已连接的 USB 设备
        HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList();
        int usb2 = 0;
        int usb3 = 0;
        for (UsbDevice device : deviceList.values()) {
            if (isUsbDrive(device)) {
                UsbInterface usbInterface = device.getInterface(0);
                int maxPacketSize = usbInterface.getEndpoint(0).getMaxPacketSize();
                if (maxPacketSize > 512) {
                    usb3 = usb3 + 1;
                } else {
                    usb2 = usb2 + 1;
                }
            }
        }

首先获取所有usb设备,然后遍历判断是不是u盘,接着通过 maxPacketSize 来判断u盘是2.0的还是3.0的。
在主板3.0的usb口上,3.0的u盘 maxPacketSize 是1024,2.0的u盘 maxPacketSize 是512。如果是在主板2.0的usb口上,不管你是2.0还是3.0的u盘,maxPacketSize 都是512,所以这个方法仅适用于主板3.0的usb口识别u盘是2.0还是3.0的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值