2012-08-07 13 views
18

Ich habe eine Schaltfläche, und ich möchte, wenn ich darauf klicke das Bild wird in der SD-Karte (oder dem internen Speicher gespeichert, wie in HTC eins x haben wir keinen externen Speicher wie eine sD-Karte)Android speichern Bitmap auf SD-Karte

dies ist mein Code:

  sd.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 
       MpClick.start(); 
       File myDir=new File("/sdcard/Saved_images"); 
       myDir.mkdirs(); 
       Random generator = new Random(); 
       int n = 10000; 
       n = generator.nextInt(n); 
       String fname = "Image-"+ n +".jpg"; 
       File file = new File (myDir, fname); 
       if (file.exists()) file.delete(); 
       try { 
         FileOutputStream out = new FileOutputStream(file); 
         bitMapToShare.compress(Bitmap.CompressFormat.JPEG, 600, out); 
         out.flush(); 
         out.close(); 

       } catch (Exception e) { 
         e.printStackTrace(); 
       } 
      } 
     }); 

und wie mache ich eine Meldung in der es scheint, es ist geschrieben: „Ihr Bild gespeichert wurde.“ wie eine Warnung, aber für 2 Sekunden und dann verschwindet

+1

Wie wäre es mit Toast.makeText (dies, R.string.your_message, Toast.LENGTH_SHORT) .show(); –

+0

Okay, danke =) –

Antwort

82

dieses versuchen

private void SaveImage(Bitmap finalBitmap) { 

    String root = Environment.getExternalStorageDirectory().toString(); 
    File myDir = new File(root + "/saved_images");  
    myDir.mkdirs(); 
    Random generator = new Random(); 
    int n = 10000; 
    n = generator.nextInt(n); 
    String fname = "Image-"+ n +".jpg"; 
    File file = new File (myDir, fname); 
    if (file.exists()) file.delete(); 
    try { 
     FileOutputStream out = new FileOutputStream(file); 
     finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

und fügen Sie diese in einem offenkundigen

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Blick auf diese Antwort Android saving file to external storage

EDIT: Durch diese Zeile mit Sie in der Lage können die gespeicherten Bilder in der Galerie-Ansicht zu sehen.

sendBroadcast(new Intent(
Intent.ACTION_MEDIA_MOUNTED, 
     Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 
+0

Es ist perfekt funktioniert, nur ein Problem , dass das Album „saved_images“ erscheint nicht in der Galerie aber einen Dateimanager kann ich siehe es gemacht einen Ordner "saved_images" und darin das Bild Ich speicherte .. wie mache ich es, speichern Sie es in der Galerie –

+0

@ AhmedAl-ekrii Sie könnten dies auf Emulator testen, und Emulator langsam aktualisieren. Verwenden Sie den Medienauslöser, bevor Sie die Galerie aufrufen. Dort finden Sie den angegebenen Ordner. – Numair

+0

Nein, ich benutze mein Handy HTC One X .. Was meinen Sie mit einem Medienauslöser? (Ich bin ein Starter, tut mir leid) –

2

Verwenden Toast Nachricht

wie

Toast.makeText(Your_class_name.this, 
        "Your image is saved to this folder", Toast.LENGTH_LONG) 
        .show(); 
+0

Danke, es hat funktioniert =) –

+0

Glad geholfen zu werden :) – Numair

Verwandte Themen