I am implementing Qr code scanner to camera application similar to ios11. I am scanning the Qr code when focus ring appears in the camera app.
/**
* Show AF target in center of preview.
*/
private void startPassiveFocus() {
// TODO: make mFocusController final and remove null check.
if (mFocusController == null) {
return;
}
// TODO: Some passive focus scans may trigger on a location
// instead of the center of the screen.
mFocusController.showPassiveFocusAtCenter();
if(decodeFrameTask != null){
if(decodeFrameTask.getStatus() == AsyncTask.Status.RUNNING){
// QR scan currently in progress
stopQRCodeReader();
}
} else {
startQrCodeReader();
}
}
I am calling asynchronously to decode the zxing Reader
public DecodeFrameTask(CaptureModule view, AppController apController, CameraActivity mActivity) {
mCaptureModule = new WeakReference<>(view);
appController = apController;
runAsync = 0;
activity = mActivity;
}
protected Result doInBackground(byte[]... params) {
final CaptureModule view = mCaptureModule.get();
final PlanarYUVLuminanceSource source =
view.mCameraManager.buildLuminanceSource(activity.getScreenPreviewByteData(), appController.getCameraAppUI().getSurfaceWidth(),
appController.getCameraAppUI().getSurfaceHeight());
final HybridBinarizer hybBin = new HybridBinarizer(source);
final BinaryBitmap bitmap = new BinaryBitmap(hybBin);
try {
return view.mQRCodeReader.decode(bitmap);
} catch (ChecksumException e) {
Log.d(TAG, "ChecksumException", e);
} catch (NotFoundException e) {
Log.d(TAG, "No QR Code found");
} catch (FormatException e) {
Log.d(TAG, "FormatException", e);
} finally {
view.mQRCodeReader.reset();
}
}
return null;
}
protected void onPostExecute(Result result) {
super.onPostExecute(result);
runAsync = 1;
if(result != null){
Log.d(TAG, "QR Text ----->", result.getText());
}else if(result == null){
Log.d(TAG, "Errorreading QRcode ");
}
}
public void startQrCodeReader() {
mQRCodeReader = new QRCodeReader();
if(mAppController != null) {
decodeFrameTask = new DecodeFrameTask(this, mAppController, mActivity);
decodeFrameTask.execute();
}
}
public void stopQRCodeReader() {
if (decodeFrameTask != null) {
decodeFrameTask.cancel(true);
decodeFrameTask = null;
}
}
I am getting result as null.Please let me know where I am going wrong using zxing library to camera application