import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.hardware.usb.UsbDevice;
import android.hardware.usb.UsbManager;
import android.os.Build;
import android.os.Environment;
import android.util.Log;
import androidx.annotation.RequiresApi;
import java.util.ArrayList;
public static int NFC_VID = 6790;
public static int NFC_PID = 29987;
public static int VOICE_VID = 4292;
public static int VOICE_PID = 60000;
public class USBDiskReceiver extends BroadcastReceiver {
private ArrayList<Integer> list = null;
private UsbManager usbManager;
private String deviceName = "";
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)){
UsbManager usbManager = (UsbManager)context.getSystemService(Context.USB_SERVICE);
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
System.out.println(usbManager.getDeviceList().values());
Log.e("TAG","设备的ProductId值为:"+device.getProductId());
Log.e("TAG","设备的VendorId值为:"+device.getVendorId());
/* for(UsbDevice device : usbManager.getDeviceList().values()){
if(device.getVendorId() == USBUtil.NFC_VID && device.getProductId() == USBUtil.NFC_PID ){
Log.d("USB", "USB Device: " + device.getDeviceName());
Log.e("USB","NFC模块设备已插入");
}else
if(device.getVendorId() == USBUtil.VOICE_VID && device.getProductId() == USBUtil.VOICE_PID ){
Log.d("USB", "USB Device: " + device.getDeviceName());
Log.e("USB","语音模块设备已插入");
*//* String com = "\"" + device.getDeviceName() + "\"" ;
//语音识别
try{
//do what you want to do
}catch (Exception e){
e.printStackTrace();
}*//*
}
}*/
}else if(action.equals(UsbManager.ACTION_USB_DEVICE_DETACHED)){
list = new ArrayList<Integer>();
UsbManager usbManager = (UsbManager)context.getSystemService(Context.USB_SERVICE);
for(UsbDevice device : usbManager.getDeviceList().values()){
list.add(device.getVendorId());
}
if(!list.contains(NFC_VID)){
Log.e("USB","NFC模块设备已拔出");
}
if(!list.contains(VOICE_VID)){
Log.e("USB","语音模块设备已拔出");
}
/* UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
Log.e("TAG","设备的ProductId值为:"+device.getProductId());
Log.e("TAG","设备的VendorId值为:"+device.getVendorId());*/
}
}
//获取当前串口号
public List<String>getDevices() {
if (null == list) {
list = new ArrayList<>();
File dev = new File("/dev");
File[] files = dev.listFiles();
int i;
for (i = 0; i < files.length; i++) {
if (files[i].getAbsolutePath().startsWith("/dev/ttyUSB")) {
Log.e("TAG", "Found new device: " + files[i]);
list.add(files[i].toString());
}
}
}
return list;
}
device_filter.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="6790" product-id="29987" />
<usb-device vendor-id="4292" product-id="60000" />
</resources>
}
检测USB设备拔插
于 2022-06-09 17:03:44 首次发布