2017-01-02 88 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)