如何在Android中将图像保存到图库?

时间:2017-01-02 14:03:35

标签: android camera android-camera2

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

以下是一些代码:

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始终被覆盖。

1 个答案:

答案 0 :(得分: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)