@TargetApi(23)
private List<String> getUSBAudioDeviceName() {
UsbManager usbManager = (UsbManager) _context.getSystemService(Context.USB_SERVICE);
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
List<UsbDevice> usbDevices = new ArrayList<>();
List<String> deviceName = new ArrayList<>();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
usbDevices.add(device);
//Log.e("getDeviceList", "getDeviceList: " + device.getProductName());
//判断是否为音频USB设备
int count = device.getConfigurationCount();
boolean hasAudio = false;
for (int i = 0; i < count; i++) {
UsbConfiguration configuration = device.getConfiguration(i);
if (null == configuration) {
Log.e(TAG, "null usb configuration");
return null;
}
int interfaceCount = configuration.getInterfaceCount();
//Log.e("getDeviceList", "interfacce:"+String.valueOf(interfaceCount));
for (int j = 0; j < interfaceCount; j++) {
UsbInterface usbInterface = configuration.getInterface(j);
if (null != usbInterface && usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO) {
hasAudio = true;
//Log.e("getDeviceList", "this device is a usb audio device!");
}
}
}
if(hasAudio){
//Log.e("getDeviceList", device.getProductName() + " is a usb audio device!");
deviceName.add(device.getProductName());
audioDeviceName = device.getProductName();
return deviceName;
}
}
return deviceName;
}