简体   繁体   中英

how to Add button to the camera preview android?

I am developing photography app my requrement is overlay effects to camera preview for that i developed code.in this code i overlay image to the surfaceview.

public class OverlayLiveCamera extends Activity {
       Camera camera;
       LayoutInflater controlInflater = null;
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);

            Preview mPreview = new Preview(this);
            DrawOnTop mDraw = new DrawOnTop(this);
            setContentView(mPreview);
            addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        }


       class Preview extends SurfaceView implements SurfaceHolder.Callback{

            SurfaceHolder mHolder;



            Preview(Context context) {
                super(context);
                // Install a SurfaceHolder.Callback so we get notified when the
                // underlying surface is created and destroyed.
                mHolder = getHolder();
                mHolder.addCallback(this);
                mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
            }



            public void surfaceCreated(SurfaceHolder holder) {
                // The Surface has been created, acquire the camera and tell it where
                // to draw.
                camera = Camera.open();
                try {
                    camera.setPreviewDisplay(holder);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            public void surfaceDestroyed(SurfaceHolder holder) {
                // Surface will be destroyed when we return, so stop the preview.
                // Because the CameraDevice object is not a shared resource, it's very
                // important to release it when the activity is paused.
                camera.stopPreview();
                camera = null;
            }

            public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
                // Now that the size is known, set up the camera parameters and begin
                // the preview.
                Camera.Parameters parameters = camera.getParameters();
                parameters.setPreviewSize(w, h);
                parameters=camera.getParameters();
                camera.setParameters(parameters);
                camera.startPreview();
            }
       }
        class DrawOnTop extends View {

            public DrawOnTop(Context context) {


                super(context);

                // TODO Auto-generated constructor stub
            }

            @Override
            protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
                Bitmap mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.water);
                Paint paint = new Paint();
                paint.setAlpha(100);
                canvas.drawBitmap(mBitmap, 0, 0, paint); 


                super.onDraw(canvas);
            }

        }

my xml code

<FrameLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent">
    <SurfaceView android:id="@+id/surfaceView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></SurfaceView>
    <LinearLayout android:id="@+id/linearLayout1" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
        <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    </LinearLayout>

</FrameLayout>

for it will surfaceview and overlay image but it will not show button and also when i click button the overlay view capture and save into the sd card.

please help me.

U can add the button by using below code..

 <FrameLayout android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="2"
  android:padding="5dip"  
  >
  <com.commonlib.controls.CameraPreview
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_weight="1"
  android:layout_gravity="center"
  android:id="@+id/surface_camera"
  />
  <Button android:id="@+id/target"
    android:layout_gravity="center"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="surfacebuttonview"
    >
    </Button>
</FrameLayout>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM