Diferencia entre revisiones de «Usuario:ManuelRomero/Android»
De WikiEducator
(Página creada con '{{:Usuario:ManuelRomero/CursoJavaUml/nav}} <br> = Programación de aplicaciones orientadas a objetos: UML y JAVA = {{Objetivo| #Comprender el concepto de desarrollar softwar…') |
|||
(7 revisiones intermedias por el mismo usuario no mostrado) | |||
Línea 1: | Línea 1: | ||
− | {{:Usuario:ManuelRomero/ | + | {{:Usuario:ManuelRomero/Android/nav}} |
<br> | <br> | ||
− | = | + | = Desarrollo de aplicaciones con SDK de Android = |
{{Objetivo| | {{Objetivo| | ||
− | # | + | #Desarrollar aplicaciones para dispositivos móviles |
− | + | #Usando el SDK de android}} | |
− | + | ||
− | + | *[[/Android/recursos|Recursos]] | |
− | + | *[[/Android/persistencia|Datos persistentes]] | |
− | }} | + | ===APP DE LA FOTO=== |
− | < | + | <source lang = Java> |
+ | package com.example.imagenes; | ||
+ | |||
+ | |||
+ | import java.io.File; | ||
+ | import java.io.FileNotFoundException; | ||
+ | import java.io.FileOutputStream; | ||
+ | import java.io.IOException; | ||
+ | import java.io.OutputStream; | ||
+ | import java.text.SimpleDateFormat; | ||
+ | import java.util.ArrayList; | ||
+ | import java.util.Date; | ||
+ | import java.util.List; | ||
+ | |||
+ | import android.app.Activity; | ||
+ | import android.content.Intent; | ||
+ | import android.content.pm.ResolveInfo; | ||
+ | import android.database.Cursor; | ||
+ | import android.graphics.Bitmap; | ||
+ | import android.graphics.BitmapFactory; | ||
+ | import android.net.Uri; | ||
+ | import android.os.Bundle; | ||
+ | import android.os.Environment; | ||
+ | import android.provider.MediaStore; | ||
+ | import android.util.Log; | ||
+ | import android.view.View; | ||
+ | import android.widget.ImageView; | ||
+ | import android.widget.Toast; | ||
+ | |||
+ | public class Imagenes extends Activity { | ||
+ | |||
+ | Dialogo mensaje; | ||
+ | Intent intencion; | ||
+ | String ubicacion; | ||
+ | File carpeta; | ||
+ | Uri img; | ||
+ | File foto; | ||
+ | |||
+ | |||
+ | @Override | ||
+ | protected void onCreate(Bundle savedInstanceState) { | ||
+ | super.onCreate(savedInstanceState); | ||
+ | setContentView(R.layout.activity_main); | ||
+ | |||
+ | // Creamos directorios si no existe para guardar nuestras imágenes | ||
+ | carpeta = new File(Environment.getExternalStorageDirectory()+ File.separator + "Imagenes"); | ||
+ | |||
+ | if (!carpeta.exists()) | ||
+ | carpeta.mkdirs(); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | public void clickImagen(View v){ | ||
+ | //Sacamos un DialogFragemen que me pregunta de donde quiero cargar la imagen | ||
+ | mensaje = new Dialogo(); | ||
+ | mensaje.show(getFragmentManager(),"mensaje"); | ||
+ | |||
+ | } | ||
+ | |||
+ | public void origenFoto(int opcion){ | ||
+ | //Iniciamos la actividad foto | ||
+ | //DEFINO el intent | ||
+ | mensaje.dismiss(); | ||
+ | String nombreFoto = obtenerNombre()+".jpg"; | ||
+ | foto = new File(carpeta.toString()+"/"+nombreFoto); | ||
+ | Log.i("FOTO)","Faile name xxxx = " + foto.toString()); | ||
+ | |||
+ | ubicacion=foto.toString(); | ||
+ | img = Uri.fromFile(foto); | ||
+ | switch (opcion){ | ||
+ | |||
+ | case Constantes.ORIGEN_FOTO_CAMARA: | ||
+ | if (hayBug){ | ||
+ | //no paso extras | ||
+ | intencion =new Intent(MediaStore.ACTION_IMAGE_CAPTURE); | ||
+ | startActivityForResult (intencion, Constantes.OK_FOTO); | ||
+ | }else{ | ||
+ | intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); | ||
+ | intencion.putExtra("crop","true"); | ||
+ | startActivityForResult (intencion, Constantes.OK_FOTO); | ||
+ | |||
+ | } | ||
+ | intencion =new Intent(MediaStore.ACTION_IMAGE_CAPTURE); | ||
+ | break; | ||
+ | case Constantes.ORIGEN_FOTO_GALERIA: | ||
+ | intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); | ||
+ | intencion.putExtra("crop","true"); | ||
+ | startActivityForResult (intencion, Constantes.OK_GALERIA); | ||
+ | break; | ||
+ | /* case Constantes.MIS_FOTOS: | ||
+ | |||
+ | Uri dir = Uri.parse(carpeta.toString()); | ||
+ | intencion =new Intent(Intent.ACTION_PICK,dir); | ||
+ | break; | ||
+ | */ | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | //Método captado de http://stackoverflow.com/questions/1910608/android-action-image-capture-intent | ||
+ | //que evita un bug de android en determinadas versiones | ||
+ | |||
+ | public boolean hasImageCaptureBug() { | ||
+ | |||
+ | // list of known devices that have the bug | ||
+ | ArrayList<String> devices = new ArrayList<String>(); | ||
+ | devices.add("android-devphone1/dream_devphone/dream"); | ||
+ | devices.add("generic/sdk/generic"); | ||
+ | devices.add("vodafone/vfpioneer/sapphire"); | ||
+ | devices.add("tmobile/kila/dream"); | ||
+ | devices.add("verizon/voles/sholes"); | ||
+ | devices.add("google_ion/google_ion/sapphire"); | ||
+ | |||
+ | return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/" | ||
+ | + android.os.Build.DEVICE); | ||
+ | |||
+ | } | ||
+ | |||
+ | public void tomarFoto(){ | ||
+ | //Preparamos el fichero donde queremos que se almacene | ||
+ | String nombreFoto = obtenerNombre()+".jpg"; | ||
+ | foto = new File(carpeta.toString()+"/"+nombreFoto); | ||
+ | Log.i("FOTO)","Faile name xxxx = " + foto.toString()); | ||
+ | |||
+ | ubicacion=foto.toString(); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | img = Uri.fromFile(foto); | ||
+ | //Volvemos a usar la fución anterior para evitar el bug | ||
+ | //Si no hay bug ponemos ya la ubicación de la foto | ||
+ | if (hasImageCaptureBug()) { | ||
+ | Log.i("FOTO","antes de intencion hay bug up"); | ||
+ | // intencion.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); | ||
+ | |||
+ | } else { | ||
+ | intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); | ||
+ | intencion.putExtra("crop","true"); | ||
+ | |||
+ | Log.i("FOTO","antes de intencion NOOO bug up"); | ||
+ | } | ||
+ | |||
+ | startActivityForResult(intencion , Constantes.OK_FOTO); | ||
+ | Log.i("tomarFoto","vengo de tomar una foto"); | ||
+ | //Log.i("tomarFoto","imagen guardada en "+fileName); | ||
+ | |||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | private String obtenerNombre() { | ||
+ | // TODO Auto-generated method stub | ||
+ | |||
+ | SimpleDateFormat fechaFormato = new SimpleDateFormat("yyyy_mm_dd_hh_mm_ss"); | ||
+ | Date date = new Date(); | ||
+ | String nombreFecha = fechaFormato.format(date); | ||
+ | return nombreFecha; | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | protected void OnActivityResult(int respuesta, int resultado, Intent data) { | ||
+ | // TODO Auto-generated method stub | ||
+ | ImageView imagen = ((ImageView)findViewById(R.id.Imagen)); | ||
+ | super.onActivityResult(respuesta, resultado, data); | ||
+ | Log.i("FOTO","Códigos devueltos: respuesta: "+respuesta+"Resultado: "+resultado); | ||
+ | Bitmap foto; | ||
+ | |||
+ | |||
+ | |||
+ | if (respuesta == Constantes.OK_FOTO){//Que la respuesta ha ido bien | ||
+ | Log.i("FOTO","resultado de la foto OK"); | ||
+ | if (resultado==RESULT_OK) { //Que venimos del intent de hacer la foto | ||
+ | Log.i("RESULTADO","Valor de la ubicacion de la foto "+ubicacion); | ||
+ | //Depende de donde hayamos guardado la foto la recogeremos, es decir si hay bug o no lo hay | ||
+ | if (hayBug()) { | ||
+ | Bitmap foto2 = (Bitmap) data.getParcelableExtra("data"); | ||
+ | imagen.setImageBitmap(foto2); | ||
+ | } | ||
+ | else{ | ||
+ | Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); | ||
+ | foto = BitmapFactory.decodeFile(ubicacion); | ||
+ | imagen.setImageBitmap(foto); | ||
+ | } | ||
+ | |||
+ | if (respuesta == Constantes.OK_GALERIA){ | ||
+ | Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); | ||
+ | foto = BitmapFactory.decodeFile(ubicacion); | ||
+ | imagen.setImageBitmap(foto); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | - | ||
+ | /* | ||
+ | Uri u = data.getData(); | ||
+ | Uri u2= Uri.fromFile(new File(ubicacion)); | ||
+ | if (u==null) | ||
+ | Log.i("CROP","Dangggerrrr"); | ||
+ | else | ||
+ | Log.i("CROP","Por aquí todo ok"); | ||
+ | Log.i("FOTO","Voy a recortar la foto en la ubicacion "+ubicacion); | ||
+ | recorta(u,u2); | ||
+ | Log.i("FOTO","Vengo de recortar la foto"); | ||
+ | */ | ||
+ | |||
+ | //ImageView iv = (ImageView)findViewById(R.id.imgView); | ||
+ | Bitmap foto2 = (Bitmap) data.getParcelableExtra("data"); | ||
+ | imagen.setImageBitmap(foto2); | ||
+ | |||
+ | Log.i("FOTO","voy a guardar la foto en "+ubicacion); | ||
+ | guardarImagenFichero (foto2,ubicacion); | ||
+ | }else{ | ||
+ | Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); | ||
+ | foto = BitmapFactory.decodeFile(ubicacion); | ||
+ | imagen.setImageBitmap(foto); | ||
+ | } | ||
+ | |||
+ | // Bitmap | ||
+ | //} | ||
+ | } | ||
+ | } | ||
+ | |||
+ | if (respuesta == Constantes.OK_CROP){ | ||
+ | Bundle extras = data.getExtras() ; | ||
+ | //get the cropped bitmap | ||
+ | foto = extras.getParcelable("data"); | ||
+ | imagen.setImageBitmap(foto); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | private void guardarImagenFichero(Bitmap imagen, String ub){ | ||
+ | |||
+ | // Carpeta dónde guardamos la captura | ||
+ | // En este caso, la raíz de la SD Card | ||
+ | //File sd = Environment.getExternalStorageDirectory(); | ||
+ | File fichero = new File(ub); | ||
+ | |||
+ | // El archivo que contendrá la captura | ||
+ | |||
+ | |||
+ | try { | ||
+ | if (fichero.exists()==false){ | ||
+ | fichero.createNewFile(); | ||
+ | Log.i("GUARDAR","Creado el fichero "+fichero.toString()); | ||
+ | } | ||
+ | OutputStream os = new FileOutputStream(fichero); | ||
+ | imagen.compress(Bitmap.CompressFormat.PNG, 90, os); | ||
+ | os.close(); | ||
+ | } | ||
+ | catch (FileNotFoundException e) { | ||
+ | Log.i("GUADAR","Error de fichero"); | ||
+ | e.printStackTrace(); | ||
+ | } catch (IOException e) { | ||
+ | Log.i("GUADAR","Error de fichero"); | ||
+ | e.printStackTrace(); | ||
+ | } | ||
+ | |||
+ | } | ||
+ | |||
+ | private void recorta(Uri picUri, Uri salida) { | ||
+ | int aspectX = 2000; | ||
+ | int aspectY = 1200; | ||
+ | |||
+ | Intent intent = new Intent("com.android.camera.action.CROP"); | ||
+ | intent.setType("image/*"); | ||
+ | List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 ); | ||
+ | int size = list.size(); | ||
+ | if (size == 0) { | ||
+ | Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show(); | ||
+ | Log.i("CROP","NONONO se puede"); | ||
+ | |||
+ | return; | ||
+ | } else { | ||
+ | Log.i("CROP","SIIIIIP se puede"); | ||
+ | intent.setDataAndType(picUri, "image/*"); | ||
+ | intent.putExtra("scale", "true"); | ||
+ | intent.putExtra("aspectX", aspectX); | ||
+ | intent.putExtra("aspectY", aspectY); | ||
+ | intent.putExtra("scaleUpIfNeeded", true); | ||
+ | intent.putExtra("return-data", false); | ||
+ | |||
+ | intent.putExtra(MediaStore.EXTRA_OUTPUT, salida); | ||
+ | |||
+ | startActivityForResult(intent, Constantes.OK_CROP); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | //Pillado en internet http://kartones.net/blogs/codefreak/archive/2012/03/31/android-tomando-fotos-rotando-fotos.aspx | ||
+ | |||
+ | //Obetener el nombre del fichero a partir de la URI | ||
+ | public static String getRealPathFromURI(Uri contentUri, Activity activity) { | ||
+ | |||
+ | String[] proj = { | ||
+ | MediaStore.Images.Media.DATA | ||
+ | }; | ||
+ | Cursor cursor = activity.managedQuery(contentUri, proj, null, null, | ||
+ | null); | ||
+ | |||
+ | int column_index = cursor | ||
+ | .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); | ||
+ | cursor.moveToFirst(); | ||
+ | return cursor.getString(column_index); | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | // | ||
+ | } | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | </source> |
Última revisión de 01:20 13 feb 2014
Desarrollo de aplicaciones con SDK de Android
APP DE LA FOTO
package com.example.imagenes; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import android.app.Activity; import android.content.Intent; import android.content.pm.ResolveInfo; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class Imagenes extends Activity { Dialogo mensaje; Intent intencion; String ubicacion; File carpeta; Uri img; File foto; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Creamos directorios si no existe para guardar nuestras imágenes carpeta = new File(Environment.getExternalStorageDirectory()+ File.separator + "Imagenes"); if (!carpeta.exists()) carpeta.mkdirs(); } public void clickImagen(View v){ //Sacamos un DialogFragemen que me pregunta de donde quiero cargar la imagen mensaje = new Dialogo(); mensaje.show(getFragmentManager(),"mensaje"); } public void origenFoto(int opcion){ //Iniciamos la actividad foto //DEFINO el intent mensaje.dismiss(); String nombreFoto = obtenerNombre()+".jpg"; foto = new File(carpeta.toString()+"/"+nombreFoto); Log.i("FOTO)","Faile name xxxx = " + foto.toString()); ubicacion=foto.toString(); img = Uri.fromFile(foto); switch (opcion){ case Constantes.ORIGEN_FOTO_CAMARA: if (hayBug){ //no paso extras intencion =new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult (intencion, Constantes.OK_FOTO); }else{ intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); intencion.putExtra("crop","true"); startActivityForResult (intencion, Constantes.OK_FOTO); } intencion =new Intent(MediaStore.ACTION_IMAGE_CAPTURE); break; case Constantes.ORIGEN_FOTO_GALERIA: intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); intencion.putExtra("crop","true"); startActivityForResult (intencion, Constantes.OK_GALERIA); break; /* case Constantes.MIS_FOTOS: Uri dir = Uri.parse(carpeta.toString()); intencion =new Intent(Intent.ACTION_PICK,dir); break; */ } } //Método captado de http://stackoverflow.com/questions/1910608/android-action-image-capture-intent //que evita un bug de android en determinadas versiones public boolean hasImageCaptureBug() { // list of known devices that have the bug ArrayList<String> devices = new ArrayList<String>(); devices.add("android-devphone1/dream_devphone/dream"); devices.add("generic/sdk/generic"); devices.add("vodafone/vfpioneer/sapphire"); devices.add("tmobile/kila/dream"); devices.add("verizon/voles/sholes"); devices.add("google_ion/google_ion/sapphire"); return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/" + android.os.Build.DEVICE); } public void tomarFoto(){ //Preparamos el fichero donde queremos que se almacene String nombreFoto = obtenerNombre()+".jpg"; foto = new File(carpeta.toString()+"/"+nombreFoto); Log.i("FOTO)","Faile name xxxx = " + foto.toString()); ubicacion=foto.toString(); img = Uri.fromFile(foto); //Volvemos a usar la fución anterior para evitar el bug //Si no hay bug ponemos ya la ubicación de la foto if (hasImageCaptureBug()) { Log.i("FOTO","antes de intencion hay bug up"); // intencion.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); } else { intencion.putExtra(MediaStore.EXTRA_OUTPUT,img); intencion.putExtra("crop","true"); Log.i("FOTO","antes de intencion NOOO bug up"); } startActivityForResult(intencion , Constantes.OK_FOTO); Log.i("tomarFoto","vengo de tomar una foto"); //Log.i("tomarFoto","imagen guardada en "+fileName); } private String obtenerNombre() { // TODO Auto-generated method stub SimpleDateFormat fechaFormato = new SimpleDateFormat("yyyy_mm_dd_hh_mm_ss"); Date date = new Date(); String nombreFecha = fechaFormato.format(date); return nombreFecha; } protected void OnActivityResult(int respuesta, int resultado, Intent data) { // TODO Auto-generated method stub ImageView imagen = ((ImageView)findViewById(R.id.Imagen)); super.onActivityResult(respuesta, resultado, data); Log.i("FOTO","Códigos devueltos: respuesta: "+respuesta+"Resultado: "+resultado); Bitmap foto; if (respuesta == Constantes.OK_FOTO){//Que la respuesta ha ido bien Log.i("FOTO","resultado de la foto OK"); if (resultado==RESULT_OK) { //Que venimos del intent de hacer la foto Log.i("RESULTADO","Valor de la ubicacion de la foto "+ubicacion); //Depende de donde hayamos guardado la foto la recogeremos, es decir si hay bug o no lo hay if (hayBug()) { Bitmap foto2 = (Bitmap) data.getParcelableExtra("data"); imagen.setImageBitmap(foto2); } else{ Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); foto = BitmapFactory.decodeFile(ubicacion); imagen.setImageBitmap(foto); } if (respuesta == Constantes.OK_GALERIA){ Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); foto = BitmapFactory.decodeFile(ubicacion); imagen.setImageBitmap(foto); - /* Uri u = data.getData(); Uri u2= Uri.fromFile(new File(ubicacion)); if (u==null) Log.i("CROP","Dangggerrrr"); else Log.i("CROP","Por aquí todo ok"); Log.i("FOTO","Voy a recortar la foto en la ubicacion "+ubicacion); recorta(u,u2); Log.i("FOTO","Vengo de recortar la foto"); */ //ImageView iv = (ImageView)findViewById(R.id.imgView); Bitmap foto2 = (Bitmap) data.getParcelableExtra("data"); imagen.setImageBitmap(foto2); Log.i("FOTO","voy a guardar la foto en "+ubicacion); guardarImagenFichero (foto2,ubicacion); }else{ Log.i("RESULTADO_FOTO","Foto ok en ubicacion "+ubicacion); foto = BitmapFactory.decodeFile(ubicacion); imagen.setImageBitmap(foto); } // Bitmap //} } } if (respuesta == Constantes.OK_CROP){ Bundle extras = data.getExtras() ; //get the cropped bitmap foto = extras.getParcelable("data"); imagen.setImageBitmap(foto); } } private void guardarImagenFichero(Bitmap imagen, String ub){ // Carpeta dónde guardamos la captura // En este caso, la raíz de la SD Card //File sd = Environment.getExternalStorageDirectory(); File fichero = new File(ub); // El archivo que contendrá la captura try { if (fichero.exists()==false){ fichero.createNewFile(); Log.i("GUARDAR","Creado el fichero "+fichero.toString()); } OutputStream os = new FileOutputStream(fichero); imagen.compress(Bitmap.CompressFormat.PNG, 90, os); os.close(); } catch (FileNotFoundException e) { Log.i("GUADAR","Error de fichero"); e.printStackTrace(); } catch (IOException e) { Log.i("GUADAR","Error de fichero"); e.printStackTrace(); } } private void recorta(Uri picUri, Uri salida) { int aspectX = 2000; int aspectY = 1200; Intent intent = new Intent("com.android.camera.action.CROP"); intent.setType("image/*"); List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 ); int size = list.size(); if (size == 0) { Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show(); Log.i("CROP","NONONO se puede"); return; } else { Log.i("CROP","SIIIIIP se puede"); intent.setDataAndType(picUri, "image/*"); intent.putExtra("scale", "true"); intent.putExtra("aspectX", aspectX); intent.putExtra("aspectY", aspectY); intent.putExtra("scaleUpIfNeeded", true); intent.putExtra("return-data", false); intent.putExtra(MediaStore.EXTRA_OUTPUT, salida); startActivityForResult(intent, Constantes.OK_CROP); } } //Pillado en internet http://kartones.net/blogs/codefreak/archive/2012/03/31/android-tomando-fotos-rotando-fotos.aspx //Obetener el nombre del fichero a partir de la URI public static String getRealPathFromURI(Uri contentUri, Activity activity) { String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = activity.managedQuery(contentUri, proj, null, null, null); int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } // }