IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Changer le nom d'enregistrement d'une image


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut Changer le nom d'enregistrement d'une image
    Bonjour à tous,

    Après mainte recherche sur la toile, je m'adresse à vous pour vous exposer mon problème. En effet je développe une application où je peux prendre des photos.

    Mon problème est que quand j'enregistre sur la carte SD la photo, il me la stock avec comme nom un ensemble de chiffres (1360800901715.jpg) et je n'arrive pas à changer ce nom pour mettre ce style : appli_140213012600.jpg

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    // Callback pour la prise de photo
    		Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
     
    			public void onPictureTaken(byte[] data, Camera camera) {				
    				Log.i("methode","onPictureTaken()");
    				if (data != null) {
    					// Enregistrement de votre image
    					try {
    						if (stream != null) {
    							stream.write(data);
    							stream.flush();
    							stream.close();
    						}
    					} catch (Exception e) {
    						String err = (e.getMessage()==null)?"not error":e.getMessage();
    						Log.e("error",err);
    					}
     
    					// On redémarre la prévisualisation
    					camera.startPreview();
     
    				}
    			}
    		};
     
    	private void SavePicture() {
    		Log.i("Methode", "SavePicture");
    		try {
    			SimpleDateFormat timeStampFormat = new SimpleDateFormat(
    					"yyyy-MM-dd-HH.mm.ss");
    			String fileName = "wenria_" + timeStampFormat.format(new Date())
    					+ ".jpg";
    			Log.i("fileName", fileName);
     
    			// Création de l'intent
    			Intent intent = new Intent();
    			// On rajoute le nom saisie dans l'intent
    			intent.putExtra("uri", fileName);
    			// On retourne le résultat avec l'intent
    			setResult(RESULT_OK, intent);
     
    			// Metadata pour la photo
    			ContentValues values = new ContentValues();
    			values.put(Media.TITLE, fileName);
    			values.put(Media.DISPLAY_NAME, fileName);
    			values.put(Media.DESCRIPTION, "Image prise par Wenria Xeninfo");
    			values.put(Media.DATE_TAKEN, new Date().getTime());
    			values.put(Media.MIME_TYPE, "image/jpeg");
     
    			// Support de stockage
    			Uri taken = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI,
    					values);
    			Log.i("URI", ""+Media.EXTERNAL_CONTENT_URI);
     
    			// Ouverture du flux pour la sauvegarde
    			stream = (FileOutputStream) getContentResolver().openOutputStream(
    					taken);
     
    			camera.takePicture(null, pictureCallback, pictureCallback);
     
    		} catch (Exception e) {
    			String err = (e.getMessage()==null)?"SD Card failed":e.getMessage();
    			Log.e("sdcard-err2:",err); 
    		}
    	}
    Je pensais que le fileName me stockerai l'image avec ce nom mais ce n'est pas le cas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fileName: wenria_2013-02-14-01.31.04.jpg
    URI: content://media/external/images/media
    Merci d'avance pour vos réponses.

  2. #2
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Bonjour,
    une piste (pas testée), mais qui me semble assez cohérente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/" + "imageName");
    Uri imageUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web et Mobile
    Inscrit en
    Juin 2010
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web et Mobile

    Informations forums :
    Inscription : Juin 2010
    Messages : 76
    Par défaut
    Citation Envoyé par kox2ee Voir le message
    Bonjour,
    une piste (pas testée), mais qui me semble assez cohérente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/" + "imageName");
    Uri imageUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    Je ne vois pas trop comment intégrer cela au code...
    J'ai vu quelques docs sur ce que tu me dis mais je n'utilise ni "MediaStore" ni "File".

    Sinon j'essaye d'utiliser une autre méthode, plus simple pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public void prendrePhoto2() {
    		// L'endroit où sera enregistrée la photo
    		// Remarquez que mFichier est un attribut de ma classe
    		mFichier = new File(Environment.getExternalStorageDirectory(), "photo.jpg");
    		// On récupère ensuite l'URI associée au fichier
    		Uri fileUri = Uri.fromFile(mFichier);
     
    		// Maintenant, on crée l'intent
    		Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    		// Et on déclare qu'on veut que l'image soit enregistrée là où pointe l'URI
    		intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
     
    		// Enfin, on lance l'intent pour que l'application de photo se lance
    		startActivityForResult(intent, PHOTO_RESULT);
    	}
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    @Override
    	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     
    		// Si on revient de l'activité qu'on avait lancée avec le code PHOTO_RESULT  
    		  if (requestCode == PHOTO_RESULT && resultCode == RESULT_OK) {
    		    // Si l'image est une miniature
    		    if (data != null) {
    		      if (data.hasExtra("data")) {
    		        Bitmap thumbnail = data.getParcelableExtra("data");
    		        ImageView imageView = (ImageView)findViewById(R.id.photo);
    		        imageView.setImageBitmap(thumbnail);
    		      }
    		    } else {
    		      // On sait ici que le fichier pointé par mFichier est accessible, on peut donc faire ce qu'on veut avec, par exemple en faire un Bitmap
    		      Bitmap image = BitmapFactory.decodeFile(mFichier);
    		    }
     
    		  }
    }
    Le problème c'est que BitmapFactory.decodeFile() prend comme paramètre un String et que là c'est un File...

  4. #4
    Membre chevronné
    Homme Profil pro
    Ed Nat
    Inscrit en
    Janvier 2013
    Messages
    325
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ed Nat
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 325
    Par défaut
    Citation Envoyé par Xenonmax Voir le message
    Je ne vois pas trop comment intégrer cela au code...
    J'ai vu quelques docs sur ce que tu me dis mais je n'utilise ni "MediaStore" ni "File".
    Après ou en remplacement de intent.putExtra("uri", fileName) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Intent intent = new Intent();
    // On rajoute le nom saisie dans l'intent
    intent.putExtra("uri", fileName);
    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/folder/" + "imageName");
    Uri imageUri = Uri.fromFile(file);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    Le File permet de définir le fichier, et d'obtenir l'URI correspondante.

    La classe Mediastore contient les metadonnées relatives aux médias dispos (son, video, images) sur les périphs internes ou externes.
    MediaStore.EXTRA_OUTPUT permet d'indiquer une URI à utiliser pour stocker l'image.

Discussions similaires

  1. [VB.NET]Enregistrement d'une image
    Par leSeb dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/06/2006, 08h03
  2. Empêcher l'enregistrement d'une image
    Par Patrick Seuret dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/09/2005, 19h13
  3. [D2005][CGI] Nom de fichier pour une image
    Par Argonaute dans le forum Web & réseau
    Réponses: 1
    Dernier message: 30/08/2005, 12h56
  4. peut on changer un bouton de formulaire par une image?
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 19/08/2005, 13h55
  5. Enregistrement d'une image sur le serveur
    Par MHI dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2005, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo