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 :

Enregistrement d'image Android


Sujet :

Android

  1. #1
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut Enregistrement d'image Android
    Bonjour,

    Je me permet de poster sur ce forum car je ne trouves vraiment pas de solution a mon problème !
    Je souhaite prendre une photo et l'enregistrer sur le téléphone

    J'ai mis en place une SurfaceView pour prendre la photo mais lors de l'enregistrement sa bloque !
    En effet j'ai une erreur dans le log cat qui me dit (Permission Denied)

    Voici le 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
     
    Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
     
    		public void onPictureTaken(byte[] data, Camera camera) {
     
    			//String fl = "test.jpg";
    	        File path = new File(Environment.getExternalStorageDirectory().getAbsolutePath() +
    	        "/DCIM/Camera/pictures/test.jpg");
     
    	        // Current state of the external media
    	        String extState = Environment.getExternalStorageState();
     
    	        // External media can be written onto
    	        if (extState.equals(Environment.MEDIA_MOUNTED))
    	        {
    	                try {
    	                        // Make sure the path exists
    	                       // boolean exists = (new File(path2)).exists();  
     
    	                       /* if (!exists){
    	                                new File(path2).mkdirs(); 
    	                        } */ 
    	                        // Open output stream
    	                        FileOutputStream fOut = new FileOutputStream(path);
    	                       // Log.e("lol", path+fl);
    	                        fOut.write(data);
    	                        // Close output stream
    	                        fOut.flush();
    	                        fOut.close();
     
    	                } catch (IOException ioe) {
    	                        ioe.printStackTrace();
    	                }
    			}
    		}
    	};
    Et voici l'erreur :

    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
     
    05-11 09:04:57.156: W/System.err(3702): java.io.FileNotFoundException: /mnt/sdcard/DCIM/Camera/pictures/test.jpg (Permission denied)
    05-11 09:04:57.195: W/System.err(3702): 	at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    05-11 09:04:57.195: W/System.err(3702): 	at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
    05-11 09:04:57.195: W/System.err(3702): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    05-11 09:04:57.195: W/System.err(3702): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
    05-11 09:04:57.195: W/System.err(3702): 	at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:163)
    05-11 09:04:57.195: W/System.err(3702): 	at android.hardware.Camera$EventHandler.handleMessage(Camera.java:612)
    05-11 09:04:57.195: W/System.err(3702): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-11 09:04:57.195: W/System.err(3702): 	at android.os.Looper.loop(Looper.java:132)
    05-11 09:04:57.195: W/System.err(3702): 	at android.app.ActivityThread.main(ActivityThread.java:4134)
    05-11 09:04:57.195: W/System.err(3702): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-11 09:04:57.195: W/System.err(3702): 	at java.lang.reflect.Method.invoke(Method.java:491)
    05-11 09:04:57.195: W/System.err(3702): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    05-11 09:04:57.195: W/System.err(3702): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    05-11 09:04:57.195: W/System.err(3702): 	at dalvik.system.NativeStart.main(Native Method)
    05-11 09:04:57.203: W/System.err(3702): java.io.FileNotFoundException: /mnt/sdcard/DCIM/Camera/pictures/test.jpg (Permission denied)
    05-11 09:04:57.203: W/System.err(3702): 	at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    05-11 09:04:57.203: W/System.err(3702): 	at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
    05-11 09:04:57.203: W/System.err(3702): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    05-11 09:04:57.203: W/System.err(3702): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
    05-11 09:04:57.203: W/System.err(3702): 	at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:163)
    05-11 09:04:57.203: W/System.err(3702): 	at android.hardware.Camera$EventHandler.handleMessage(Camera.java:618)
    05-11 09:04:57.203: W/System.err(3702): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-11 09:04:57.203: W/System.err(3702): 	at android.os.Looper.loop(Looper.java:132)
    05-11 09:04:57.203: W/System.err(3702): 	at android.app.ActivityThread.main(ActivityThread.java:4134)
    05-11 09:04:57.203: W/System.err(3702): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-11 09:04:57.203: W/System.err(3702): 	at java.lang.reflect.Method.invoke(Method.java:491)
    05-11 09:04:57.203: W/System.err(3702): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    05-11 09:04:57.203: W/System.err(3702): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    05-11 09:04:57.203: W/System.err(3702): 	at dalvik.system.NativeStart.main(Native Method)
    Pourtant j'ai bien déclaré les droits dans mon manifest voici un extrait de celui ci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        <uses-permission android:name="android.permision.WRITE_EXTERNAL_STORAGE"></uses-permission>
    	<uses-permission android:name="android.permission.WRITE_SETTINGS" />
    	<uses-permission android:name="android.permision.WRITE_SECURE_SETTINGS"></uses-permission>
        <uses-permission android:name="android.permission.INTERNET"></uses-permission> 
    	<uses-permission android:name="android.permission.CAMERA"></uses-permission>
    	<uses-feature android:name="android.hardware.camera"/>
    	<uses-feature android:name="android.hardware.camera.autofocus"/>
    	<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
    J'ai fait un test j'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    File f = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM/Camera/test");
    if (!f.exists()) {
      f.mkdir();
    }
    Sans succès, il y a donc un problème de droit d'écriture !!!
    Mais je ne vois pas du tout ce qu'il manque !
    Si quelqu'un a une idée

    Cordialement

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 168
    Points : 212
    Points
    212
    Par défaut
    Y a une carte mémoire au moins ?

  3. #3
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Je n'ai pas ajouté de carte mémoire externe mais je pense enregistrer sur la mémoire interne de la tablette. En effet, quand je prend une photo avec l'application Appareil photo la photo s'enregistre dans DICM/Camera. J'en ai donc déduis que je pouvais également faire mes enregistrements dans ce dossier.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 168
    Points : 212
    Points
    212
    Par défaut
    Oui tu peux il me semble, mais regarde bien où t'enregistre ton image :

    /mnt/sdcard/DCIM/Camera/pictures/test.jpg

    sdcard = Carte mémoire

    Si y a pas de carte mémoire normal que ça ne marche pas

  5. #5
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    J'ai essayé de chercher un autre lieu de stockage mais je viens de voir que je ne peux pas mettre de carte SD dans ma tablette... Pour info c'est la Motorola Xoom 2 Media Edition.

    Je suis allé voir directement dans les paramètres de stockage de la tablette et je peux voir ceci :
    Mémoire interne /mnt/sdcard/
    Espace total 12,17Go
    Utilisation des applis...
    Photos vidéo
    etc

    J'ai bien l'impression d'être dans la mémoire interne (malgré le nom sdcard) et je ne comprend donc pas d'ou viens mon problème

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Voila comment j'enregistre mes images sur mon portable (donc directement sur le disque dur et pas sur la SDCard)
    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
    	public static StoreByteImage(Bitmap myImage, int quality)
    	{
    		FileOutputStream fileOutputStream = null;
     
    		File sdCard = Environment.getExternalStorageDirectory();
    		File file = new File(sdCard, "image" + 1 + ".jpg");
    		try
    		{
    			fileOutputStream = new FileOutputStream(file);
    			BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
    			myImage.compress(CompressFormat.JPEG, quality, bos);
    			bos.flush();
    			bos.close();
    		}
    		catch (FileNotFoundException e)
    		{
    			Log.i("EXCP FNF", e.getMessage());
    		}
    		catch (IOException e)
    		{
    			Log.i("EXCP IO", e.getMessage());
    		}
    		return true;
    	}
    En espérant, que sa va t'aider

  7. #7
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Merci pour ce bout de code ! Malheureusement je reçoit non pas un Bitmap comme toi mais des byte[]. J'ai donc essayé de convertir ce format (byte[] en Bitmap) pour pouvoir adapter ton 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
     
     
    	// Callback pour la prise de photo
    	Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
     
    		public void onPictureTaken(byte[] data, Camera camera) {
     
     
    File sdCard = Environment.getExternalStorageDirectory();
    			File file = new File(sdCard, "DCIM/Camera/pictures/photo.jpg");
     
    //Convertion 
    			BitmapFactory.Options opt = new BitmapFactory.Options();
    			opt.inDither = true;
    			opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
    			Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length,opt);
     
    			FileOutputStream fileOutputStream;
    			try {
    				fileOutputStream = new FileOutputStream(file);
    				BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
    				bMap.compress(CompressFormat.JPEG, 100, bos);
    				bos.flush();
    				bos.close();
    			} catch (FileNotFoundException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    	};
    Mais quand j’exécute ce bout de code il me ferme l'application pour un null pointer Exception, le tableau byte[] nommé data est en fait vide (test non présent dans ce bout de code mais que j'ai constaté en direct). De plus j'ai vu qu'une conversion de ce genre pouvait entraîner une perte de la qualité de l'image.

  8. #8
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Une autre piste que j'ai exploité :

    http://www.ace-art.fr/wordpress/2011.../#comment-4616

    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
     
     
    private void SavePicture() {
    	try {
    		SimpleDateFormat timeStampFormat = new SimpleDateFormat(
    				"yyyy-MM-dd-HH.mm.ss");
    		String fileName = "photo_" + timeStampFormat.format(new Date())
    				+ ".jpg";
     
    		// 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 FormationCamera");
    		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);
     
    		// Ouverture du flux pour la sauvegarde
    		stream = (FileOutputStream) getContentResolver().openOutputStream(
    				taken);
     
    		camera.takePicture(null, pictureCallback, pictureCallback);
    	} catch (Exception e) {
    		// TODO: handle exception
    	}
     
    }
    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
     
    // Callback pour la prise de photo
    Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
     
    	public void onPictureTaken(byte[] data, Camera camera) {
    		if (data != null) {
    			// Enregistrement de votre image
    			try {
    				if (stream != null) {
    					stream.write(data);
    					stream.flush();
    					stream.close();
    				}
    			} catch (Exception e) {
    				// TODO: handle exception
    			}
     
    			// On redémarre la prévisualisation
    			camera.startPreview();
    		}
    	}
    };
    Ce bout de code enregistre la photo, (Permission Denied n'est plus présent ) mais je n'arrive pas a la renommer et donc a pourvoir l'utiliser après.
    Dans ce tutoriel (lien au debut du post), quelqu'un pose la question comment recuperer la photo et l'auteur repond :

    Media.TITLE avec les URI

    En effet, on attribut a la photo des paramètres mais je ne sais pas comment récupérer cette photo via les paramètre (et notamment le titre)

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    tu dois mal utiliser ton callback de prise de vue !
    Comment est-ce que tu demandes ta prise de vue dans ton appli ?

    En ce qui concerne la conversion en bitmap la perte de qualité est moindre le vrai souci c'est que je converti mon image en JPEG avant de l'enregistrer et là tu peut perdre de la qualité ...
    Mais vu que je règle la qualité (c'est à dire le taux de compression en conversion JPEG) je ne perd pratiquement rien pour ne rien perdre ou presque envoi 100 (c'est le maximum)

  10. #10
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Je n'ai pas très bien compris la question =)
    Je vais te montrer le moment ou je prend la photo !
    Si ce n'est pas sa que tu demandes dit le moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Quand on clique sur notre surface
    		surfaceCamera.setOnClickListener(new OnClickListener() {
     
    			public void onClick(View v) {
    				// On prend une photo
    				if (camera != null) {
    					SavePicture();
    				}
     
    			}
    		});
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	private void SavePicture() {
    		try {
     
    			camera.takePicture(null, pictureCallback, pictureCallback);
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
     
    	}
    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
     
    			// Callback pour la prise de photo
    			Camera.PictureCallback pictureCallback = new Camera.PictureCallback() {
     
    				public void onPictureTaken(byte[] data, Camera camera) {
    					File sdCard = Environment.getExternalStorageDirectory();
    					File file = new File(sdCard, "DCIM/Camera/pictures/photo.jpg");
     
    		//Convertion 
    					BitmapFactory.Options opt = new BitmapFactory.Options();
    					opt.inDither = true;
    					opt.inPreferredConfig = Bitmap.Config.ARGB_8888;
    					Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length,opt);
     
    					FileOutputStream fileOutputStream;
    					try {
    						fileOutputStream = new FileOutputStream(file);
    						BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
    						bMap.compress(CompressFormat.JPEG, 100, bos);
    						bos.flush();
    						bos.close();
    					} catch (FileNotFoundException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					} catch (IOException e) {
    						// TODO Auto-generated catch block
    						e.printStackTrace();
    					}
    				}
    			};

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Alors je pense que déjà que donner le même callback de prise de vue deux fois à l'appel de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, pictureCallback, pictureCallBack)
    Sa n'est pas légal :-) utilise plutôt sa

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, null, pictureCallBack)
    Est ce que tu vois un changement ?

  12. #12
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Je viens de retester le code ! Je n'ai plus l'erreur de data = null mais la photo n'est pas enregistré et je n'ai aucune erreur dans le log cat ! A ne plus rien y comprendre

  13. #13
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, null, pictureCallBack)
    Ce code ne change rien ! Ma photo n'est pas enregistré et je n'ai aucune erreur

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par android_debutant Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, null, pictureCallBack)
    Ce code ne change rien ! Ma photo n'est pas enregistré et je n'ai aucune erreur
    Normal c'était pour réglé l'erreur de data == null ;-)


    Maintenant change ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File file = new File(sdCard, "DCIM/Camera/pictures/photo.jpg");
    par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File file = new File(sdCard, "photo.jpg");
    J'espère juste que tu ne regardais pas au bon endroit dans la mémoire de ton téléphone tu as juste après à rentrer dans Mes Fichiers (pour mon Galaxy S2 c'est Mes Fichiers) pour vérifier que l'image est enregistrer et tu devrais avoir un fichier photo.jpg

  15. #15
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Je fais bétises sur bétises et je suis désolé !!!
    Je test ton nouveau bout de code dans 1 minute juste le temps que je t'explique ma bourde !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, pictureCallback, pictureCallBack)
    Entraine bien un data = null comme tout a l'heure (j'ai fait trop de copier coller j'avais deux fonctions onPicturetaken...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    camera.takePicture(null, null, pictureCallBack)
    Ce bout de code n'entraine plus cette erreur (data = null) mais le (permission denied)

    Voir log cat si dessous

    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
     
    05-11 11:31:10.781: W/System.err(7388): java.io.FileNotFoundException: /mnt/sdcard/DCIM/Camera/pictures/photo.jpg (Permission denied)
    05-11 11:31:10.828: W/System.err(7388): 	at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    05-11 11:31:10.828: W/System.err(7388): 	at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
    05-11 11:31:10.828: W/System.err(7388): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    05-11 11:31:10.828: W/System.err(7388): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
    05-11 11:31:10.828: W/System.err(7388): 	at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:227)
    05-11 11:31:10.828: W/System.err(7388): 	at android.hardware.Camera$EventHandler.handleMessage(Camera.java:618)
    05-11 11:31:10.828: W/System.err(7388): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-11 11:31:10.828: W/System.err(7388): 	at android.os.Looper.loop(Looper.java:132)
    05-11 11:31:10.828: W/System.err(7388): 	at android.app.ActivityThread.main(ActivityThread.java:4134)
    05-11 11:31:10.828: W/System.err(7388): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-11 11:31:10.828: W/System.err(7388): 	at java.lang.reflect.Method.invoke(Method.java:491)
    05-11 11:31:10.828: W/System.err(7388): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    05-11 11:31:10.828: W/System.err(7388): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    05-11 11:31:10.828: W/System.err(7388): 	at dalvik.system.NativeStart.main(Native Method)
    Excuse moi pour cette petite erreur =)

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Pas grave t'inquiète j'en fait aussi ^^ surtout avec du copier-coller ;-)
    Sinon au niveau des permissions tu as juste besoin de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
        </uses-permission>
    Pour utiliser l'enregistrement sur sdCard (ou mémoire téléphone), tu as utilisé plein d'autre permissions et je sais pas exactement ce qu'elles font ...

    Voila ce que j'utilise de base pour géré la camera et l'enregistrement de l'image :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <uses-feature android:name="android.hardware.camera"/>
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.VIBRATE" />
    	<uses-feature android:name="android.hardware.camera.autofocus"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
        </uses-permission>

  17. #17
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    File file = new File(sdCard, "photo.jpg");
    Avec le changement de chemin :

    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
     
     
    05-11 11:36:20.640: W/System.err(7592): java.io.FileNotFoundException: /mnt/sdcard/photo.jpg (Permission denied)
    05-11 11:36:20.679: W/System.err(7592): 	at org.apache.harmony.luni.platform.OSFileSystem.open(Native Method)
    05-11 11:36:20.679: W/System.err(7592): 	at dalvik.system.BlockGuard$WrappedFileSystem.open(BlockGuard.java:239)
    05-11 11:36:20.679: W/System.err(7592): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:101)
    05-11 11:36:20.679: W/System.err(7592): 	at java.io.FileOutputStream.<init>(FileOutputStream.java:77)
    05-11 11:36:20.679: W/System.err(7592): 	at com.test.android.AppareilPhotoActivity$1.onPictureTaken(AppareilPhotoActivity.java:227)
    05-11 11:36:20.679: W/System.err(7592): 	at android.hardware.Camera$EventHandler.handleMessage(Camera.java:618)
    05-11 11:36:20.679: W/System.err(7592): 	at android.os.Handler.dispatchMessage(Handler.java:99)
    05-11 11:36:20.679: W/System.err(7592): 	at android.os.Looper.loop(Looper.java:132)
    05-11 11:36:20.679: W/System.err(7592): 	at android.app.ActivityThread.main(ActivityThread.java:4134)
    05-11 11:36:20.679: W/System.err(7592): 	at java.lang.reflect.Method.invokeNative(Native Method)
    05-11 11:36:20.679: W/System.err(7592): 	at java.lang.reflect.Method.invoke(Method.java:491)
    05-11 11:36:20.679: W/System.err(7592): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
    05-11 11:36:20.679: W/System.err(7592): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
    05-11 11:36:20.679: W/System.err(7592): 	at dalvik.system.NativeStart.main(Native Method)
    Je ne vois toujours pas pourquoi il y a ce problème de permission !
    Peux tu me mettre les permissions que tu as dans ton manifest ?

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Citation Envoyé par adteulade Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        <uses-feature android:name="android.hardware.camera"/>
        <uses-permission android:name="android.permission.CAMERA" />
        <uses-permission android:name="android.permission.VIBRATE" />
    	<uses-feature android:name="android.hardware.camera.autofocus"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
        </uses-permission>
    J'avais oublier de les mettre j'ai éditer le message

  19. #19
    Inactif
    Homme Profil pro
    Marchand de glace
    Inscrit en
    Mai 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Marchand de glace
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2012
    Messages : 88
    Points : 101
    Points
    101
    Par défaut
    Merci bien je possède les mêmes permissions que toi ! Je ne comprend pas ce problème de (Permission Denied) ! Pourtant j'arrive a en enregistrer avec le tutoriel que j'ai poster plus haut ! Je vais plus chercher de ce coté

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    Le problème c'est que je n'ai pas tout ton code sous les yeux sa peut venir d'autre part et tu as plein de permission que je ne connais pas qui pourrait peut-être , être le problème renseigne toi sur les permissions que tu utilises ...
    En tout cas le problème de data = null est réglé.

    Je vais manger je serais dispo vers 14h j'espère que t'aura trouvé une solution a toute

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. enregistrer une image
    Par meli0207 dans le forum MFC
    Réponses: 35
    Dernier message: 12/07/2005, 09h00
  2. Enregistrement d'image dans Interbase(champ Blob)
    Par the watcher dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/06/2005, 12h33
  3. [GLScene] Comment enregistrer une image au format TGA
    Par Invité dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 27/05/2005, 15h12
  4. Enregistrer une image
    Par N@sH dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 04/05/2005, 10h07
  5. enregistrer une image et un identifiant
    Par dosach dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 18/03/2004, 17h18

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