在android中拍照

时间:2013-12-03 06:39:51

标签: android android-camera android-camera-intent

是否可以在没有打开相机的情况下拍照?我尝试了意图,但它的开放相机,但我不想打开相机。我试过跟随

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(takePictureIntent, 1);

然后接收活动。但是如何打开相机?

1 个答案:

答案 0 :(得分:7)

是的,可以使用SurfaceHolder.Callback接口。 和

        @TargetApi(9)
    public void surfaceCreated(SurfaceHolder holder){
        Log.e(TAG, "surfaceCreated");
        mCamera = Camera.open(CaptureCameraImage.cameraID);
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        Log.e(TAG, "surfaceChanged");

        if (mPreviewRunning){
            mCamera.stopPreview();
        }

        try{
            mCamera.setPreviewDisplay(holder);
        }catch (Exception e){
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        mCamera.startPreview();
        mPreviewRunning = true;
        mCamera.takePicture(null, mPictureCallback, mPictureCallback);
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        Log.e(TAG, "surfaceDestroyed");
        //mCamera.stopPreview();
        //mPreviewRunning = false;
        //mCamera.release();
    }

为此使用虚拟表面视图,以便您可以从背景拍摄照片。

 SurfaceView dummy=new SurfaceView(context);
  dummy.addCallback(this);

并对这个虚拟Surfaceview进行一些研究。