How to add a rectangular overlay in the camera app?

How to add a rectangular overlay (which should be larger as a rectangular frame) in the camera preview? My application consists of a button that opens the camera when pressed. I need an overlay in this camera preview.

Code for java file:

public class MainActivity extends Activity { Button b; Intent i; Bitmap bmp; final static int cameraData = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); b = (Button) findViewById(R.id.button); InputStream is = getResources().openRawResource(R.drawable.ic_launcher); bmp = BitmapFactory.decodeStream(is); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(i, cameraData); } }); } } 

The layout file is as follows:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_gravity="center" android:text="click to take photo" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="click" android:layout_gravity="center" /> </LinearLayout> 
+6
source share
2 answers

You need to create your own preview by extending the SurfaceView class.

See the link below to help you.

Custom android camera

Take FrameLayout with SurfaceView as a child.and customize according to your needs

+4
source

First create an open class that extends the view. Inside the onDraw () method, draw your rectangle. For instance:

 public class Box extends View { private Paint paint = new Paint(); Box(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { // Override the onDraw() Method super.onDraw(canvas); paint.setStyle(Paint.Style.STROKE); paint.setColor(Color.GREEN); paint.setStrokeWidth(10); //center int x0 = canvas.getWidth()/2; int y0 = canvas.getHeight()/2; int dx = canvas.getHeight()/3; int dy = canvas.getHeight()/3; //draw guide box canvas.drawRect(x0-dx, y0-dy, x0+dx, y0+dy, paint); } } 

Then, in camera preview mode, enter the instance in your Box class

 Box box = new Box(this); 

Then

 addContentView(box, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 

A green rectangle will be drawn on the camera’s preview. Good luck Here is the link that helped me draw a camera preview

+13
source

All Articles