package com.xypower.mppreview; import android.content.Context; import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CaptureResult; import android.media.Image; import android.media.ImageReader; import java.io.File; public class ImageSaverBuilder { public Image mImage; public File mFile; public CaptureResult mCaptureResult; public CameraCharacteristics mCharacteristics; public Context mContext; public long mexpostime; public Camera2RawFragment.RefCountedAutoCloseable mReader; /** * Construct a new ImageSaverBuilder using the given {@link Context}. * * @param context a {@link Context} to for accessing the * {@link android.provider.MediaStore}. */ public ImageSaverBuilder(final Context context) { mContext = context; } public synchronized ImageSaverBuilder setExposetime(long time) { mexpostime = time; return this; } public synchronized ImageSaverBuilder setRefCountedReader(Camera2RawFragment.RefCountedAutoCloseable reader) { if (reader == null) throw new NullPointerException(); mReader = reader; return this; } public synchronized ImageSaverBuilder setImage(final Image image) { if (image == null) throw new NullPointerException(); mImage = image; return this; } public synchronized ImageSaverBuilder setFile(final File file) { if (file == null) throw new NullPointerException(); mFile = file; return this; } public synchronized ImageSaverBuilder setResult(final CaptureResult result) { if (result == null) throw new NullPointerException(); mCaptureResult = result; return this; } public synchronized ImageSaverBuilder setCharacteristics(final CameraCharacteristics characteristics) { if (characteristics == null) throw new NullPointerException(); mCharacteristics = characteristics; return this; } public synchronized ImageSaver buildIfComplete() { if (!isComplete()) { return null; } return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext, mReader, mexpostime); } public synchronized String getSaveLocation() { return (mFile == null) ? "Unknown" : mFile.toString(); } private boolean isComplete() { return mImage != null && mFile != null && mCaptureResult != null && mCharacteristics != null; } }