Cómo obtener el nombre de archivo de la ruta del archivo en android
Quiero obtener el nombre de archivo de la ruta del archivo sdcard. Por ejemplo: /storage/sdcard0/DCIM/Camera/1414240995236.jpg I want get 1414240995236.jpg
He escrito el código para buscar el mismo pero no está trabajando. Por favor ayuda.
A continuación se muestra mi código:
@Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { if ( requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) { if ( resultCode == RESULT_OK) { /*********** Load Captured Image And Data Start ****************/ String imageId = convertImageUriToFile( imageUri,CameraActivity); // Create and excecute AsyncTask to load capture image new LoadImagesFromSDCard().execute(""+imageId); /*********** Load Captured Image And Data End ****************/ } else if ( resultCode == RESULT_CANCELED) { Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(this, " Picture was not taken ", Toast.LENGTH_SHORT).show(); } } } /************ Convert Image Uri path to physical path **************/ public static String convertImageUriToFile ( Uri imageUri, Activity activity ) { Cursor cursor = null; int imageID = 0; try { /*********** Which columns values want to get *******/ String [] proj={ MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID, MediaStore.Images.Thumbnails._ID, MediaStore.Images.ImageColumns.ORIENTATION }; cursor = activity.managedQuery( imageUri, // Get data for specific image URI proj, // Which columns to return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null // Order-by clause (ascending by name) ); // Get Query Data int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID); int columnIndexThumb = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); int file_ColumnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); //int orientation_ColumnIndex = cursor. // getColumnIndexOrThrow(MediaStore.Images.ImageColumns.ORIENTATION); int size = cursor.getCount(); /******* If size is 0, there are no images on the SD Card. *****/ if (size == 0) { imageDetails.setText("No Image"); } else { int thumbID = 0; if (cursor.moveToFirst()) { /**************** Captured image details ************/ /***** Used to show image on view in LoadImagesFromSDCard class ******/ imageID = cursor.getInt(columnIndex); thumbID = cursor.getInt(columnIndexThumb); String Path = cursor.getString(file_ColumnIndex); //String orientation = cursor.getString(orientation_ColumnIndex); String CapturedImageDetails = " CapturedImageDetails : \n\n" +" ImageID :"+imageID+"\n" +" ThumbID :"+thumbID+"\n" +" Path :"+Path+"\n"; full_path_name=Path; //this is my path //Path :/storage/sdcard0/DCIM/Camera/1414240995236.jpg i want get 1414240995236.jpg // Show Captured Image detail on activity imageDetails.setText(Path); } } } finally { if (cursor != null) { cursor.close(); } } // Return Captured Image ImageID ( By this ImageID Image will load from sdcard ) return ""+imageID; } /** * Async task for loading the images from the SD card. * * @author Android Example * */ // Class with extends AsyncTask class public class LoadImagesFromSDCard extends AsyncTask<String, Void, Void> { private ProgressDialog Dialog = new ProgressDialog(CameraPhotoCapture.this); Bitmap mBitmap; protected void onPreExecute() { /****** NOTE: You can call UI Element here. *****/ // Progress Dialog Dialog.setMessage(" Loading image from Sdcard.."); Dialog.show(); } // Call after onPreExecute method protected Void doInBackground(String... urls) { Bitmap bitmap = null; Bitmap newBitmap = null; Uri uri = null; try { /** Uri.withAppendedPath Method Description * Parameters * baseUri Uri to append path segment to * pathSegment encoded path segment to append * Returns * a new Uri based on baseUri with the given segment appended to the path */ uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + urls[0]); /************** Decode an input stream into a bitmap. *********/ bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri)); if (bitmap != null) { /********* Creates a new bitmap, scaled from an existing bitmap. ***********/ newBitmap = Bitmap.createScaledBitmap(bitmap, 170, 170, true); bitmap.recycle(); if (newBitmap != null) { mBitmap = newBitmap; } } } catch (IOException e) { // Error fetching image, try to recover /********* Cancel execution of this task. **********/ cancel(true); } return null; } protected void onPostExecute(Void unused) { // NOTE: You can call UI Element here. // Close progress dialog Dialog.dismiss(); if(mBitmap != null) { // Set Image to ImageView showImg.setImageBitmap(mBitmap); } } }
- Cámara: la función setDisplayOrientation no funciona para Samsung Galaxy ACE con Android 2.3.6
- Orientación vertical de la cámara
- Webcam en el emulador de Android: "No se puede iniciar la cámara" y "Resultado demasiado grande"
- Android SDK - camera2 - Dibujar rectángulo sobre TextureView
- Convierta la matriz de bytes NV21 en formato legible de mapa de bits
- ¿Cuál es la diferencia entre ActivityCompat y ContextCompat?
- Permitir que el usuario seleccione cámara o galería para la imagen
- onPreviewFrame y la superficie de bloqueo de excepción
- Cámara intergrada sin métodos obsoletos y soporte hacia atrás
- Cómo obtener la temperatura de color de la ganancia de corrección de color
- Bibliotecas / características de análisis de imágenes
- Android captura de vídeo de cámara lenta
- Cómo capturar una imagen en Android con tamaño fijo?
Creo que puede utilizar substring methode para obtener el nombre del archivo de la cadena de ruta de acceso.
String path=":/storage/sdcard0/DCIM/Camera/1414240995236.jpg";//it contain your path of image..im using a temp string.. String filename=path.substring(path.lastIndexOf("/")+1);
La solución más fácil es usar Uri.getLastPathSegment () :
String filename = uri.getLastPathSegment();
Manera simple y fácil de conseguir el nombre de archivo
File file = new File("/storage/sdcard0/DCIM/Camera/1414240995236.jpg"); String strFileName = file.getName();
Después de agregar este código e imprimir strFileName obtendrá strFileName = 1414240995236.jpg
Hilo viejo, pero pensé que iba a actualizar;
File theFile = ....... String theName = theFile.getName(); // Get the file name String thePath = theFile.getAbsolutePath(); // Get the full
Aquí se puede encontrar más información; Clase de archivo de Android
FilenameUtils
al rescate:
String filename = FilenameUtils.getName("/storage/sdcard0/DCIM/Camera/1414240995236.jpg");
Puede utilizar la biblioteca IO común que puede obtener el nombre base de su archivo y la extensión.
String fileUrl=":/storage/sdcard0/DCIM/Camera/1414240995236.jpg"; String fileName=FilenameUtils.getBaseName(fileUrl); String fileExtention=FilenameUtils.getExtension(fileUrl); //this will return filename:1414240995236 and fileExtention:jpg
- ¿Cómo obtener la frecuencia del resultado fft?
- ¿Diferencia entre los métodos onKey (), OnKeyDown () y dispatchKeyEvent () proporcionados por Android?