2017-01-02 100 views
-1

我用Android Studio创建了一个相机,并希望将拍摄的图像保存到图库中。
我使用Camera2 Api,并不真正知道如何保存图片。
此外,我不知道,我的照片被存储在哪里。该应用说:Saved: /storage/emulated/1.jpg如何在Android中将图像保存到图库?

下面是一些代码:

mFile = new File(Environment.getExternalStorageDirectory() + "1.jpg"); 

private final ImageReader.OnImageAvailableListener mOnImageAvailableListener 
     = new ImageReader.OnImageAvailableListener() { 

    @Override 
    public void onImageAvailable(ImageReader reader) { 
     mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), mFile)); 
    } 

}; 

private static class ImageSaver implements Runnable { 

    /** 
    * The JPEG image 
    */ 
    private final Image mImage; 
    /** 
    * The file we save the image into. 
    */ 
    private final File mFile; 

    public ImageSaver(Image image, File file) { 
     mImage = image; 
     mFile = file; 
    } 

    @Override 
    public void run() { 
     ByteBuffer buffer = mImage.getPlanes()[0].getBuffer(); 
     byte[] bytes = new byte[buffer.remaining()]; 
     buffer.get(bytes); 
     FileOutputStream output = null; 
     try { 
      output = new FileOutputStream(mFile); 
      output.write(bytes); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      mImage.close(); 
      if (null != output) { 
       try { 
        output.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 

} 

下一个问题是,我不知道如何来存储更多的照片。在这种情况下,1.jpg总是被覆盖。

回答

0

要添加图片的画廊:

private void galleryAddPic() { 
    Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
    File f = new File(mCurrentPhotoPath); 
    Uri contentUri = Uri.fromFile(f); 
    mediaScanIntent.setData(contentUri); 
    this.sendBroadcast(mediaScanIntent); 
} 

See here

要保存多张照片生成每个新图片的新名称(使用日期和时间或UUID)