diff --git a/.travis.yml b/.travis.yml
index a30405c80d..ff8192a848 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,6 +1,6 @@
language: java
sudo: false
-script: mvn ${JACOCO} test
+script: mvn -Ptravis ${JACOCO} test
matrix:
include:
# Covers Java 7, Open JDK, and code coverage
diff --git a/README.md b/README.md
index b0036f7e88..f13c8e1c58 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,8 @@
+##Get Started Developing
+To get started, please visit: https://github.com/zxing/zxing/wiki/Getting-Started-Developing
+
ZXing ("zebra crossing") is an open-source, multi-format 1D/2D barcode image processing
library implemented in Java, with ports to other languages.
diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index ced31cc748..b240dda93f 100755
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -25,6 +25,7 @@
+
diff --git a/android/src/com/google/zxing/client/android/share/AppPickerActivity.java b/android/src/com/google/zxing/client/android/share/AppPickerActivity.java
index 3040b5bce9..778beafb88 100644
--- a/android/src/com/google/zxing/client/android/share/AppPickerActivity.java
+++ b/android/src/com/google/zxing/client/android/share/AppPickerActivity.java
@@ -19,7 +19,6 @@
import android.app.ListActivity;
import android.content.Intent;
import android.os.AsyncTask;
-import android.provider.Browser;
import android.view.View;
import android.widget.Adapter;
import android.widget.ListView;
@@ -54,7 +53,7 @@ protected void onListItemClick(ListView l, View view, int position, long id) {
String packageName = ((AppInfo) adapter.getItem(position)).getPackageName();
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- intent.putExtra(Browser.BookmarkColumns.URL, "market://details?id=" + packageName);
+ intent.putExtra("url", "market://details?id=" + packageName); // Browser.BookmarkColumns.URL
setResult(RESULT_OK, intent);
} else {
setResult(RESULT_CANCELED);
diff --git a/android/src/com/google/zxing/client/android/share/BookmarkPickerActivity.java b/android/src/com/google/zxing/client/android/share/BookmarkPickerActivity.java
index 1a40a068d0..60413c8b1d 100644
--- a/android/src/com/google/zxing/client/android/share/BookmarkPickerActivity.java
+++ b/android/src/com/google/zxing/client/android/share/BookmarkPickerActivity.java
@@ -35,15 +35,14 @@ public final class BookmarkPickerActivity extends ListActivity {
private static final String TAG = BookmarkPickerActivity.class.getSimpleName();
private static final String[] BOOKMARK_PROJECTION = {
- Browser.BookmarkColumns.TITLE,
- Browser.BookmarkColumns.URL
+ "title", // Browser.BookmarkColumns.TITLE
+ "url", // Browser.BookmarkColumns.URL
};
static final int TITLE_COLUMN = 0;
static final int URL_COLUMN = 1;
- private static final String BOOKMARK_SELECTION =
- Browser.BookmarkColumns.BOOKMARK + " = 1 AND " + Browser.BookmarkColumns.URL + " IS NOT NULL";
+ private static final String BOOKMARK_SELECTION = "bookmark = 1 AND url IS NOT NULL";
private Cursor cursor;
@@ -74,8 +73,8 @@ protected void onListItemClick(ListView l, View view, int position, long id) {
if (!cursor.isClosed() && cursor.moveToPosition(position)) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
- intent.putExtra(Browser.BookmarkColumns.TITLE, cursor.getString(TITLE_COLUMN));
- intent.putExtra(Browser.BookmarkColumns.URL, cursor.getString(URL_COLUMN));
+ intent.putExtra("title", cursor.getString(TITLE_COLUMN)); // Browser.BookmarkColumns.TITLE
+ intent.putExtra("url", cursor.getString(URL_COLUMN)); // Browser.BookmarkColumns.URL
setResult(RESULT_OK, intent);
} else {
setResult(RESULT_CANCELED);
diff --git a/android/src/com/google/zxing/client/android/share/ShareActivity.java b/android/src/com/google/zxing/client/android/share/ShareActivity.java
index dd4fa3c7b4..38edb8871a 100755
--- a/android/src/com/google/zxing/client/android/share/ShareActivity.java
+++ b/android/src/com/google/zxing/client/android/share/ShareActivity.java
@@ -16,6 +16,7 @@
package com.google.zxing.client.android.share;
+import android.os.Build;
import android.provider.ContactsContract;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.client.android.Contents;
@@ -29,7 +30,6 @@
import android.net.Uri;
import android.os.Bundle;
import android.provider.BaseColumns;
-import android.provider.Browser;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
@@ -121,7 +121,12 @@ public void onCreate(Bundle icicle) {
setContentView(R.layout.share);
findViewById(R.id.share_contact_button).setOnClickListener(contactListener);
- findViewById(R.id.share_bookmark_button).setOnClickListener(bookmarkListener);
+ if (Build.VERSION.SDK_INT >= 23) { // Marshmallow / 6.0
+ // Can't access bookmarks in 6.0+
+ findViewById(R.id.share_bookmark_button).setEnabled(false);
+ } else {
+ findViewById(R.id.share_bookmark_button).setOnClickListener(bookmarkListener);
+ }
findViewById(R.id.share_app_button).setOnClickListener(appListener);
clipboardButton = findViewById(R.id.share_clipboard_button);
clipboardButton.setOnClickListener(clipboardListener);
@@ -140,7 +145,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent intent) {
switch (requestCode) {
case PICK_BOOKMARK:
case PICK_APP:
- showTextAsBarcode(intent.getStringExtra(Browser.BookmarkColumns.URL));
+ showTextAsBarcode(intent.getStringExtra("url")); // Browser.BookmarkColumns.URL
break;
case PICK_CONTACT:
// Data field is content://contacts/people/984
diff --git a/javase/src/main/java/com/google/zxing/client/j2se/CommandLineRunner.java b/javase/src/main/java/com/google/zxing/client/j2se/CommandLineRunner.java
index 3f134ecfc2..7e1996c919 100644
--- a/javase/src/main/java/com/google/zxing/client/j2se/CommandLineRunner.java
+++ b/javase/src/main/java/com/google/zxing/client/j2se/CommandLineRunner.java
@@ -19,6 +19,7 @@
import com.beust.jcommander.JCommander;
import java.io.IOException;
import java.net.URI;
+import java.net.URISyntaxException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -55,7 +56,21 @@ public static void main(String[] args) throws Exception {
return;
}
- List inputs = config.inputPaths;
+ List inputs = new ArrayList<>(config.inputPaths.size());
+ for (String inputPath : config.inputPaths) {
+ URI uri;
+ try {
+ uri = new URI(inputPath);
+ } catch (URISyntaxException use) {
+ // Assume it must be a file
+ if (!Files.exists(Paths.get(inputPath))) {
+ throw use;
+ }
+ uri = new URI("file", inputPath, null);
+ }
+ inputs.add(uri);
+ }
+
do {
inputs = retainValid(expand(inputs), config.recursive);
} while (config.recursive && isExpandable(inputs));
diff --git a/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java b/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java
index 6e1054d892..d0b78d87a9 100644
--- a/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java
+++ b/javase/src/main/java/com/google/zxing/client/j2se/DecodeWorker.java
@@ -34,6 +34,7 @@
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;
+import java.io.StringWriter;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -149,21 +150,30 @@ private Result[] decode(URI uri, Map hints) throws IOException
if (config.brief) {
System.out.println(uri + ": Success");
} else {
- for (Result result : results) {
+ StringWriter output = new StringWriter();
+ for (int resultIndex = 0; resultIndex < results.length; resultIndex++) {
+ Result result = results[resultIndex];
ParsedResult parsedResult = ResultParser.parseResult(result);
- System.out.println(uri +
+ output.write(uri +
" (format: " + result.getBarcodeFormat() +
", type: " + parsedResult.getType() + "):\n" +
"Raw result:\n" +
result.getText() + "\n" +
"Parsed result:\n" +
- parsedResult.getDisplayResult());
- System.out.println("Found " + result.getResultPoints().length + " result points.");
- for (int i = 0; i < result.getResultPoints().length; i++) {
- ResultPoint rp = result.getResultPoints()[i];
- System.out.println(" Point " + i + ": (" + rp.getX() + ',' + rp.getY() + ')');
+ parsedResult.getDisplayResult() + "\n");
+ output.write("Found " + result.getResultPoints().length + " result points.\n");
+ for (int pointIndex = 0; pointIndex < result.getResultPoints().length; pointIndex++) {
+ ResultPoint rp = result.getResultPoints()[pointIndex];
+ output.write(" Point " + pointIndex + ": (" + rp.getX() + ',' + rp.getY() + ')');
+ if (pointIndex != result.getResultPoints().length - 1) {
+ output.write('\n');
+ }
+ }
+ if (resultIndex != results.length - 1) {
+ output.write('\n');
}
}
+ System.out.println(output.toString());
}
return results;
diff --git a/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java b/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java
index b938e061da..f1d46644d5 100644
--- a/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java
+++ b/javase/src/main/java/com/google/zxing/client/j2se/DecoderConfig.java
@@ -21,7 +21,6 @@
import com.google.zxing.BarcodeFormat;
import com.google.zxing.DecodeHintType;
-import java.net.URI;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -80,7 +79,7 @@ final class DecoderConfig {
boolean help;
@Parameter(description = "(URIs to decode)", required = true, variableArity = true)
- List inputPaths;
+ List inputPaths;
Map buildHints() {
List finalPossibleFormats = possibleFormats;
diff --git a/pom.xml b/pom.xml
index 372db19951..107bd51b5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -95,7 +95,7 @@
UTF-8
1.7
3.2.1
- 1.7.13
+ 1.7.14
3.2.2-SNAPSHOT
@@ -354,7 +354,7 @@
com.simpligility.maven.plugins
android-maven-plugin
- 4.3.0
+ 4.4.1
true
@@ -718,6 +718,22 @@
+
+ travis
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ -Xmx512m
+ 1
+
+
+
+
+