Cómo capturar la imagen automáticamente en Android

Posible duplicado:
Capture la imagen con la cámara frontal sin abrir la aplicación de la cámara en android

Mi problema es que puedo hacer la captura sólo con Intent para lanzar la cámara y haga clic en el botón para capturar la imagen. ¿Es posible hacerlo automáticamente al no hacer clic en un botón o qué códigos puedo agregar para hacer esto? gracias por adelantado.

2 Solutions collect form web for “Cómo capturar la imagen automáticamente en Android”

public class CameraView extends Activity implements SurfaceHolder.Callback, OnClickListener{ private static final String TAG = "CameraTest"; Camera mCamera; boolean mPreviewRunning = false; @SuppressWarnings("deprecation") public void onCreate(Bundle icicle){ super.onCreate(icicle); Log.e(TAG, "onCreate"); getWindow().setFormat(PixelFormat.TRANSLUCENT); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.cameraview); ImageView img = (ImageView) findViewById(R.id.blankImage); if(CaptureCameraImage.isBlack) img.setBackgroundResource(android.R.color.black); else img.setBackgroundResource(android.R.color.white); mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera); mSurfaceView.setOnClickListener(this); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState){ super.onRestoreInstanceState(savedInstanceState); } Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { // TODO Auto-generated method stub if (data != null){ //Intent mIntent = new Intent(); //mIntent.putExtra("image",imageData); mCamera.stopPreview(); mPreviewRunning = false; mCamera.release(); try{ BitmapFactory.Options opts = new BitmapFactory.Options(); Bitmap bitmap= BitmapFactory.decodeByteArray(data, 0, data.length,opts); bitmap = Bitmap.createScaledBitmap(bitmap, 300, 300, false); int width = bitmap.getWidth(); int height = bitmap.getHeight(); int newWidth = 300; int newHeight = 300; // calculate the scale - in this case = 0.4f float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // createa matrix for the manipulation Matrix matrix = new Matrix(); // resize the bit map matrix.postScale(scaleWidth, scaleHeight); // rotate the Bitmap matrix.postRotate(-90); Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true); CaptureCameraImage.image.setImageBitmap(resizedBitmap); }catch(Exception e){ e.printStackTrace(); } //StoreByteImage(mContext, imageData, 50,"ImageName"); //setResult(FOTO_MODE, mIntent); setResult(585); finish(); } } }; protected void onResume(){ Log.e(TAG, "onResume"); super.onResume(); } protected void onSaveInstanceState(Bundle outState){ super.onSaveInstanceState(outState); } protected void onStop(){ Log.e(TAG, "onStop"); super.onStop(); } @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"); // XXX stopPreview() will crash if preview is not running if (mPreviewRunning){ mCamera.stopPreview(); } Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(300, 300); if(CaptureCameraImage.cameraID == 0){ String stringFlashMode = p.getFlashMode(); if (stringFlashMode.equals("torch")) p.setFlashMode("on"); // Light is set off, flash is set to normal 'on' mode else p.setFlashMode("torch"); } mCamera.setParameters(p); 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(); } private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; public void onClick(View v) { // TODO Auto-generated method stub mCamera.takePicture(null, mPictureCallback, mPictureCallback); } } 

Necesita llamar a esta actividad También compruebe debajo de la línea de código mCamera.takePicture (null, mPictureCallback, mPictureCallback); Se llama dos veces 1) Si desea que la interacción del usuario tome la imagen que necesita para confirmar la primera ocurrencia 2) Si no quiere interacción con el usuario (Se tomará la foto tan pronto como se inicie) Puede encontrar todo el proyecto en

https://github.com/sandipmjadhav/CaptureImage

Gracias

Sí, puede tomar imágenes automáticamente sin pulsar el botón de captura. Su Actividad en la que va a capturar la imagen debe extends Activity e implements PictureCallback, ShutterCallback .

Tienes que usar el siguiente método

 videoPreview.getCamera().takePicture(this, null, this); 

VideoPreview es una instancia de la clase que he creado, que extends SurfaceView e implementa SurfaceHolder.Callback

Camera.open(); Está también en la clase VideoPriview

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.