2017-01-11 9 views
0

У меня вопрос, как сохранить растровое изображение из моего приложения в галерею андроид внутри кнопки? Я просто хочу, чтобы мое растровое изображение было размещено в галерее, которую пользователь может использовать, чтобы установить его, возможно, на его фоне. Так как это происходит?Сохранить изображение в галерее

+1

Возможно, вам стоит попробовать сохранить изображение в местоположении устройства, где Галерея считывает изображения. Например, DCIM или что-то в этом роде. –

+0

Галерея - приложение, а не место. Вы храните изображения в месте, например [внешнее хранилище] (https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html). – CommonsWare

+0

Хорошо и как я могу справиться с этим? Я пробовал так много версий, но ничего не работает для меня? Звучит так просто, просто чтобы сохранить его – Luca486

ответ

0

Вы измените следующую функцию в отелях

private void takeSnapShot(Bitmap bitmap) { 
    OutputStream outStream = null; 
    String state = Environment.getExternalStorageState(); 
    String appName = mContext.getString(R.string.app_name); 

    if (state.equals(Environment.MEDIA_MOUNTED)) { 
     String sdroot = Environment.getExternalStorageDirectory().getAbsolutePath(); 
     String path = sdroot + "/" + appName; 
     File dir = new File(path); 
     if (!dir.exists() && !dir.mkdirs()) { 
      return; 
     } 

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.US); 
     String dstr = sdf.format(new Date()); 
     String filename = path + "/" + dstr + ".jpg"; 

     try { 
      outStream = new FileOutputStream(filename); 
     } catch (FileNotFoundException e) { 
      LogUtils.println("Exception while writing image"); 
      e.printStackTrace(); 
     } 

     bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream); 

     try { 
      if (outStream != null) 
       outStream.close(); 
      mMediaScanner.scanMediaByName(filename, R.string.snapshot_save); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 


    } else { 
     // Add some parameters to the image that will be stored in the Image ContentProvider 
     int UNIQUE_BUCKET_ID = 111; 
     String disp = "anything"; 

     ContentValues values = new ContentValues(7); 
     values.put(MediaStore.Images.Media.DISPLAY_NAME, disp); 
     values.put(MediaStore.Images.Media.TITLE, disp); 
     values.put(MediaStore.Images.Media.DESCRIPTION, appName + disp); 
     values.put(MediaStore.Images.Media.BUCKET_DISPLAY_NAME, appName + " snapshot"); 
     values.put(MediaStore.Images.Media.BUCKET_ID, UNIQUE_BUCKET_ID); 
     values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); 
     values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); 
     // Inserting the image meta data inside the content provider 
     Uri uri = mContext.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); 

     try { 
      if (uri != null) { 
       outStream = mContext.getContentResolver().openOutputStream(uri); 
       if (outStream != null) { 
        outStream.close(); 
       } 
      } 
     } catch (FileNotFoundException e) { 
      LogUtils.println("Exception while writing image"); 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
0

Вы можете сохранить изображение в галерее, как это.

MediaStore.Images.Media.insertImage (getContentResolver(), yourBitmap, yourTitle, yourDescription);

Попробуйте, как это

Изображения отображаются в галерее, которые хранятся на поставщика медиа-магазине

государственной статической силы addImageToGallery (конечная строка Filepath, окончательный контекст Context) {

ContentValues values = new ContentValues(); 

values.put(Images.Media.DATE_TAKEN, System.currentTimeMillis()); 
values.put(Images.Media.MIME_TYPE, "image/jpeg"); 
values.put(MediaStore.MediaColumns.DATA, filePath); 

context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values); 

}

+0

Это не работает :( – Luca486