Refactor logging of camera params

This commit is contained in:
Sean Owen 2014-05-01 00:01:44 +01:00
parent 9b2ddac3cf
commit c103e59b7e
4 changed files with 64 additions and 43 deletions

View file

@ -19,6 +19,7 @@ package com.google.zxing.client.android.camera;
import android.graphics.Point; import android.graphics.Point;
import android.graphics.Rect; import android.graphics.Rect;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Build;
import android.util.Log; import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
@ -28,6 +29,7 @@ import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.regex.Pattern;
/** /**
* Utility methods for configuring the Android camera. * Utility methods for configuring the Android camera.
@ -38,6 +40,8 @@ public final class CameraConfigurationUtils {
private static final String TAG = "CameraConfiguration"; private static final String TAG = "CameraConfiguration";
private static final Pattern SEMICOLON = Pattern.compile(";");
private static final int MIN_PREVIEW_PIXELS = 480 * 320; // normal screen private static final int MIN_PREVIEW_PIXELS = 480 * 320; // normal screen
private static final float MAX_EXPOSURE_COMPENSATION = 1.5f; private static final float MAX_EXPOSURE_COMPENSATION = 1.5f;
private static final float MIN_EXPOSURE_COMPENSATION = 0.0f; private static final float MIN_EXPOSURE_COMPENSATION = 0.0f;
@ -401,4 +405,42 @@ public final class CameraConfigurationUtils {
return result.toString(); return result.toString();
} }
public static String collectStats(Camera.Parameters parameters) {
return collectStats(parameters.flatten());
}
public static String collectStats(CharSequence flattenedParams) {
StringBuilder result = new StringBuilder(1000);
result.append("BOARD=").append(Build.BOARD).append('\n');
result.append("BRAND=").append(Build.BRAND).append('\n');
result.append("CPU_ABI=").append(Build.CPU_ABI).append('\n');
result.append("DEVICE=").append(Build.DEVICE).append('\n');
result.append("DISPLAY=").append(Build.DISPLAY).append('\n');
result.append("FINGERPRINT=").append(Build.FINGERPRINT).append('\n');
result.append("HOST=").append(Build.HOST).append('\n');
result.append("ID=").append(Build.ID).append('\n');
result.append("MANUFACTURER=").append(Build.MANUFACTURER).append('\n');
result.append("MODEL=").append(Build.MODEL).append('\n');
result.append("PRODUCT=").append(Build.PRODUCT).append('\n');
result.append("TAGS=").append(Build.TAGS).append('\n');
result.append("TIME=").append(Build.TIME).append('\n');
result.append("TYPE=").append(Build.TYPE).append('\n');
result.append("USER=").append(Build.USER).append('\n');
result.append("VERSION.CODENAME=").append(Build.VERSION.CODENAME).append('\n');
result.append("VERSION.INCREMENTAL=").append(Build.VERSION.INCREMENTAL).append('\n');
result.append("VERSION.RELEASE=").append(Build.VERSION.RELEASE).append('\n');
result.append("VERSION.SDK_INT=").append(Build.VERSION.SDK_INT).append('\n');
if (flattenedParams != null) {
String[] params = SEMICOLON.split(flattenedParams);
Arrays.sort(params);
for (String param : params) {
result.append(param).append('\n');
}
}
return result.toString();
}
} }

View file

@ -32,6 +32,11 @@
<artifactId>android-integration</artifactId> <artifactId>android-integration</artifactId>
<version>${project.parent.version}</version> <version>${project.parent.version}</version>
</dependency> </dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>android-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.google.android</groupId> <groupId>com.google.android</groupId>
<artifactId>android</artifactId> <artifactId>android</artifactId>

View file

@ -22,7 +22,6 @@ import android.content.Intent;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.hardware.Camera; import android.hardware.Camera;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.provider.ContactsContract; import android.provider.ContactsContract;
@ -31,6 +30,8 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import com.google.zxing.client.android.camera.CameraConfigurationUtils;
import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult; import com.google.zxing.integration.android.IntentResult;
@ -40,14 +41,11 @@ import java.io.IOException;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.Writer; import java.io.Writer;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.regex.Pattern;
public final class ZXingTestActivity extends Activity { public final class ZXingTestActivity extends Activity {
private static final String TAG = ZXingTestActivity.class.getSimpleName(); private static final String TAG = ZXingTestActivity.class.getSimpleName();
private static final String PACKAGE_NAME = ZXingTestActivity.class.getPackage().getName(); private static final String PACKAGE_NAME = ZXingTestActivity.class.getPackage().getName();
private static final Pattern SEMICOLON = Pattern.compile(";");
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
@ -118,7 +116,8 @@ public final class ZXingTestActivity extends Activity {
private final View.OnClickListener getCameraParameters = new View.OnClickListener() { private final View.OnClickListener getCameraParameters = new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
String stats = collectStats(); String stats = CameraConfigurationUtils.collectStats(getFlattenedParams());
writeStats(stats);
Intent intent = new Intent(Intent.ACTION_SEND); Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_EMAIL, "zxing-external@google.com"); intent.putExtra(Intent.EXTRA_EMAIL, "zxing-external@google.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Camera parameters report"); intent.putExtra(Intent.EXTRA_SUBJECT, "Camera parameters report");
@ -283,44 +282,6 @@ public final class ZXingTestActivity extends Activity {
} }
} }
private static String collectStats() {
StringBuilder result = new StringBuilder(1000);
result.append("BOARD=").append(Build.BOARD).append('\n');
result.append("BRAND=").append(Build.BRAND).append('\n');
result.append("CPU_ABI=").append(Build.CPU_ABI).append('\n');
result.append("DEVICE=").append(Build.DEVICE).append('\n');
result.append("DISPLAY=").append(Build.DISPLAY).append('\n');
result.append("FINGERPRINT=").append(Build.FINGERPRINT).append('\n');
result.append("HOST=").append(Build.HOST).append('\n');
result.append("ID=").append(Build.ID).append('\n');
result.append("MANUFACTURER=").append(Build.MANUFACTURER).append('\n');
result.append("MODEL=").append(Build.MODEL).append('\n');
result.append("PRODUCT=").append(Build.PRODUCT).append('\n');
result.append("TAGS=").append(Build.TAGS).append('\n');
result.append("TIME=").append(Build.TIME).append('\n');
result.append("TYPE=").append(Build.TYPE).append('\n');
result.append("USER=").append(Build.USER).append('\n');
result.append("VERSION.CODENAME=").append(Build.VERSION.CODENAME).append('\n');
result.append("VERSION.INCREMENTAL=").append(Build.VERSION.INCREMENTAL).append('\n');
result.append("VERSION.RELEASE=").append(Build.VERSION.RELEASE).append('\n');
result.append("VERSION.SDK_INT=").append(Build.VERSION.SDK_INT).append('\n');
CharSequence flattened = getFlattenedParams();
if (flattened != null) {
String[] params = SEMICOLON.split(flattened);
Arrays.sort(params);
for (String param : params) {
result.append(param).append('\n');
}
}
String resultString = result.toString();
writeStats(resultString);
return resultString;
}
private static void writeStats(String resultString) { private static void writeStats(String resultString) {
File cameraParamsFile = new File(Environment.getExternalStorageDirectory().getPath() + "/CameraParameters.txt"); File cameraParamsFile = new File(Environment.getExternalStorageDirectory().getPath() + "/CameraParameters.txt");
Writer out = null; Writer out = null;

View file

@ -17,6 +17,7 @@
package com.google.zxing.client.glass; package com.google.zxing.client.glass;
import android.hardware.Camera; import android.hardware.Camera;
import android.util.Log;
import com.google.zxing.client.android.camera.CameraConfigurationUtils; import com.google.zxing.client.android.camera.CameraConfigurationUtils;
@ -25,6 +26,8 @@ import com.google.zxing.client.android.camera.CameraConfigurationUtils;
*/ */
final class CameraConfigurationManager { final class CameraConfigurationManager {
private static final String TAG = "CameraConfiguration";
static final int ZOOM = 2; static final int ZOOM = 2;
private CameraConfigurationManager() { private CameraConfigurationManager() {
@ -33,8 +36,10 @@ final class CameraConfigurationManager {
static void configure(Camera camera) { static void configure(Camera camera) {
Camera.Parameters parameters = camera.getParameters(); Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(1280, 720); parameters.setPreviewSize(1280, 720);
//parameters.setPreviewSize(1920, 1080);
configureAdvanced(parameters); configureAdvanced(parameters);
camera.setParameters(parameters); camera.setParameters(parameters);
//logAllParameters(parameters);
} }
private static void configureAdvanced(Camera.Parameters parameters) { private static void configureAdvanced(Camera.Parameters parameters) {
@ -45,4 +50,12 @@ final class CameraConfigurationManager {
CameraConfigurationUtils.setZoom(parameters, ZOOM); CameraConfigurationUtils.setZoom(parameters, ZOOM);
} }
private static void logAllParameters(Camera.Parameters parameters) {
if (Log.isLoggable(TAG, Log.INFO)) {
for (String line : CameraConfigurationUtils.collectStats(parameters).split("\n")) {
Log.i(TAG, line);
}
}
}
} }