final String fillInCustomSearchURL(String text) { if (customProductSearch == null) { return text; // ? } try { text = URLEncoder.encode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { // can't happen; UTF-8 is always supported. Continue, I guess, without encoding } String url = customProductSearch.replace("%s", text); if (rawResult != null) { url = url.replace("%f", rawResult.getBarcodeFormat().toString()); if (url.contains("%t")) { ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); url = url.replace("%t", parsedResultAgain.getType().toString()); } } return url; }
final String fillInCustomSearchURL(String text) { if (customProductSearch == null) { return text; // ? } try { text = URLEncoder.encode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { // can't happen; UTF-8 is always supported. Continue, I guess, without encoding } String url = customProductSearch; if (rawResult != null) { // Replace %f but only if it doesn't seem to be a hex escape sequence. This remains // problematic but avoids the more surprising problem of breaking escapes url = url.replaceFirst("%f(?![0-9a-f])", rawResult.getBarcodeFormat().toString()); if (url.contains("%t")) { ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); url = url.replace("%t", parsedResultAgain.getType().toString()); } } // Replace %s last as it might contain itself %f or %t return url.replace("%s", text); }
final String fillInCustomSearchURL(String text) { if (customProductSearch == null) { return text; // ? } try { text = URLEncoder.encode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { // can't happen; UTF-8 is always supported. Continue, I guess, // without encoding } String url = customProductSearch; if (rawResult != null) { // Replace %f but only if it doesn't seem to be a hex escape // sequence. This remains // problematic but avoids the more surprising problem of breaking // escapes url = url.replaceFirst("%f(?![0-9a-f])", rawResult.getBarcodeFormat().toString()); if (url.contains("%t")) { ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); url = url.replace("%t", parsedResultAgain.getType().toString()); } } // Replace %s last as it might contain itself %f or %t return url.replace("%s", text); }
public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { // 重新计时 inactivityTimer.onActivity(); lastResult = rawResult; // 把图片画到扫描框 viewfinderView.drawResultBitmap(barcode); beepManager.playBeepSoundAndVibrate(); // ////////////////////////////////////////////////////////////////////////////////////////////////////// Intent mIntent = new Intent(); mIntent.putExtra("describe", ResultParser.parseResult(rawResult) .toString()); setResult(1001, mIntent); finish(); }
/** * A valid barcode has been found, so give an indication of success and show * the results. * * @param rawResult * The contents of the barcode. * @param scaleFactor * amount by which thumbnail was scaled * @param barcode * A greyscale bitmap of the camera data which was decoded. */ public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { lastResult = rawResult; // ResultHandler resultHandler = // ResultHandlerFactory.makeResultHandler(this, rawResult); ResultHandler resultHandler = new ResultHandler(this, ResultParser.parseResult(rawResult)); boolean fromLiveScan = barcode != null; if (fromLiveScan) { // Then not from history, so beep/vibrate and we have an image to // draw on beepManager.playBeepSoundAndVibrate(); //drawResultPoints(barcode, scaleFactor, rawResult); } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); if (fromLiveScan && prefs.getBoolean(PreferencesSettings.KEY_BULK_MODE, false)) { Toast.makeText(getApplicationContext(), getResources().getString(R.string.msg_bulk_mode_scanned) + " (" + rawResult.getText() + ')', Toast.LENGTH_SHORT).show(); // Wait a moment or else it will scan the same barcode continuously // about 3 times restartPreviewAfterDelay(BULK_MODE_SCAN_DELAY_MS); } else { handleDecodeInternally(rawResult, resultHandler, barcode); } }
private void handleDecodeInternally(Result rawResult, Bitmap barcode) { Uri imageUri = null; String imageName = IMAGE_PREFIX + System.currentTimeMillis() + ".png"; Log.v(TAG, "Saving image as: " + imageName); try { imageUri = mImageManager.saveImage(imageName, barcode); } catch (IOException e) { Log.e(TAG, "Failed to save image!", e); } ResultProcessor<?> processor = new ResultProcessor<ParsedResult>( this, ResultParser.parseResult(rawResult), rawResult, imageUri); // ***** CultureGlass entry point ***** //Original BarcodeEye path //startActivity(ResultsActivity.newIntent(this,processor.getCardResults())); ParsedResult result = processor.getParsedResult(); startActivity(new Intent(this, LoadingActivity.class) .putExtra(EXTRA_CODE, result.getDisplayResult()) .putExtra(EXTRA_TYPE, result.getType().toString())); }
/** * A valid barcode has been found, so give an indication of success and show the results. * * @param rawResult * The contents of the barcode. * @param scaleFactor * amount by which thumbnail was scaled * @param barcode * A greyscale bitmap of the camera data which was decoded. */ public void handleDecode(Result rawResult, Bitmap barcode, float scaleFactor) { // 重新计时 inactivityTimer.onActivity(); lastResult = rawResult; // 把图片画到扫描框 viewfinderView.drawResultBitmap(barcode); beepManager.playBeepSoundAndVibrate(); Toast.makeText(this, "识别结果:" + ResultParser.parseResult(rawResult).toString(), Toast.LENGTH_SHORT).show(); // Intent intent = new Intent(); // intent.putExtra("result", ResultParser.parseResult(rawResult) // .toString()); // setResult(RESULT_OK, intent); // finish(); // String result = ResultParser.parseResult(rawResult).toString() // + "&appkey=peixunduoduo"; // Intent intent = new Intent(); // Bundle bundle = new Bundle(); // bundle.putString("title", "扫一扫检录"); // intent.setData(Uri.parse("traindd://" + result)); // intent.putExtra("initValues", bundle); // startActivity(intent); }
public static AddressBookParsedResult getContactDetailsFromUri( Context context, Uri contactUri) { try { byte[] vcard; String vcardString; InputStream stream; stream = context.getContentResolver().openInputStream(contactUri); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int bytesRead; while ((bytesRead = stream.read(buffer)) > 0) { baos.write(buffer, 0, bytesRead); } vcard = baos.toByteArray(); vcardString = new String(vcard, 0, vcard.length, "UTF-8"); Result result = new Result(vcardString, vcard, null, BarcodeFormat.QR_CODE); ParsedResult parsedResult = ResultParser.parseResult(result); return (AddressBookParsedResult) parsedResult; } catch (Exception e) { return null; } }
private static void assertCorrectImage2result(String fileName, ExpandedProductParsedResult expected) throws IOException, NotFoundException { Path path = AbstractBlackBoxTestCase.buildTestBase("src/test/resources/blackbox/rssexpanded-1/").resolve(fileName); BufferedImage image = ImageIO.read(path.toFile()); BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BufferedImageLuminanceSource(image))); int rowNumber = binaryMap.getHeight() / 2; BitArray row = binaryMap.getBlackRow(rowNumber, null); Result theResult; try { RSSExpandedReader rssExpandedReader = new RSSExpandedReader(); theResult = rssExpandedReader.decodeRow(rowNumber, row, null); } catch (ReaderException re) { fail(re.toString()); return; } assertSame(BarcodeFormat.RSS_EXPANDED, theResult.getBarcodeFormat()); ParsedResult result = ResultParser.parseResult(theResult); assertEquals(expected, result); }
final String fillInCustomSearchURL(String text) { if (customProductSearch == null) { return text; // ? } try { text = URLEncoder.encode(text, "UTF-8"); } catch (UnsupportedEncodingException e) { // can't happen; UTF-8 is always supported. Continue, I guess, without encoding } String url = text; if (rawResult != null) { // Replace %f but only if it doesn't seem to be a hex escape sequence. This remains // problematic but avoids the more surprising problem of breaking escapes url = url.replace("%f(?![0-9a-f])", rawResult.getBarcodeFormat().toString()); if (url.contains("%t")) { ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); url = url.replace("%t", parsedResultAgain.getType().toString()); } } // Replace %s last as it might contain itself %f or %t url = customProductSearch.replace("%s", url); return url; }
private static void assertCorrectImage2result(String path, ExpandedProductParsedResult expected) throws IOException, NotFoundException { RSSExpandedReader rssExpandedReader = new RSSExpandedReader(); File file = new File(path); if (!file.exists()) { // Support running from project root too file = new File("core", path); } BufferedImage image = ImageIO.read(file); BinaryBitmap binaryMap = new BinaryBitmap(new GlobalHistogramBinarizer(new BufferedImageLuminanceSource(image))); int rowNumber = binaryMap.getHeight() / 2; BitArray row = binaryMap.getBlackRow(rowNumber, null); Result theResult = rssExpandedReader.decodeRow(rowNumber, row, null); assertSame(BarcodeFormat.RSS_EXPANDED, theResult.getBarcodeFormat()); ParsedResult result = ResultParser.parseResult(theResult); assertEquals(expected, result); }
private void encodeFromStreamExtra(Intent intent) throws WriterException { format = BarcodeFormat.QR_CODE; Bundle bundle = intent.getExtras(); if (bundle == null) { throw new WriterException("No extras"); } Uri uri = bundle.getParcelable(Intent.EXTRA_STREAM); if (uri == null) { throw new WriterException("No EXTRA_STREAM"); } byte[] vcard; String vcardString; try { InputStream stream = activity.getContentResolver().openInputStream(uri); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int bytesRead; while ((bytesRead = stream.read(buffer)) > 0) { baos.write(buffer, 0, bytesRead); } vcard = baos.toByteArray(); vcardString = new String(vcard, 0, vcard.length, "UTF-8"); } catch (IOException ioe) { throw new WriterException(ioe); } Log.d(TAG, "Encoding share intent content:"); Log.d(TAG, vcardString); Result result = new Result(vcardString, vcard, null, BarcodeFormat.QR_CODE); ParsedResult parsedResult = ResultParser.parseResult(result); if (!(parsedResult instanceof AddressBookParsedResult)) { throw new WriterException("Result was not an address"); } encodeQRCodeContents((AddressBookParsedResult) parsedResult); if (contents == null || contents.isEmpty()) { throw new WriterException("No content to encode"); } }
String fillInCustomSearchURL(String text) { if (customProductSearch == null) { return text; // ? } String url = customProductSearch.replace("%s", text); if (rawResult != null) { url = url.replace("%f", rawResult.getBarcodeFormat().toString()); if (url.contains("%t")) { ParsedResult parsedResultAgain = ResultParser.parseResult(rawResult); url = url.replace("%t", parsedResultAgain.getType().toString()); } } return url; }
private void handleDecodeInternally(Result rawResult, Bitmap barcode) { /* mTimer.cancel(); */ String parsedResult = ResultParser.parseResult(rawResult).toString(); /* Intent intent = new Intent(this, MainGlassActivity.class); intent.putExtra("qr_type", parsedResult.getType().toString()); intent.putExtra("qr_data", parsedResult.toString()); startActivityForResult(intent, 2); */ List<String> ar; parsedResult = parsedResult.replaceAll("[^-?0-9]+", " "); ar = Arrays.asList(parsedResult.trim().split(" ")); if (ar.size() > 0){ mViewfinderView.resultText = getLocationDescription(ar.get(0)); } else { Log.d(TAG, "No valid Id was found in the QR Code."); } this.onPause(); SurfaceView surfaceView = (SurfaceView) tmpConvertView.findViewById(R.id.preview_view); SurfaceHolder surfaceHolder = surfaceView.getHolder(); if (mHasSurface) { // The activity was paused but not stopped, so the surface still exists. Therefore // surfaceCreated() won't be called, so init the camera here. initCamera(surfaceHolder); } else { // Install the callback and wait for surfaceCreated() to init the camera. surfaceHolder.addCallback(CaptureActivity.this); } this.onResume(); }
private void encodeFromStreamExtra(Intent intent) throws WriterException { format = BarcodeFormat.QR_CODE; Bundle bundle = intent.getExtras(); if (bundle == null) { throw new WriterException("No extras"); } Uri uri = (Uri) bundle.getParcelable(Intent.EXTRA_STREAM); if (uri == null) { throw new WriterException("No EXTRA_STREAM"); } byte[] vcard; String vcardString; try { InputStream stream = activity.getContentResolver().openInputStream(uri); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int bytesRead; while ((bytesRead = stream.read(buffer)) > 0) { baos.write(buffer, 0, bytesRead); } vcard = baos.toByteArray(); vcardString = new String(vcard, 0, vcard.length, "UTF-8"); } catch (IOException ioe) { throw new WriterException(ioe); } Log.d(TAG, "Encoding share intent content:"); Log.d(TAG, vcardString); Result result = new Result(vcardString, vcard, null, BarcodeFormat.QR_CODE); ParsedResult parsedResult = ResultParser.parseResult(result); if (!(parsedResult instanceof AddressBookParsedResult)) { throw new WriterException("Result was not an address"); } encodeQRCodeContents((AddressBookParsedResult) parsedResult); if (contents == null || contents.length() == 0) { throw new WriterException("No content to encode"); } }
private void encodeFromStreamExtra(Intent intent) throws WriterException { format = BarcodeFormat.QR_CODE; Bundle bundle = intent.getExtras(); if (bundle == null) { throw new WriterException("No extras"); } Uri uri = bundle.getParcelable(Intent.EXTRA_STREAM); if (uri == null) { throw new WriterException("No EXTRA_STREAM"); } byte[] vcard; String vcardString; try { InputStream stream = activity.getContentResolver().openInputStream(uri); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[2048]; int bytesRead; while ((bytesRead = stream.read(buffer)) > 0) { baos.write(buffer, 0, bytesRead); } vcard = baos.toByteArray(); vcardString = new String(vcard, 0, vcard.length, "UTF-8"); } catch (IOException ioe) { throw new WriterException(ioe); } Log.d(TAG, "Encoding share intent content:"); Log.d(TAG, vcardString); Result result = new Result(vcardString, vcard, null, BarcodeFormat.QR_CODE); ParsedResult parsedResult = ResultParser.parseResult(result); if (!(parsedResult instanceof AddressBookParsedResult)) { throw new WriterException("Result was not an address"); } encodeQRCodeContents((AddressBookParsedResult) parsedResult); if (contents == null || contents.length() == 0) { throw new WriterException("No content to encode"); } }
@Override public void onResult(ZxingScanView scanView, Result result, Bitmap barcode, float scaleFactor) { ParsedResult parsedResult = ResultParser.parseResult(result); final String format = "格式:" + result.getBarcodeFormat().toString(); final String type = "类型:" + parsedResult.getType().toString(); DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); final String date = "时间:" + formatter.format(new Date(result.getTimestamp())); String meta = ""; Map<ResultMetadataType, Object> metadata = result.getResultMetadata(); if (metadata != null) { StringBuilder metadataText = new StringBuilder(20); for (Map.Entry<ResultMetadataType, Object> entry : metadata.entrySet()) { if (DISPLAYABLE_METADATA_TYPES.contains(entry.getKey())) { metadataText.append(entry.getValue()).append('\n'); } } if (metadataText.length() > 0) { metadataText.setLength(metadataText.length() - 1); meta = metadataText.toString(); } } CharSequence displayContents = parsedResult.getDisplayResult(); Toast.makeText(this, format + "\n" + type + "\n" + date + "\n" + meta + "\n" + displayContents, Toast.LENGTH_SHORT).show(); // 重新扫描 scanView.restartScanDelay(3000); }
public static ResultProcessor<? extends ParsedResult> makeResultProcessor( Context context, Result result, Uri photoUri) { ParsedResult parsedResult = ResultParser.parseResult(result); switch (parsedResult.getType()) { /*case PRODUCT: return new ProductResultProcessor(context, (ProductParsedResult) parsedResult, result, photoUri);*/ case URI: return new UriResultProcessor(context, (URIParsedResult) parsedResult, result, photoUri); /*case ISBN: return new IsbnResultProcessor(context, (ISBNParsedResult) parsedResult, result, photoUri);*/ case SMS: case GEO: case TEL: case CALENDAR: case ADDRESSBOOK: case EMAIL_ADDRESS: case WIFI: // currently unsupported so we let them fall through default: return new TextResultProcessor(context, parsedResult, result, photoUri); } }