diff --git a/android/ZBarScannerActivity.java b/android/ZBarScannerActivity.java index 7566840..1cbc535 100644 --- a/android/ZBarScannerActivity.java +++ b/android/ZBarScannerActivity.java @@ -8,10 +8,6 @@ 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; @@ -24,9 +20,7 @@ import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; -import android.view.ViewTreeObserver; import android.widget.FrameLayout; -import android.widget.RelativeLayout; import android.widget.TextView; import net.sourceforge.zbar.ImageScanner; @@ -61,15 +55,6 @@ implements SurfaceHolder.Callback { 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 // don't know the applciation package name when writing this plugin). @@ -98,6 +83,7 @@ implements SurfaceHolder.Callback { catch (JSONException e) { params = new JSONObject(); } String textTitle = params.optString("text_title"); String textInstructions = params.optString("text_instructions"); + Boolean drawSight = params.optBoolean("drawSight", true); whichCamera = params.optString("camera"); flashMode = params.optString("flash"); @@ -107,11 +93,19 @@ implements SurfaceHolder.Callback { scanner.setConfig(0, Config.X_DENSITY, 3); scanner.setConfig(0, Config.Y_DENSITY, 3); - drawSight = params.optString("drawSight") != null ? Boolean.valueOf(params.optString("drawSight").toLowerCase()) : true; - // Set content view setContentView(getResourceId("layout/cszbarscanner")); + // Update view with customisable strings + TextView view_textTitle = (TextView) findViewById(getResourceId("id/csZbarScannerTitle")); + TextView view_textInstructions = (TextView) findViewById(getResourceId("id/csZbarScannerInstructions")); + view_textTitle.setText(textTitle); + view_textInstructions.setText(textInstructions); + + // Draw/hide the sight + if(!drawSight) { + findViewById(getResourceId("id/csZbarScannerSight")).setVisibility(View.INVISIBLE); + } // Create preview SurfaceView scannerSurface = new SurfaceView (this) { @@ -130,64 +124,14 @@ implements SurfaceHolder.Callback { scannerSurface.getHolder().addCallback(this); // Add preview SurfaceView to the screen - ((FrameLayout) findViewById(getResourceId("id/csZbarScannerView"))).addView(scannerSurface); - - /* 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(8,((int)dim - 16)); - 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 */ + FrameLayout scannerView = (FrameLayout) findViewById(getResourceId("id/csZbarScannerView")); + scannerView.addView(scannerSurface); + findViewById(getResourceId("id/csZbarScannerTitle")).bringToFront(); + findViewById(getResourceId("id/csZbarScannerInstructions")).bringToFront(); + findViewById(getResourceId("id/csZbarScannerSightContainer")).bringToFront(); + findViewById(getResourceId("id/csZbarScannerSight")).bringToFront(); + scannerView.requestLayout(); + scannerView.invalidate(); } @Override @@ -294,12 +238,7 @@ implements SurfaceHolder.Callback { private AutoFocusCallback autoFocusCb = new AutoFocusCallback() { public void onAutoFocus(boolean success, Camera camera) { - try{ - camera.cancelAutoFocus(); - autoFocusHandler.postDelayed(doAutoFocus, autoFocusInterval); - }catch(Exception e){ - - } + autoFocusHandler.postDelayed(doAutoFocus, autoFocusInterval); } }; diff --git a/android/res/layout/cszbarscanner.xml b/android/res/layout/cszbarscanner.xml index 7292e7a..4566d31 100644 --- a/android/res/layout/cszbarscanner.xml +++ b/android/res/layout/cszbarscanner.xml @@ -1,15 +1,53 @@ - + android:layout_height="match_parent" + android:background="@color/csZbarScannerBackground" > - + - + - + + + + + + +