diff options
author | Jay Wang <jaywang@codeaurora.org> | 2016-02-25 14:23:02 -0800 |
---|---|---|
committer | Camera Software Integration <camswint@localhost> | 2016-03-02 18:41:20 -0700 |
commit | 7252fd0c4d3597a51d51f2e0bb554f0406628fb6 (patch) | |
tree | 7571e3bd9a819a0557f5c9ae69b20d99218d2df4 /src/com/android/camera/VideoUI.java | |
parent | 39abf394c32f731ebaa8d1dcac25cdefea91a248 (diff) | |
download | android_packages_apps_Snap-7252fd0c4d3597a51d51f2e0bb554f0406628fb6.tar.gz android_packages_apps_Snap-7252fd0c4d3597a51d51f2e0bb554f0406628fb6.tar.bz2 android_packages_apps_Snap-7252fd0c4d3597a51d51f2e0bb554f0406628fb6.zip |
SnapdragonCamera: Add face detection icon to video
Add video face detection to developer option
CRs-Fixed: 978207
Change-Id: I9308573a5a1004fc3803a955bc96f495ecbfc6c7
Diffstat (limited to 'src/com/android/camera/VideoUI.java')
-rw-r--r-- | src/com/android/camera/VideoUI.java | 82 |
1 files changed, 80 insertions, 2 deletions
diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java index be76e7115..17d472fff 100644 --- a/src/com/android/camera/VideoUI.java +++ b/src/com/android/camera/VideoUI.java @@ -26,6 +26,7 @@ import android.graphics.Color; import android.graphics.Point; import android.graphics.drawable.ColorDrawable; import android.hardware.Camera.Parameters; +import android.hardware.Camera.Face; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; @@ -35,6 +36,7 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; +import android.view.ViewStub; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; @@ -43,10 +45,13 @@ import android.widget.ListView; import android.widget.PopupWindow; import android.widget.TextView; +import com.android.camera.CameraManager.CameraProxy; import com.android.camera.CameraPreference.OnPreferenceChangedListener; +import com.android.camera.PhotoUI.SurfaceTextureSizeChangedListener; import com.android.camera.ui.AbstractSettingPopup; import com.android.camera.ui.CameraControls; import com.android.camera.ui.CameraRootView; +import com.android.camera.ui.FaceView; import com.android.camera.ui.ListSubMenu; import com.android.camera.ui.ModuleSwitcher; import com.android.camera.ui.PieRenderer; @@ -61,7 +66,8 @@ public class VideoUI implements PieRenderer.PieListener, PreviewGestures.SingleTapListener, CameraRootView.MyDisplayListener, SurfaceHolder.Callback, - PauseButton.OnPauseButtonListener { + PauseButton.OnPauseButtonListener, + CameraManager.CameraFaceDetectionCallback{ private static final String TAG = "CAM_VideoUI"; // module fields private CameraActivity mActivity; @@ -118,6 +124,12 @@ public class VideoUI implements PieRenderer.PieListener, private int mBottomMargin = 0; private RotateImageView mMuteButton; + //Face detection + private FaceView mFaceView; + private SurfaceTextureSizeChangedListener mSurfaceTextureSizeListener; + private float mSurfaceTextureUncroppedWidth; + private float mSurfaceTextureUncroppedHeight; + private OnLayoutChangeListener mLayoutListener = new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, @@ -256,6 +268,15 @@ public class VideoUI implements PieRenderer.PieListener, initializeControlByIntent(); initializeOverlay(); initializePauseButton(); + + mCameraControls = (CameraControls) mRootView.findViewById(R.id.camera_controls); + ViewStub faceViewStub = (ViewStub) mRootView + .findViewById(R.id.face_view_stub); + if (faceViewStub != null) { + faceViewStub.inflate(); + mFaceView = (FaceView) mRootView.findViewById(R.id.face_view); + setSurfaceTextureSizeChangedListener(mFaceView); + } mAnimationManager = new AnimationManager(); mOrientationResize = false; mPrevOrientationResize = false; @@ -279,6 +300,10 @@ public class VideoUI implements PieRenderer.PieListener, mOrientationResize = orientation; } + public void setSurfaceTextureSizeChangedListener(SurfaceTextureSizeChangedListener listener) { + mSurfaceTextureSizeListener = listener; + } + public void initializeSurfaceView() { if (mSurfaceView == null) { mSurfaceView = new SurfaceView(mActivity); @@ -394,7 +419,7 @@ public class VideoUI implements PieRenderer.PieListener, scaledTextureHeight = l * 3 / 4; break; } - } else if (mMaxPreviewWidth != 0 && mMaxPreviewHeight != 0) { + } else { float width = mMaxPreviewWidth, height = mMaxPreviewHeight; if (mOrientationResize) { scaledTextureWidth = height * mAspectRatio; @@ -438,10 +463,29 @@ public class VideoUI implements PieRenderer.PieListener, } } + if (mSurfaceTextureUncroppedWidth != scaledTextureWidth || + mSurfaceTextureUncroppedHeight != scaledTextureHeight) { + mSurfaceTextureUncroppedWidth = scaledTextureWidth; + mSurfaceTextureUncroppedHeight = scaledTextureHeight; + if (mSurfaceTextureSizeListener != null) { + mSurfaceTextureSizeListener.onSurfaceTextureSizeChanged( + (int) mSurfaceTextureUncroppedWidth, + (int) mSurfaceTextureUncroppedHeight); + Log.d(TAG, "mSurfaceTextureUncroppedWidth=" + mSurfaceTextureUncroppedWidth + + "mSurfaceTextureUncroppedHeight=" + mSurfaceTextureUncroppedHeight); + } + } + + if(lp != null) { mSurfaceView.setLayoutParams(lp); mSurfaceView.requestLayout(); + if (mFaceView != null) { + mFaceView.setLayoutParams(lp); + } + } + } /** @@ -546,6 +590,10 @@ public class VideoUI implements PieRenderer.PieListener, } public void setDisplayOrientation(int orientation) { + if (mFaceView != null) { + mFaceView.setDisplayOrientation(orientation); + } + if ((mPreviewOrientation == -1 || mPreviewOrientation != orientation) && mVideoMenu != null && mVideoMenu.isPreviewMenuBeingShown()) { dismissSceneModeMenu(); @@ -1163,4 +1211,34 @@ public class VideoUI implements PieRenderer.PieListener, public void adjustOrientation() { setOrientation(mOrientation, false); } + + @Override + public void onFaceDetection(Face[] faces, CameraProxy camera) { + Log.d(TAG, "onFacedetectopmn"); + mFaceView.setFaces(faces); + } + + public void pauseFaceDetection() { + if (mFaceView != null) mFaceView.pause(); + } + + public void resumeFaceDetection() { + if (mFaceView != null) mFaceView.resume(); + } + + public void onStartFaceDetection(int orientation, boolean mirror) { + mFaceView.setBlockDraw(false); + mFaceView.clear(); + mFaceView.setVisibility(View.VISIBLE); + mFaceView.setDisplayOrientation(orientation); + mFaceView.setMirror(mirror); + mFaceView.resume(); + } + + public void onStopFaceDetection() { + if (mFaceView != null) { + mFaceView.setBlockDraw(true); + mFaceView.clear(); + } + } } |