update android image gallery with newly created bitmap

前端 未结 4 1475
温柔的废话
温柔的废话 2020-12-17 06:20

I\'m trying to save an image file to external storage. I can save the picture to the sdcard but it doesn\'t show up in Androids gallery application. I\'ve tried this approac

相关标签:
4条回答
  • 2020-12-17 06:25

    I know i am a little late to answer this but i guess for anyone else reading this the answer given by surendra is right and that using the MediaScannerConnection is a way to update the gallery. As for the way nevva was suggesting the changes to his code are :

        Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
        Uri contentUri = Uri.fromFile(f);
        mediaScanIntent.setData(contentUri);
        getApplicationContext().sendBroadcast(mediaScanIntent);
    
    0 讨论(0)
  • 2020-12-17 06:27

    I have written down a detailed post about scanning media files in Android. http://androidyue.github.io/blog/2014/01/19/scan-media-files-in-android/ I hope this could help you.

    0 讨论(0)
  • 2020-12-17 06:31

    Simply use MediaScannerConnection after you saved your bitmap to sd:

    MediaScannerConnection.scanFile(this,
                    new String[] { Bitmapfile.getAbsolutePath() }, null,
                    new MediaScannerConnection.OnScanCompletedListener() {
                        public void onScanCompleted(String path, Uri uri) {
                            //now visible in gallery
                        }
                    }
                );
    
    0 讨论(0)
  • 2020-12-17 06:49

    Use this code to save an image Bitmap in android device gallery

    public void savePhoto(Bitmap bmp)
    {
    imageFileFolder = new File(Environment.getExternalStorageDirectory(),"Rotate");
    imageFileFolder.mkdir();
    FileOutputStream out = null;
    Calendar c = Calendar.getInstance();
    String date = fromInt(c.get(Calendar.MONTH))
                + fromInt(c.get(Calendar.DAY_OF_MONTH))
                + fromInt(c.get(Calendar.YEAR))
                + fromInt(c.get(Calendar.HOUR_OF_DAY))
                + fromInt(c.get(Calendar.MINUTE))
                + fromInt(c.get(Calendar.SECOND));
    imageFileName = new File(imageFileFolder, date.toString() + ".jpg");
    try
    {
     out = new FileOutputStream(imageFileName);
     bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);
     out.flush();
     out.close();
     scanPhoto(imageFileName.toString());
     out = null;
    } catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    
    
    public String fromInt(int val)
    {
    return String.valueOf(val);
    }
    
    
    public void scanPhoto(final String imageFileName)
    {
    msConn = new MediaScannerConnection(PreviewDemo1.this,new MediaScannerConnectionClient()
    {
    public void onMediaScannerConnected()
    {
    msConn.scanFile(imageFileName, null);
    Log.i("msClient obj  in Photo Utility","connection established");
    }
    public void onScanCompleted(String path, Uri uri)
    {
    msConn.disconnect();
    Log.i("msClient obj in Photo Utility","scan completed");
    }
    });
    msConn.connect();
    } 
    

    Here i am saving the image in " Rotate " folder if you dont want that you can change it easily in savePhoto method.

    0 讨论(0)
提交回复
热议问题