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 :

Suppression d'une photo au retour de la camera


Sujet :

Android

  1. #1
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut Suppression d'une photo au retour de la camera
    Bonjour à tous,

    Ma question est toute bête mais je ne parvient pas à la résoudre.

    J'aimerais prendre une photo dans mon application:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Intent intent = new Intent (MediaStore.ACTION_IMAGE_CAPTURE);
    		intent.putExtra (MediaStore.EXTRA_OUTPUT, Uri.fromFile (getTempFile (this)));
     
    		try
    		{
    			startActivityForResult (intent, CODE_ACTIVITY);
    		}
    		catch (Exception e)
    		{
     
    		}
    Et lorsque je la reçois dans le onActivityResult, je veux la sauvegarder dans ma base SQLlite et la supprimer physiquement de mon téléphone (de la gallery):
    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
     
    @Override
    	protected void onActivityResult (int requestCode, int resultCode, Intent data)
    	{
    		try
    		{
    			File file = getTempFile(this);
    			Bundle extras = data.getExtras ();
    			Bitmap bitmap = (Bitmap) extras.get ("data");
    			savePicture (bitmap);
    			file.delete ();
    		}
    		catch (Exception e)
    		{
    		}
    	}
    Ma fonction getTempFile:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private File getTempFile (Context context)
    	{
    		File path = new File (Environment.getExternalStorageDirectory (), context.getPackageName ());
    		if (!path.exists ())
    			path.mkdir ();
    		return new File (path, "image.jpg");
    	}
    La suppression ne fonctionne pas.

    Quelqu'un aurait une idée?

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Y a-t'il une Exception qui apparaît dans le logcat ?
    De plus il est vraiment déconseiller de catcher des exceptions et de ne rien faire dans le bloc de catch (comme c'est le cas dans ton code) et encore plus de catcher une Exception aussi générale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    catch (Exception e)
    {
    }
     
    /* à remplacer par quelque chose de ce genre: */
    catch (IOException e)
    {
          Log.e(TAG,"erreur suppression",e);
    }

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Points : 5 072
    Points
    5 072
    Par défaut
    Si tu retires le code de la suppression, est-ce que ça change quelque chose ?
    Quelques modèles de smartphones mettent la photo prise à deux endroits : temp et camera (je ne me souviens plus des emplacements réels...).

    EDIT : rester 30 minutes sur la page et répondre sans rafraîchir...
    Ne laisse JAMAIS de catch vide. Au pire, si tu veux ne pas avoir a repasser derrière, fais-toi un wrapper custom pour les logs regardant si l'appli est en "debuggable".
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  4. #4
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Merci pour vos deux réponses.

    Pour l'exception je ne comptais pas le laisser tel quel pas de soucis

    En revanche, je n'ai aucune erreur remontée.

    Mon image se trouve toujours dans la gallery!

    N'y a t il pas une façon de démarrer la caméra sans sauvegarder la photo physiquement mais juste en la récupérant dans le onActivityResult?

  5. #5
    Rédacteur
    Avatar de David55
    Homme Profil pro
    Ingénieur informatique
    Inscrit en
    Août 2010
    Messages
    1 542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2010
    Messages : 1 542
    Points : 2 808
    Points
    2 808
    Par défaut
    Après plusieurs recherche, j'ai trouvé le code suivant qui fonctionne très bien. Il permet de supprimer la dernière photo prise:
    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
     
    	public void deleteLastCapturedImage ()
    	{
    		String[] projection = { MediaStore.Images.ImageColumns.SIZE, MediaStore.Images.ImageColumns.DISPLAY_NAME,
    				MediaStore.Images.ImageColumns.DATA, BaseColumns._ID };
     
    		Cursor c = null;
    		Uri u = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
     
    		try
    		{
    			if (u != null)
    			{
    				c = managedQuery (u, projection, null, null, null);
    			}
    			if ((c != null) && (c.moveToLast ()))
    			{
     
    				ContentResolver cr = getContentResolver ();
    				int i = cr.delete (MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    						BaseColumns._ID + "=" + c.getString (c.getColumnIndex (BaseColumns._ID)), null);
     
    				Log.v (this.getClass ().getName (), "Number of column deleted : " + i);
     
    			}
    		}
    		finally
    		{
    			if (c != null)
    			{
    				c.close ();
    			}
    		}
    	}

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Suppression de l'ombre sur une photo
    Par foulques.nera dans le forum OpenCV
    Réponses: 0
    Dernier message: 05/07/2012, 10h53
  2. Réponses: 15
    Dernier message: 24/01/2007, 12h54
  3. Combler les trous lors d'une suppression dans une table
    Par Billybongjoe dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 08/04/2004, 14h02
  4. Réponses: 6
    Dernier message: 04/03/2004, 09h35
  5. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20

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