diff --git a/README.md b/README.md
index 75a07c2..3623bdf 100644
--- a/README.md
+++ b/README.md
@@ -27,6 +27,7 @@ Arguments:
text_instructions: "OPTIONAL Instruction Text - default = 'Please point your camera at the QR code.'", // Android only
camera: "front" || "back" // defaults to "back"
flash: "on" || "off" || "auto" // defaults to "auto". See Quirks
+ drawSight : "true" || "false" //default use true, create a red/green sight to center barcode
}
```
diff --git a/android/ZBarScannerActivity.java b/android/ZBarScannerActivity.java
index b04fa97..0146510 100644
--- a/android/ZBarScannerActivity.java
+++ b/android/ZBarScannerActivity.java
@@ -8,6 +8,10 @@ import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.content.res.Resources;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Paint.Style;
+import android.graphics.drawable.ShapeDrawable;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.PreviewCallback;
@@ -18,8 +22,12 @@ import android.util.Log;
import android.view.Gravity;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
+import android.view.View;
import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import net.sourceforge.zbar.ImageScanner;
@@ -53,6 +61,16 @@ implements SurfaceHolder.Callback {
// Customisable stuff
String whichCamera;
String flashMode;
+
+
+ /* START - ALMAVIVA */
+ RelativeLayout relativeLayout;
+ RelativeLayout line;
+ View parent;
+ int width;
+ int height;
+ boolean drawSight = false;
+ /* END - ALMAVIVA */
// For retrieving R.* resources, from the actual app package
// (we can't use actual.application.package.R.* in our code as we
@@ -69,6 +87,9 @@ implements SurfaceHolder.Callback {
// Activity Lifecycle ----------------------------------------------
+ /* (non-Javadoc)
+ * @see android.app.Activity#onCreate(android.os.Bundle)
+ */
@Override
public void onCreate (Bundle savedInstanceState)
{
@@ -84,6 +105,7 @@ implements SurfaceHolder.Callback {
String textInstructions = params.optString("text_instructions");
whichCamera = params.optString("camera");
flashMode = params.optString("flash");
+ drawSight = params.optString("drawSight") != null ? Boolean.valueOf(params.optString("drawSight").toLowerCase()) : false;
// Initiate instance variables
autoFocusHandler = new Handler();
@@ -120,6 +142,65 @@ implements SurfaceHolder.Callback {
((FrameLayout) findViewById(getResourceId("id/csZbarScannerView"))).addView(scannerSurface);
findViewById(getResourceId("id/csZbarScannerTitle")).bringToFront();
findViewById(getResourceId("id/csZbarScannerInstructions")).bringToFront();
+
+ /* START - ALMAVIVA */
+ // Creating a new RelativeLayout
+ if(drawSight){
+ relativeLayout = new RelativeLayout(this);
+ line = new RelativeLayout(this);
+
+ // Defining the RelativeLayout layout parameters.
+ // In this case I want to fill its parent
+
+ parent = ((FrameLayout) findViewById(getResourceId("id/csZbarScannerView")));
+
+
+ parent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+
+ @Override
+ public void onGlobalLayout() {
+ // Ensure you call it only once :
+ parent.getViewTreeObserver().removeGlobalOnLayoutListener(this);
+
+ width = parent.getWidth();
+ height = parent.getHeight();
+ double dim = width < height ? (width / 1.2) : (height / 1.2);
+ RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams((int)dim,(int)dim);
+ rlp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
+ rlp.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
+ rlp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ relativeLayout.setGravity(Gravity.CENTER);
+ relativeLayout.setLayoutParams(rlp);
+ relativeLayout.invalidate();
+ relativeLayout.requestLayout();
+
+ RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(((int)dim - 16),8);
+ lp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
+ lp.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
+ lp.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE);
+ line.setGravity(Gravity.CENTER);
+ line.setLayoutParams(lp);
+ line.setBackgroundColor(Color.RED);
+ line.invalidate();
+ line.requestLayout();
+ }
+ });
+
+ ShapeDrawable rectShapeDrawable = new ShapeDrawable(); // pre defined class
+ // get paint
+ Paint paint = rectShapeDrawable.getPaint();
+
+ // set border color, stroke and stroke width
+ paint.setColor(Color.GREEN);
+ paint.setStyle(Style.STROKE);
+ paint.setStrokeWidth(8); // you can change the value of 5
+ relativeLayout.setBackgroundDrawable(rectShapeDrawable);
+
+
+ relativeLayout.addView(line);
+ ((RelativeLayout) findViewById(getResourceId("id/csZbarScannerViewContainer"))).addView(relativeLayout);
+ }
+ /* END - ALMAVIVA */
}
@Override
diff --git a/android/res/layout/cszbarscanner.xml b/android/res/layout/cszbarscanner.xml
index 5e26bca..168e92d 100644
--- a/android/res/layout/cszbarscanner.xml
+++ b/android/res/layout/cszbarscanner.xml
@@ -1,38 +1,44 @@
-
-
-
-
-
-
-
+ android:layout_height="match_parent" >
+
+
+
+
+
+
+
+
+
diff --git a/ios/CsZBar.m b/ios/CsZBar.m
index 0af3803..c83e4fd 100644
--- a/ios/CsZBar.m
+++ b/ios/CsZBar.m
@@ -61,8 +61,8 @@
}
// Hack to hide the bottom bar's Info button... http://stackoverflow.com/a/16353530
- UIView *infoButton = [[[[[self.scanReader.view.subviews objectAtIndex:1] subviews] objectAtIndex:0] subviews] objectAtIndex:3];
- [infoButton setHidden:YES];
+ //UIView *infoButton = [[[[[self.scanReader.view.subviews objectAtIndex:1] subviews] objectAtIndex:0] subviews] objectAtIndex:3];
+ //[infoButton setHidden:YES];
[self.viewController presentModalViewController: self.scanReader animated: YES];
}
diff --git a/ios/libzbar.a b/ios/libzbar.a
index defbed4..7533efb 100644
Binary files a/ios/libzbar.a and b/ios/libzbar.a differ