由于PCIE接口的4G模块是以USB的方式进行驱动,为此可以通过读取安卓系统下的VID
、PID
来识别当前使用的4G模块型号。
尝试使用过shell命令进行识别,但不同安卓系统下,有些lsusb命令直接支持,有些需要busybox工具箱使用,有些不支持该命令。系统差异性较大,考虑兼容性问题,放弃使用该方式。
private void testRecognizeModule() {
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
List<UsbDevice> usbDevices = new ArrayList<>();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
int VID = device.getVendorId();
int PID = device.getProductId();
// 若需要识别其他模块型号,请自行增加逻辑代码进行判断
if (VID == 0x2c7c && PID == 0x0125) {
Log.i("alderaan", "检测到移远4G模块EC25...");
break;
} else if (VID == 0x05c6 && PID == 0xf601) {
Log.i("alderaan", "检测到美格4G模块SLM750...");
break;
} else if (VID == 0x2cb7 && PID == 0x0001) {
Log.i("alderaan", "检测到广和通4G模块L718...");
break;
} else if (VID == 0x1782 && PID == 0x4d11) {
Log.i("alderaan", "检测到广和通4G模块L610...");
break;
} else {
Log.i("alderaan", "VID:" + String.format("%04x", device.getVendorId()) + " PID:" + String.format("%04x", device.getProductId()));
}
}
}