Tomar una foto con android es bien facil de hacer:
Tomar Foto
Permisos necesarios:
<uses-permission android:name="android.permission.CAMERA" />
Codigo:
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); //3434 es un int que esperaremos como resultado una vez sea tomada la foto. startActivityForResult(intent, 3434);
Resultado:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode == 3434){ super.onActivityResult(requestCode, resultCode, data); Bitmap imagen = (Bitmap) data.getExtras().get("data"); //una vez tenida la imagen hacer lo que se desee con esta. } }
Cortar Imagen
Para poder cortarla podemos modificar el codigo que se uso para tomarla y tendriamos un resultado como este:
Para cortar una foto no necesariamente tiene que haber sido tomada con la camara, se puede tomar una foto de la galeria y cortarla directamente, solo hay que pasarle la url de la misma igual que se hace en este tutorial tomandola de la camara.
protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode == 3434){ super.onActivityResult(requestCode, resultCode, data); Bitmap imagen = (Bitmap) data.getExtras().get("data"); //Este metodo nos retornara la url temporal de la imagen tomada Uri ulrImagen = data.getData(); cropCapturedImage(ulrImagen); }else if(resultCode == 3535){ //Este seria el bitmap de nuestra imagen cortada. Bitmap imagenCortada = (Bitmap) data.getExtras().get("data"); } } public void cropCapturedImage(Uri urlImagen){ //inicializamos nuestro intent Intent cropIntent = new Intent("com.android.camera.action.CROP"); cropIntent.setDataAndType(urlImagen, "image/*"); //Habilitamos el crop en este intent cropIntent.putExtra("crop", "true"); cropIntent.putExtra("aspectX", 1); cropIntent.putExtra("aspectY", 1); //indicamos los limites de nuestra imagen a cortar cropIntent.putExtra("outputX", 400); cropIntent.putExtra("outputY", 250); //True: retornara la imagen como un bitmap, False: retornara la url de la imagen la guardada. cropIntent.putExtra("return-data", true); //iniciamos nuestra activity y pasamos un codigo de respuesta. startActivityForResult(cropIntent, 3535); }
Y asi de simple y sencillo se toma y se corta una imagen con android.