Android 通过定制照相机和商店拍照,以便在下一次活动中展示

Android 通过定制照相机和商店拍照,以便在下一次活动中展示,android,camera,Android,Camera,如何使用自定义照相机在单击时拍摄和保存图像,并在下一活动的屏幕上显示保存的图像。(带PostTask) 这是我尝试过的。。。 1.摄像活动 public static final int CAMERA_REQUEST = 1000; private FrameLayout cameraPreview; private Camera mCamera; private CameraPreview mCameraPreview; private Camera_Activity screen; pr

如何使用自定义照相机在单击时拍摄和保存图像,并在下一活动的屏幕上显示保存的图像。(带PostTask)

这是我尝试过的。。。 1.摄像活动

public static final int CAMERA_REQUEST = 1000; 
private FrameLayout cameraPreview;
private Camera mCamera;
private CameraPreview mCameraPreview;
private  Camera_Activity screen;
private final Context context = this;


 capture_snap.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            mCamera.takePicture(null, null, mPicture);
             PostTask pt = new PostTask();
            pt.execute(screen);
            pdialog = new ProgressDialog(Camera_Activity.this);
            pdialog.setCancelable(false);
            pdialog.setMessage("Please Wait...");
            pdialog.show();*/
         }
    });  

private Camera getCameraInstance() {
    Camera camera = null;
    try {
               camera = Camera.open();

    } catch (Exception e) {
        // cannot get camera or does not exist
    }
    return camera;
}

PictureCallback mPicture = new PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        File pictureFile = getOutputMediaFile();
        if (pictureFile == null) {
            System.out.println("picture file is null");
            return;
        }
        try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
        } catch (FileNotFoundException e) {

        } catch (IOException e) {
        }
    }
};

private static File getOutputMediaFile() {
    File mediaStorageDir = new File(
            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),
            "MyCameraApp");
    if (!mediaStorageDir.exists()) {
        if (!mediaStorageDir.mkdirs()) {
            Log.d("MyCameraApp", "failed to create directory");
            return null;
        }
    }
    // Create a media file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss")
            .format(new Date());
    File mediaFile;
    mediaFile = new File(mediaStorageDir.getPath() + File.separator
            + "IMG_" + timeStamp + ".jpeg");

    return mediaFile;
}

private class PostTask extends AsyncTask<Activity, String, String>
 {

    @Override
    protected String doInBackground(Activity... params) {


        return "";
    }


    protected void onPostExecute(String result) {

                 if(pdialog != null)
                 {
                     pdialog.setCancelable(true);
                     pdialog.dismiss();

                    Intent i=new Intent(getApplicationContext(),Camera_view.class);
                    //i.putExtra(mediaFile, mediaFile);
                    startActivity(i);



                } 
             else{
                 pdialog.setCancelable(true);
                 pdialog.dismiss();
                    MessageDialog.showMessage("Alert",
                            "Incorrect Path", Camera_Activity.screen);

                }
            } 
    }

private void releaseCamera(){
    if (mCamera != null){
        mCameraPreview.getHolder().removeCallback(mCameraPreview);
        mCamera.release();        // release the camera for other applications
    }
}

3.相机视图//这里我正在尝试显示捕获的图像…

完成本教程,伙计


我不明白为什么我要投票。我已经试过了,但我想使用定制相机,在拍摄完图像后,在下一个屏幕上显示拍摄的图像:(@BhanuSharma@Banku我只是对这家伙有个想法,试着根据你的需要改变一些逻辑,伙计,这是定制相机用的
    public class CameraPreview extends SurfaceView implements
SurfaceHolder.Callback {
private SurfaceHolder mSurfaceHolder;
private Camera mCamera;

// Constructor that obtains context and camera
@SuppressWarnings("deprecation")
public CameraPreview(Context context, Camera camera) {
super(context);
this.mCamera = camera;
this.mSurfaceHolder = this.getHolder();
this.mSurfaceHolder.addCallback(this);
this.mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

@Override
public void surfaceCreated(SurfaceHolder surfaceHolder) {
try {
    mCamera.setPreviewDisplay(surfaceHolder);
    mCamera.startPreview();
} catch (IOException e) {
    // left blank for now
}
}

@Override
public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
    //mCamera.stopPreview();
    //mCamera.release();
    if(mCamera != null){
        mCamera.stopPreview();
        mCamera.setPreviewCallback(null);
        mCamera.release();  
    }
}

public void onPause() {
    mCamera.stopPreview();
    //mCamera = null;
}

@Override
public void surfaceChanged(SurfaceHolder surfaceHolder, int format,
    int width, int height) {
// start preview with new settings
try {
    mCamera.setDisplayOrientation(90);
    mCamera.setPreviewDisplay(surfaceHolder);
    mCamera.startPreview();
} catch (Exception e) {
    // intentionally left blank for a test
}
}
}