检测USB设备拔插

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>


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值