import com.android.camera.ui.TouchCoordinate;
import com.android.camera.util.CameraUtil;
import com.android.camera.util.Size;
-import com.android.camera.util.SystemProperties;
import com.android.camera.util.UsageStatistics;
import com.android.camera2.R;
import com.android.ex.camera2.portability.CameraAgent.CameraProxy;
}
@Override
- public void onTakePictureProgress(int progressPercent) {
- // TODO once we have HDR+ hooked up.
+ public void onTakePictureProgress(float progress) {
+ mUI.setPictureTakingProgress((int)(progress * 100));
}
@Override
public void onPictureTakenFailed();
/**
- * Called if the capture session requires processing to update the the
- * implementer about the current progress.
+ * Called when capture session is reporting a processing update. This
+ * should only be called by capture sessions that require the user to
+ * hold still for a while.
*
- * @param progressPercent a value from 0-100, indicating the current
- * processing progress.
+ * @param progress a value from 0...1, indicating the current processing
+ * progress.
*/
- public void onTakePictureProgress(int progressPercent);
+ public void onTakePictureProgress(float progress);
}
/**
/**
* This function sets the current zoom ratio value.
* <p>
- * The zoom range must be [1.0, maxZoom]. The maxZoom can be queried by {@link #getMaxZoom}.
+ * The zoom range must be [1.0, maxZoom]. The maxZoom can be queried by
+ * {@link #getMaxZoom}.
*
* @param zoom Zoom ratio value passed to scaler.
*/
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraManager;
+import android.util.DisplayMetrics;
+import android.view.WindowManager;
import com.android.camera.CameraActivity;
import com.android.camera.debug.Log;
* or otherwise uses the portability API.
*/
private static OneCameraManager create(CameraActivity activity) {
+ DisplayMetrics displayMetrics = getDisplayMetrics(activity);
CameraManager cameraManager = (CameraManager) activity
.getSystemService(Context.CAMERA_SERVICE);
int maxMemoryMB = activity.getServices().getMemoryManager()
.getMaxAllowedNativeMemoryAllocation();
if (cameraManager != null && isCamera2FullySupported(cameraManager)) {
- return new com.android.camera.one.v2.OneCameraManagerImpl(cameraManager, maxMemoryMB);
+ return new com.android.camera.one.v2.OneCameraManagerImpl(cameraManager, maxMemoryMB,
+ displayMetrics);
} else {
return new com.android.camera.one.v1.OneCameraManagerImpl();
}
return false;
}
}
+
+ private static DisplayMetrics getDisplayMetrics(Context context) {
+ DisplayMetrics displayMetrics = new DisplayMetrics();
+ WindowManager wm = (WindowManager)
+ context.getSystemService(Context.WINDOW_SERVICE);
+ if (wm != null) {
+ displayMetrics = new DisplayMetrics();
+ wm.getDefaultDisplay().getMetrics(displayMetrics);
+ }
+ return displayMetrics;
+ }
}
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
import android.hardware.camera2.CameraManager;
+import android.util.DisplayMetrics;
import com.android.camera.debug.Log;
import com.android.camera.debug.Log.Tag;
private static final Tag TAG = new Tag("OneCameraMgrImpl2");
private final CameraManager mCameraManager;
private final int mMaxMemoryMB;
+ private final DisplayMetrics mDisplayMetrics;
/**
* Instantiates a new {@link OneCameraManager} for Camera2 API.
* @param maxMemoryMB maximum amount of memory opened cameras should consume
* during capture and processing, in megabytes.
*/
- public OneCameraManagerImpl(CameraManager cameraManager, int maxMemoryMB) {
+ public OneCameraManagerImpl(CameraManager cameraManager, int maxMemoryMB,
+ DisplayMetrics displayMetrics) {
mCameraManager = cameraManager;
mMaxMemoryMB = maxMemoryMB;
+ mDisplayMetrics = displayMetrics;
}
@Override
.getCameraCharacteristics(device.getId());
// TODO: Set boolean based on whether HDR+ is enabled.
OneCamera oneCamera = OneCameraCreator.create(true, device,
- characteristics, pictureSize, mMaxMemoryMB);
+ characteristics, pictureSize, mMaxMemoryMB, mDisplayMetrics);
openCallback.onCameraOpened(oneCamera);
} catch (CameraAccessException e) {
Log.d(TAG, "Could not get camera characteristics");
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
-import android.graphics.PorterDuff.Mode;
import android.graphics.Paint;
import android.graphics.RectF;
import android.view.View;
* Renders a circular progress bar on the screen.
*/
public class ProgressRenderer {
-
private final int mProgressRadius;
private final Paint mProgressBasePaint;
private final Paint mProgressPaint;
private RectF mArcBounds = new RectF(0, 0, 1, 1);
private int mProgressAngleDegrees = 270;
private boolean mVisible = false;
- private View mParentView;
+ private final View mParentView;
+ private final Runnable mInvalidateParentViewRunnable = new Runnable() {
+ @Override
+ public void run() {
+ mParentView.invalidate();
+ }
+ };
/**
* After we reach 100%, keep on painting the progress for another x milliseconds
/**
* Shows a progress indicator. If the progress is '100', the progress
* indicator will be hidden.
+ * <p>
+ * Can be called from any thread.
*
* @param percent the progress in percent (0-100).
*/
if (percent < 100) {
mVisible = true;
}
- mParentView.invalidate();
+ mParentView.post(mInvalidateParentViewRunnable);
}
/**
import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CameraDevice;
+import android.util.DisplayMetrics;
import com.android.camera.one.OneCamera;
import com.android.camera.util.Size;
public class OneCameraCreator {
public static OneCamera create(boolean enableHdrPlus, CameraDevice device,
- CameraCharacteristics characteristics, Size pictureSize, int maxMemoryMB) {
+ CameraCharacteristics characteristics, Size pictureSize, int maxMemoryMB,
+ DisplayMetrics displayMetrics) {
return new OneCameraImpl(device, characteristics, pictureSize);
}
}