how to customize CameraView for android ZBar QrCode Reader

android, java, zbar, zbar-sdk

Solution

First of all remove the line that seems to me to acquire camera access: `mCamera = getCameraInstance();`. You don't want to do that as the `CameraPreview` will do it for you.

I wouldn't use a FrameLayout as items are put one after the other and you want to put your cameraPreview at last. So you should have a `LinearLayout` in another `RelativeLayout` (I know, it's not efficient, but that's fine for now). Something like (your main.xml layout):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <LinearLayout
        android:id="@+id/zbar_layout_area"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    </LinearLayout>

    <ImageView
        android:id="@+id/my_own_image_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <TextView
        android:id="@+id/my_own_text_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" />

</RelativeLayout>

Now, you would need to put the CameraPreview in `zbar_layout_area`. For this reason, try to change the code to (blind coding):

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (!isCameraAvailable()) {
        // Cancel request if there is no rear-facing camera.
        cancelRequest();
        return;
    }

    // Hide the window title.
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setContentView(R.layout.main);

    mAutoFocusHandler = new Handler();

    // Create and configure the ImageScanner;
    setupScanner();

    // Create a RelativeLayout container that will hold a SurfaceView,
    // and set it as the content of our activity.
    mPreview = new CameraPreview(this, this, autoFocusCB);
    LinearLayout zbarLayout = (LinearLayout) findViewById(R.id.zbar_layout_area);
    mPreview.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
    zbarLayout.addView(mPreview);
}

Also make sure you have set enough prermissions:

<uses-permission android:name="android.permission.CAMERA" />

    <uses-feature
        android:name="android.hardware.camera"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.camera.autofocus"
        android:required="false" />

Problem

I am using Zbar for reading QRCode. I use this https://github.com/DushyanthMaguluru/ZBarScanner example for my activity. The Question is how can I show cameraView on my FrameLayout ? EDIT: ``` @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); mCamera = getCameraInstance(); if(!isCameraAvailable()) { cancelRequest(); return; } requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); mAutoFocusHandler = new Handler(); setupScanner(); mPreview = new CameraPreview(this, this, autoFocusCB); //setContentView(mPreview); FrameLayout preview = (FrameLayout)findViewById(R.id.cameraPreview); preview.addView(mPreview); } ```

Original source

Related problems