summaryrefslogtreecommitdiffstats
path: root/src/com
diff options
context:
space:
mode:
authorJack Yoo <jyoo@codeaurora.org>2016-09-07 10:30:43 -0700
committerJay Wang <jaywang@codeaurora.org>2016-09-27 15:54:54 -0700
commit8f6566e427e0091e95974768596e29220c2f181b (patch)
treea26e38cc252ed6ea74c96a7b04e13c48d9355f18 /src/com
parentda315cfe9dcff36827dcf3cbaff53d823a4d228b (diff)
downloadandroid_packages_apps_Snap-8f6566e427e0091e95974768596e29220c2f181b.tar.gz
android_packages_apps_Snap-8f6566e427e0091e95974768596e29220c2f181b.tar.bz2
android_packages_apps_Snap-8f6566e427e0091e95974768596e29220c2f181b.zip
SnapdrgaonCamera: Putting TrackingFocus jni hook
Adding tracking focus jni library loading part and touch event Change-Id: Ic570a09a0d93eb4b81e52334ba4a1bee2b67cb12 CRs-Fixed: 1067848
Diffstat (limited to 'src/com')
-rw-r--r--src/com/android/camera/CaptureModule.java2
-rw-r--r--src/com/android/camera/CaptureUI.java39
-rw-r--r--src/com/android/camera/PhotoUI.java2
-rw-r--r--src/com/android/camera/PreviewGestures.java13
-rw-r--r--src/com/android/camera/VideoUI.java2
-rw-r--r--src/com/android/camera/imageprocessor/filter/TrackingFocusFrameListener.java28
-rw-r--r--src/com/android/camera/ui/TrackingFocusRenderer.java8
7 files changed, 66 insertions, 28 deletions
diff --git a/src/com/android/camera/CaptureModule.java b/src/com/android/camera/CaptureModule.java
index 8b1e24723..d56824ac8 100644
--- a/src/com/android/camera/CaptureModule.java
+++ b/src/com/android/camera/CaptureModule.java
@@ -2400,6 +2400,7 @@ public class CaptureModule implements CameraModule, PhotoController,
mUI.hideSurfaceView();
mUI.showSurfaceView();
}
+ mUI.resetTrackingFocus();
try {
setUpMediaRecorder(cameraId);
@@ -2681,6 +2682,7 @@ public class CaptureModule implements CameraModule, PhotoController,
createSession(cameraId);
}
mUI.showUIafterRecording();
+ mUI.resetTrackingFocus();
}
private void closePreviewSession() {
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index 8f35c7a2d..9ac152218 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -241,16 +241,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
initSwitchCamera();
initFlashButton();
- mTrackingFocusRenderer = new TrackingFocusRenderer(mActivity, mModule, this);
- mRenderOverlay.addRenderer(mTrackingFocusRenderer);
- String trackingFocus = mSettingsManager.getValue(SettingsManager.KEY_TRACKINGFOCUS);
- if(trackingFocus != null && trackingFocus.equalsIgnoreCase("on")) {
- mTrackingFocusRenderer.setVisible(true);
- } else {
- mTrackingFocusRenderer.setVisible(false);
- }
-
-
mRecordingTimeView = (TextView) mRootView.findViewById(R.id.recording_time);
mRecordingTimeRect = (RotateLayout) mRootView.findViewById(R.id.recording_time_rect);
mTimeLapseLabel = mRootView.findViewById(R.id.time_lapse_label);
@@ -302,9 +292,20 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mRenderOverlay.addRenderer(mZoomRenderer);
}
+ if(mTrackingFocusRenderer == null) {
+ mTrackingFocusRenderer = new TrackingFocusRenderer(mActivity, mModule, this);
+ mRenderOverlay.addRenderer(mTrackingFocusRenderer);
+ }
+ String trackingFocus = mSettingsManager.getValue(SettingsManager.KEY_TRACKINGFOCUS);
+ if(trackingFocus != null && trackingFocus.equalsIgnoreCase("on")) {
+ mTrackingFocusRenderer.setVisible(true);
+ } else {
+ mTrackingFocusRenderer.setVisible(false);
+ }
+
if (mGestures == null) {
// this will handle gesture disambiguation and dispatching
- mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer);
+ mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer, mTrackingFocusRenderer);
mRenderOverlay.setGestures(mGestures);
}
@@ -325,9 +326,14 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
initSceneModeButton();
initFilterModeButton();
initFlashButton();
- if (mTrackingFocusRenderer != null) {
+ String trackingFocus = mSettingsManager.getValue(SettingsManager.KEY_TRACKINGFOCUS);
+ if(trackingFocus != null && trackingFocus.equalsIgnoreCase("on")) {
+ mTrackingFocusRenderer.setVisible(false);
mTrackingFocusRenderer.setVisible(true);
+ } else {
+ mTrackingFocusRenderer.setVisible(false);
}
+
if (mSurfaceViewMono != null) {
if (mSettingsManager != null && mSettingsManager.getValue(SettingsManager.KEY_MONO_PREVIEW) != null
&& mSettingsManager.getValue(SettingsManager.KEY_MONO_PREVIEW).equalsIgnoreCase("on")) {
@@ -470,6 +476,14 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
}
+ public void resetTrackingFocus() {
+ String trackingFocus = mSettingsManager.getValue(SettingsManager.KEY_TRACKINGFOCUS);
+ if(trackingFocus != null && trackingFocus.equalsIgnoreCase("on")) {
+ mTrackingFocusRenderer.setVisible(false);
+ mTrackingFocusRenderer.setVisible(true);
+ }
+ }
+
public void hideUIwhileRecording() {
mCameraControls.setWillNotDraw(true);
mFrontBackSwitcher.setVisibility(View.INVISIBLE);
@@ -746,7 +760,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
public void onOrientationChanged() {
-
}
/**
diff --git a/src/com/android/camera/PhotoUI.java b/src/com/android/camera/PhotoUI.java
index 14c55101c..250bfa603 100644
--- a/src/com/android/camera/PhotoUI.java
+++ b/src/com/android/camera/PhotoUI.java
@@ -524,7 +524,7 @@ public class PhotoUI implements PieListener,
if (mGestures == null) {
// this will handle gesture disambiguation and dispatching
- mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer);
+ mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer, null);
mRenderOverlay.setGestures(mGestures);
}
mGestures.setPhotoMenu(mMenu);
diff --git a/src/com/android/camera/PreviewGestures.java b/src/com/android/camera/PreviewGestures.java
index 5f95ebffd..6a1de4a08 100644
--- a/src/com/android/camera/PreviewGestures.java
+++ b/src/com/android/camera/PreviewGestures.java
@@ -23,6 +23,7 @@ import android.view.View;
import com.android.camera.ui.PieRenderer;
import com.android.camera.ui.RenderOverlay;
+import com.android.camera.ui.TrackingFocusRenderer;
import com.android.camera.ui.ZoomRenderer;
/* PreviewGestures disambiguates touch events received on RenderOverlay
@@ -45,6 +46,7 @@ public class PreviewGestures
private SingleTapListener mTapListener;
private RenderOverlay mOverlay;
private PieRenderer mPie;
+ private TrackingFocusRenderer mTrackingFocus;
private ZoomRenderer mZoom;
private MotionEvent mDown;
private MotionEvent mCurrent;
@@ -123,9 +125,10 @@ public class PreviewGestures
}
public PreviewGestures(CameraActivity ctx, SingleTapListener tapListener,
- ZoomRenderer zoom, PieRenderer pie) {
+ ZoomRenderer zoom, PieRenderer pie, TrackingFocusRenderer trackingfocus) {
mTapListener = tapListener;
mPie = pie;
+ mTrackingFocus = trackingfocus;
mZoom = zoom;
mMode = MODE_NONE;
mScale = new ScaleGestureDetector(ctx, this);
@@ -201,6 +204,10 @@ public class PreviewGestures
return sendToPie(m);
}
+ if (mTrackingFocus != null && mTrackingFocus.isVisible()) {
+ return sendToTrackingFocus(m);
+ }
+
if (mCaptureUI != null) {
if (mCaptureUI.isPreviewMenuBeingShown()) {
waitUntilNextDown = true;
@@ -278,6 +285,10 @@ public class PreviewGestures
return mOverlay.directDispatchTouch(m, mPie);
}
+ private boolean sendToTrackingFocus(MotionEvent m) {
+ return mOverlay.directDispatchTouch(m, mTrackingFocus);
+ }
+
// OnScaleGestureListener implementation
@Override
public boolean onScale(ScaleGestureDetector detector) {
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java
index 6ee532dbf..c68d895ea 100644
--- a/src/com/android/camera/VideoUI.java
+++ b/src/com/android/camera/VideoUI.java
@@ -670,7 +670,7 @@ public class VideoUI implements PieRenderer.PieListener,
}
mRenderOverlay.addRenderer(mZoomRenderer);
if (mGestures == null) {
- mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer);
+ mGestures = new PreviewGestures(mActivity, this, mZoomRenderer, mPieRenderer, null);
mRenderOverlay.setGestures(mGestures);
}
mGestures.setVideoMenu(mVideoMenu);
diff --git a/src/com/android/camera/imageprocessor/filter/TrackingFocusFrameListener.java b/src/com/android/camera/imageprocessor/filter/TrackingFocusFrameListener.java
index 8d9a7fc1a..de7fdfff7 100644
--- a/src/com/android/camera/imageprocessor/filter/TrackingFocusFrameListener.java
+++ b/src/com/android/camera/imageprocessor/filter/TrackingFocusFrameListener.java
@@ -58,9 +58,9 @@ public class TrackingFocusFrameListener implements ImageFilter {
private static String TAG = "TrackingFocusFrameListener";
private static boolean mIsSupported = false;
private Rect imageRect;
- public static final int PENDING_REGISTRATION = -1;
+ public static final long PENDING_REGISTRATION = -1;
public static final int MAX_NUM_TRACKED_OBJECTS = 3;
- private int mTrackedId = PENDING_REGISTRATION;
+ private long mTrackedId = PENDING_REGISTRATION;
private boolean mIsInitialzed = false;
private TrackingFocusRenderer mTrackingFocusRender;
byte[] yvuBytes = null;
@@ -185,7 +185,7 @@ public class TrackingFocusFrameListener implements ImageFilter {
return nGetMaxRoiDimension();
}
- public int registerObject(byte[] imageDataNV21, Rect rect)
+ public long registerObject(byte[] imageDataNV21, Rect rect)
{
if (imageDataNV21 == null || imageDataNV21.length < getMinFrameSize()) {
throw new IllegalArgumentException("imageDataNV21 null or too small to encode frame");
@@ -195,7 +195,7 @@ public class TrackingFocusFrameListener implements ImageFilter {
} else if (!mIsInitialzed) {
throw new IllegalArgumentException("already released");
}
- int id = nRegisterObjectByRect(imageDataNV21, rect.left, rect.top, rect.right, rect.bottom);
+ long id = nRegisterObjectByRect(imageDataNV21, rect.left, rect.top, rect.right, rect.bottom);
if(id == 0) {
id = PENDING_REGISTRATION;
}
@@ -203,7 +203,7 @@ public class TrackingFocusFrameListener implements ImageFilter {
return mTrackedId;
}
- public int registerObject(byte[] imageDataNV21, Point point, boolean firstTime)
+ public long registerObject(byte[] imageDataNV21, Point point, boolean firstTime)
{
if (imageDataNV21 == null || imageDataNV21.length < getMinFrameSize()) {
throw new IllegalArgumentException("imageDataNV21 null or too small to encode frame"
@@ -213,7 +213,7 @@ public class TrackingFocusFrameListener implements ImageFilter {
} else if (!mIsInitialzed) {
throw new IllegalArgumentException("already released");
}
- int id = nRegisterObjectByPoint(imageDataNV21, point.x, point.y, firstTime);
+ long id = nRegisterObjectByPoint(imageDataNV21, point.x, point.y, firstTime);
if(id == 0) {
id = PENDING_REGISTRATION;
}
@@ -221,7 +221,7 @@ public class TrackingFocusFrameListener implements ImageFilter {
return mTrackedId;
}
- public void unregisterObject(int id)
+ public void unregisterObject(long id)
{
if (id == PENDING_REGISTRATION) {
Log.e(TAG, "There's a pending object");
@@ -282,12 +282,18 @@ public class TrackingFocusFrameListener implements ImageFilter {
private native void nRelease();
private native int nGetMinRoiDimension();
private native int nGetMaxRoiDimension();
- private native int nRegisterObjectByRect(byte[] imageDataNV21, int left, int top, int right, int bottom);
- private native int nRegisterObjectByPoint(byte[] imageDataNV21, int x, int y, boolean firstTime);
- private native void nUnregisterObject(int id);
+ private native long nRegisterObjectByRect(byte[] imageDataNV21, int left, int top, int right, int bottom);
+ private native long nRegisterObjectByPoint(byte[] imageDataNV21, int x, int y, boolean firstTime);
+ private native void nUnregisterObject(long id);
private native int[] nTrackObjects(byte[] imageDataNV21);
static {
- mIsSupported = false;
+ try {
+ System.loadLibrary("jni_trackingfocus");
+ mIsSupported = true;
+ }catch(UnsatisfiedLinkError e) {
+ Log.d(TAG, e.toString());
+ mIsSupported = false;
+ }
}
}
diff --git a/src/com/android/camera/ui/TrackingFocusRenderer.java b/src/com/android/camera/ui/TrackingFocusRenderer.java
index 3738137c2..f79ebdb8f 100644
--- a/src/com/android/camera/ui/TrackingFocusRenderer.java
+++ b/src/com/android/camera/ui/TrackingFocusRenderer.java
@@ -108,6 +108,9 @@ public class TrackingFocusRenderer extends OverlayRenderer implements FocusIndic
@Override
public boolean onTouchEvent(MotionEvent event) {
+ if(mSurfaceDim == null) {
+ return true;
+ }
switch(event.getActionMasked()) {
case MotionEvent.ACTION_DOWN:
break;
@@ -273,11 +276,14 @@ public class TrackingFocusRenderer extends OverlayRenderer implements FocusIndic
}
if(Math.abs(mOldX - mNewX) >= MIN_DIFF_CORDS || Math.abs(mOldY - mNewY) >= MIN_DIFF_CORDS ||
Math.abs(mOldWidth - mNewWidth) >= MIN_DIFF_SIZE || Math.abs(mOldHeight - mNewHeight) >= MIN_DIFF_SIZE) {
- mModule.onSingleTapUp(null, mNewX, mNewY);
+ try {
+ mModule.onSingleTapUp(null, mNewX, mNewY);
mOldX = mNewX;
mOldY = mNewY;
mOldWidth = mNewWidth;
mOldHeight = mNewHeight;
+ } catch(Exception e) {
+ }
}
}
}