How To Detect that Android Device is connected with USB OTG Or Not programmatically

后端 未结 1 1607
我寻月下人不归
我寻月下人不归 2021-02-14 13:45

I am working with custom OTG fingerprint scanner. I want to check that OTG is connected to my Android device or not in a specific android activity.

1条回答
  •  不知归路
    2021-02-14 14:05

    public class BootUpReceiver extends BroadcastReceiver {
    
    private static final String ACTION_USB_PERMISSION = "com.android.example.USB_PERMISSION";
        String TAG = "OTG   ";
    
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
    //        Log.e("USB", "Decive Connected -> " + action);
    //Initilizing globel class to access USB ATTACH and DETACH state
            final GlobalClass globalVariable = (GlobalClass) context.getApplicationContext();
    
            if (action.equalsIgnoreCase("android.hardware.usb.action.USB_DEVICE_ATTACHED")) {
    
                UsbDevice device = (UsbDevice) intent
                        .getParcelableExtra(UsbManager.EXTRA_DEVICE);
                if(device != null) {
                    int vendorID = device.getVendorId();
                    int productID = device.getProductId();
                    if(String.valueOf(productID).equalsIgnoreCase(context.getString(R.string.productID/*product id of your specific device*/))&& (String.valueOf(vendorID).equalsIgnoreCase(context.getString(R.string.vendorID/*vendor id of your specific device*/)))){
        //If Product and Vendor Id match then set boolean "true" in global variable 
                        globalVariable.setIs_OTG(true);
                    }else{
                        globalVariable.setIs_OTG(false);
                    }
                }
            } else if (action.equalsIgnoreCase("android.hardware.usb.action.USB_DEVICE_DETACHED")) {
          //When ever device Detach set your global variable to "false"
                globalVariable.setIs_OTG(false);
            }  }   
    

    From any Activity you can call globel variable to check the current USB state:

     final GlobalClass globalVariable = (GlobalClass) getApplicationContext();
                            if (globalVariable.is_OTG()) {
                                //Perform your functionality
                            } 
    

    GlobalClass:

    public class GlobalClass extends Application {
    
        private boolean is_OTG = false;
    
        public boolean is_OTG() {
            return is_OTG;
        }
    
        public void setIs_OTG(boolean is_OTG) {
            this.is_OTG = is_OTG;
        }
    
    }
    

    manifist:

     

    receiver:

     
              
    
                
                    
    
                    
                
    
                
                    
                    
                
                
    
            
    

    0 讨论(0)
提交回复
热议问题