Cómo detectar que el dispositivo Android está conectado con USB OTG o no mediante programación
Estoy trabajando con el escáner de huellas dactilares OTG personalizado. Quiero comprobar que OTG está conectado a mi dispositivo Android o no en una actividad específica de Android.
- ¿Cómo detectar si Android tiene soporte USB completo o no?
- Dibujando potencia desde el dispositivo USB a la tableta de Android a través del cable OTG
- Lectura de datos de ratón sin procesar en android
- Comunicación con dispositivo USB serie en Android
- Android lectura / escritura de archivos en la unidad USB OTG programatically
- Envío de datos desde un PC a un dispositivo Android mediante USB OTG
- Android USB OTG: por programación, apague la alimentación del puerto
- Uso del teléfono Android como host USB para montar unidades externas en el teléfono y acceder a la memoria de la unidad externa a través del teléfono
- USB OTG teléfonos compatibles?
- ¿Cómo instalar apk directamente en la memoria USB OTG?
- ¿Cómo leer / escribir almacenamiento externo USB en Android?
- Ruta de acceso de OTG en dispositivo Android
- Información externa del hardware
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); } }
Desde cualquier actividad se puede llamar variable globel para comprobar el estado USB actual:
final GlobalClass globalVariable = (GlobalClass) getApplicationContext(); if (globalVariable.is_OTG()) { //Perform your functionality }
Clase Global:
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; } }
Manifestante
<application android:name="com.GlobalClass"
receptor:
<receiver android:name=".BootUpReceiver" android:enabled="true" > <!-- <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.HOME" /> </intent-filter>--> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> <action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" /> </intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:resource="@xml/device_filter" /> </receiver>