X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FUsbMonitor.java;h=c874ba5fb9800cdee98400ec5ac84271cf472de6;hb=HEAD;hp=61481ee7380edc9d36857431c014e44a64b85fcf;hpb=679195d4e27980faf7fd4ef577301b005ab054f1;p=rtmpclient.git diff --git a/app/src/main/java/ai/suanzi/rtmpclient/UsbMonitor.java b/app/src/main/java/ai/suanzi/rtmpclient/UsbMonitor.java index 61481ee..c874ba5 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/UsbMonitor.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/UsbMonitor.java @@ -28,10 +28,6 @@ public class UsbMonitor { mContext = context; mUsbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE); - HashMap deviceList = mUsbManager.getDeviceList(); - gLogger.error("device list size : " + deviceList.size()); - Iterator deviceIterator = deviceList.values().iterator(); - //PendingIntent mPermissionIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_USB_PERMISSION), 0); IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_DETACHED); mContext.registerReceiver(mUsbReceiver, filter); filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED); @@ -39,6 +35,17 @@ public class UsbMonitor { filter = new IntentFilter(ACTION_USB_PERMISSION); mContext.registerReceiver(mUsbReceiver, filter); + HashMap deviceList; + try { + deviceList = mUsbManager.getDeviceList(); + } catch (NullPointerException e) { + gLogger.error(e.getMessage()); + e.printStackTrace(); + return; + } + gLogger.error("device list size : " + deviceList.size()); + Iterator deviceIterator = deviceList.values().iterator(); + //PendingIntent mPermissionIntent = PendingIntent.getBroadcast(mContext, 0, new Intent(ACTION_USB_PERMISSION), 0); while (deviceIterator.hasNext()) { UsbDevice device = deviceIterator.next(); gLogger.error(device.toString()); @@ -47,13 +54,18 @@ public class UsbMonitor { //mUsbManager.requestPermission(device, mPermissionIntent); } + public void unregisterReceiver (){ + mContext.unregisterReceiver(mUsbReceiver); + } + private boolean isUvcCamera(UsbDevice device){ - return (device.getDeviceProtocol() == 1 && device.getProductName().contains("Camera")); + if((device == null) || (device.getProductName() == null)) return false; + return device.getProductName().toLowerCase().contains("camera") || (device.getDeviceProtocol() == 1); } public boolean hasUsbCamera(){ gLogger.error("hasUsbCamera - size: " + mUsbCameraList.size()); - return (mUsbCameraList.size() > 0 ? true : false); + return mUsbCameraList.size() > 0; } public int getUsbCameraCount(){ @@ -88,7 +100,7 @@ public class UsbMonitor { gLogger.error(device.toString()); if(isUvcCamera(device)) { mUsbCameraList.remove(device); - mListener.onCameraConnected(); + mListener.onCameraDisconnected(); } } } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) { @@ -97,7 +109,7 @@ public class UsbMonitor { gLogger.error(device.toString()); if(isUvcCamera(device)) { mUsbCameraList.add(device); - mListener.onCameraDisconnected(); + mListener.onCameraConnected(); } } }