Browse Source

fix failed_devices.txt created failure

main 2.3.1
Jiangdg 5 years ago
parent
commit
7958ab149a
  1. 4
      build.gradle
  2. 2
      libusbcamera/build.gradle
  3. 71
      libusbcamera/src/main/java/com/serenegiant/usb/USBMonitor.java

4
build.gradle

@ -27,8 +27,10 @@ ext {
commonLibVersion= '2.12.4'
versionCompiler = 27
versionTarget = 27
// if hope supporting 4.4
// please modify it to 16
minSdkVersion = 21
versionNameString = '1.0.0'
versionNameString = '1.1.0.20190826'
javaSourceCompatibility = JavaVersion.VERSION_1_8
javaTargetCompatibility = JavaVersion.VERSION_1_8
}

2
libusbcamera/build.gradle

@ -7,7 +7,7 @@ android {
defaultConfig {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.versionTarget
versionCode 1
versionCode 2
versionName rootProject.ext.versionNameString
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}

71
libusbcamera/src/main/java/com/serenegiant/usb/USBMonitor.java

@ -311,7 +311,7 @@ public final class USBMonitor {
// get detected devices
final HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList();
// store those devices info before matching filter xml file
String fileName = Environment.getExternalStorageDirectory()+ "/USBCamera/failed_devices.txt";
String fileName = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/USBCamera/failed_devices.txt";
File logFile = new File(fileName);
if(! logFile.exists()) {
@ -323,29 +323,35 @@ public final class USBMonitor {
}
FileWriter fw = null;
PrintWriter pw = null;
final List<UsbDevice> result = new ArrayList<UsbDevice>();
try {
fw = new FileWriter(logFile, true);
} catch (IOException e) {
e.printStackTrace();
}
if(fw != null) {
pw = new PrintWriter(fw);
if (deviceList != null) {
if ((filters == null) || filters.isEmpty()) {
result.addAll(deviceList.values());
} else {
for (final UsbDevice device: deviceList.values() ) {
// match devices
for (final DeviceFilter filter: filters) {
if ((filter != null) && filter.matches(device) || (filter != null && filter.mSubclass == device.getDeviceSubclass())) {
// when filter matches
if (!filter.isExclude) {
result.add(device);
}
break;
} else {
// collection failed dev's class and subclass
String devModel = android.os.Build.MODEL;
String devSystemVersion = android.os.Build.VERSION.RELEASE;
String devClass = String.valueOf(device.getDeviceClass());
String subClass = String.valueOf(device.getDeviceSubclass());
}
final List<UsbDevice> result = new ArrayList<UsbDevice>();
if (deviceList != null) {
if ((filters == null) || filters.isEmpty()) {
result.addAll(deviceList.values());
} else {
for (final UsbDevice device: deviceList.values() ) {
// match devices
for (final DeviceFilter filter: filters) {
if ((filter != null) && filter.matches(device) || (filter != null && filter.mSubclass == device.getDeviceSubclass())) {
// when filter matches
if (!filter.isExclude) {
result.add(device);
}
break;
} else {
// collection failed dev's class and subclass
String devModel = android.os.Build.MODEL;
String devSystemVersion = android.os.Build.VERSION.RELEASE;
String devClass = String.valueOf(device.getDeviceClass());
String subClass = String.valueOf(device.getDeviceSubclass());
try{
if(pw != null) {
StringBuilder sb = new StringBuilder();
sb.append(devModel);
@ -357,23 +363,22 @@ public final class USBMonitor {
pw.flush();
fw.flush();
}
}catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (pw != null) {
pw.close();
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (pw != null) {
pw.close();
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return result;

Loading…
Cancel
Save