2013-06-07 6 views
0

J'ai enregistré une image avec succès sur ma carte SD sur un clic de bouton. Quand j'ai enregistré une autre image, mon application s'est écrasée. Je n'ai pas écraser l'image précédente car je veux que le nom de l'image reste le même. Comment puis-je faire ceci.Écraser l'image sur la carte SD android

ByteArrayOutputStream stream=new ByteArrayOutputStream(); 
    bm.compress(Bitmap.CompressFormat.JPEG, 90, stream); 
    byte[] image=stream.toByteArray(); 
    System.out.println("byte array:"+image); 

    Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    File imagesFolder = new File(Environment.getExternalStorageDirectory(), "myfile"); 
    imagesFolder.mkdirs(); 
    String fileName = "myfile.jpg"; 
    File output = new File(imagesFolder, fileName); 

    while (output.exists()){ 
     fileName = "myfile.jpg"; 
     output = new File(imagesFolder, fileName); 

    } 


     while (output.exists()){ 
      fileName = "myfile.jpg"; 
      output = new File(imagesFolder, fileName); 

     } 


     Uri uriSavedImage = Uri.fromFile(output); 
     imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage); 


     OutputStream imageFileOS; 
     try { 
      imageFileOS = getContentResolver().openOutputStream(uriSavedImage); 

      //bitmap image here 
      imageFileOS.write(image); 
      imageFileOS.flush(); 
      imageFileOS.close(); 



     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+0

. juste définir le même nom pour toutes les images .. – Riser

Répondre

2

Qu'est-ce que

while (output.exists()){ 
     fileName = "myfile.jpg"; 
     output = new File(imagesFolder, fileName); 

    } 

cette bouclera votre code pour unfinite.

Utilisez plutôt

if (output.exists()){ 
output.delete(); //DELETE existing file 
     fileName = "myfile.jpg"; 
     output = new File(imagesFolder, fileName); 

    } 
rien