How to build a simple Android barcode scanning app with Android camera API and Dynamsoft Barcode Reader.
Learn more about Dynamsoft Barcode Reader SDK >
Call startDecodingFrame()
to initialize the environment and call appendFrame()
repeatedly to add the preview images.
cameraView.addFrameProcessor(new FrameProcessor() {
@SuppressLint("NewApi")
@Override
public void process(@NonNull final Frame frame) {
try {
if (isDetected && isCameraOpen) {
YuvImage yuvImage = new YuvImage(frame.getData(), ImageFormat.NV21,
frame.getSize().getWidth(), frame.getSize().getHeight(), null);
if (width == 0) {
width = yuvImage.getWidth();
height = yuvImage.getHeight();
stride = yuvImage.getStrides()[0];
reader.setErrorCallback(errorCallback, null);
reader.setTextResultCallback(textResultCallback, null);
reader.setIntermediateResultCallback(intermediateResultCallback, null);
// start a new thread to decode barcodes
reader.startFrameDecoding(10, 10, width, height, stride, EnumImagePixelFormat.IPF_NV21, "");
} else {
PublicRuntimeSettings s = reader.getRuntimeSettings();
// add new image frames for barcode scanning
int frameid = reader.appendFrame(yuvImage.getYuvData());
Log.i("FrameId", frameid + "");
}
if (bUpateDrawBox) {
bUpateDrawBox = false;
Message message = handler.obtainMessage();
Rect imageRect = new Rect(0, 0, width, height);
message.obj = imageRect;
message.what = 0x001;
handler.sendMessage(message);
}
isDetected = true;
}
} catch (Exception e) {
e.printStackTrace();
}
}
});