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 + + + + +