public void onPreviewFrame(byte[] data, Camera camera) { Camera.Parameters parameters = camera.getParameters(); Camera.Size size = parameters.getPreviewSize(); Image barcode = new Image(size.width, size.height, "Y800"); barcode.setData(data); int result = mScanner.scanImage(barcode); if (result != 0) { mCamera.cancelAutoFocus(); mCamera.setPreviewCallback(null); mCamera.stopPreview(); mPreviewing = false; SymbolSet syms = mScanner.getResults(); for (Symbol sym : syms) { String symData = sym.getData(); if (!TextUtils.isEmpty(symData)) { Intent dataIntent = new Intent(); dataIntent.putExtra(SCAN_RESULT, symData); dataIntent.putExtra(SCAN_RESULT_TYPE, sym.getType()); setResult(Activity.RESULT_OK, dataIntent); finish(); break; } } } }
@SuppressWarnings("ConstantConditions") public void onPreviewFrame(byte[] data, Camera incomingCamera) { try { if (System.currentTimeMillis() > lastSnapshotTime) { lastSnapshotTime = System.currentTimeMillis() + SNAPSHOT_DELAY; Camera.Parameters cameraParameters = incomingCamera.getParameters(); Camera.Size previewSize = cameraParameters.getPreviewSize(); Image barcode = new Image(previewSize.width, previewSize.height, GREY_COLOR_SPACE); barcode.setData(data); if (scanner.scanImage(barcode) != 0) { SymbolSet scannerResults = scanner.getResults(); if (vibrator != null) vibrator.vibrate(VIBRATE_TIME); for (Symbol symbol : scannerResults) if (scannerListener == null) Toast.makeText(getActivity(), symbol.getData(), Toast.LENGTH_LONG).show(); else scannerListener.onDataReceive(symbol.getData(), symbol.getType()); } } } catch (Exception e) { e.printStackTrace(); } }