2012-08-07 6 views
18

Mam przycisk, i chcę, aby po kliknięciu na niego obraz został zapisany na karcie SD (lub pamięci wewnętrznej, tak jak w htc jeden x nie mamy pamięci zewnętrznej jak karta sD)Zapisywanie na Androidzie Bitmapy na kartę SD

to mój kod:

  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(); 
       } 
      } 
     }); 

i jak mogę zrobić pojawia się komunikat w nim jest napisane „Twój obraz został zapisany.” jak alert ale za 2 sekundy, a następnie znika

+1

Co powiecie na Toast.makeText (this, R.string.your_message, Toast.LENGTH_SHORT) .show(); –

+0

Dobra, dzięki =) –

Odpowiedz

82

spróbować tej

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(); 
    } 
} 

i dodać to w oczywisty

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

Spójrz na to odpowiedź Android saving file to external storage

EDIT: Korzystając z tej linii co można widzieć zapisane obrazy w widoku galerii.

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

To działa doskonale, jedynym problemem że album „saved_images” nie pojawia się w galerii ale przy użyciu menedżera plików mogę zobacz, jak utworzył folder "saved_images" , a wewnątrz niego zapisany obraz .. jak to zrobić, zapisz go w galerii –

+0

@ AhmedAl-ekrii możesz testować to na emulatorze, a aktualizację emulatora wolno. Przed wejściem do galerii użyj wyzwalacza mediów. Znajdziesz tam określony folder. – Numair

+0

Nie, używam mojego telefonu HTC One X .. co masz na myśli, używając spustu multimediów? (Jestem rozrusznikiem, przepraszam) –

2

Zastosowanie wiadomość Toast

jak

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

dzięki, to działało =) –

+0

Cieszę zniesiony :) – Numair