Loading src/com/android/camera/AndroidCameraManagerImpl.java +78 −36 Original line number Diff line number Diff line Loading @@ -391,12 +391,12 @@ class AndroidCameraManagerImpl implements CameraManager { @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) @Override public void setPreviewTexture(final SurfaceTexture surfaceTexture) { public void setPreviewTexture(SurfaceTexture surfaceTexture) { mCameraHandler.obtainMessage(SET_PREVIEW_TEXTURE_ASYNC, surfaceTexture).sendToTarget(); } @Override public void setPreviewDisplay(final SurfaceHolder surfaceHolder) { public void setPreviewDisplay(SurfaceHolder surfaceHolder) { mCameraHandler.obtainMessage(SET_PREVIEW_DISPLAY_ASYNC, surfaceHolder).sendToTarget(); } Loading @@ -413,18 +413,18 @@ class AndroidCameraManagerImpl implements CameraManager { @Override public void setPreviewDataCallback( Handler handler, final CameraPreviewDataCallback cb) { Handler handler, CameraPreviewDataCallback cb) { mCameraHandler.obtainMessage( SET_PREVIEW_CALLBACK, PreviewCallbackForward.instance(handler, this, cb)).sendToTarget(); PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override public void setPreviewDataCallbackWithBuffer( Handler handler, final CameraPreviewDataCallback cb) { Handler handler, CameraPreviewDataCallback cb) { mCameraHandler.obtainMessage( SET_PREVIEW_CALLBACK_WITH_BUFFER, PreviewCallbackForward.instance(handler, this, cb)).sendToTarget(); PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading @@ -436,7 +436,7 @@ class AndroidCameraManagerImpl implements CameraManager { public void autoFocus(Handler handler, CameraAFCallback cb) { mCameraHandler.obtainMessage( AUTO_FOCUS, AFCallbackForward.instance(handler, this, cb)).sendToTarget(); AFCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading @@ -448,24 +448,24 @@ class AndroidCameraManagerImpl implements CameraManager { @TargetApi(ApiHelper.VERSION_CODES.JELLY_BEAN) @Override public void setAutoFocusMoveCallback( Handler handler, final CameraAFMoveCallback cb) { Handler handler, CameraAFMoveCallback cb) { mCameraHandler.obtainMessage( SET_AUTO_FOCUS_MOVE_CALLBACK, AFMoveCallbackForward.instance(handler, this, cb)).sendToTarget(); AFMoveCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override public void takePicture( final Handler handler, final CameraShutterCallback shutter, final CameraPictureCallback raw, final CameraPictureCallback post, final CameraPictureCallback jpeg) { Handler handler, CameraShutterCallback shutter, CameraPictureCallback raw, CameraPictureCallback post, CameraPictureCallback jpeg) { mCameraHandler.requestTakePicture( ShutterCallbackForward.instance(handler, this, shutter), PictureCallbackForward.instance(handler, this, raw), PictureCallbackForward.instance(handler, this, post), PictureCallbackForward.instance(handler, this, jpeg)); ShutterCallbackForward.getNewInstance(handler, this, shutter), PictureCallbackForward.getNewInstance(handler, this, raw), PictureCallbackForward.getNewInstance(handler, this, post), PictureCallbackForward.getNewInstance(handler, this, jpeg)); } @Override Loading @@ -480,8 +480,11 @@ class AndroidCameraManagerImpl implements CameraManager { } @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public void setFaceDetectionListener(FaceDetectionListener listener) { mCameraHandler.obtainMessage(SET_FACE_DETECTION_LISTENER, listener).sendToTarget(); public void setFaceDetectionCallback( Handler handler, CameraFaceDetectionCallback cb) { mCameraHandler.obtainMessage( SET_FACE_DETECTION_LISTENER, FaceDetectionCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading Loading @@ -537,15 +540,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraAFCallback mCallback; /** * Returns an instance of {@link AFCallbackForward}. * Returns a new instance of {@link AFCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link AFCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static AFCallbackForward instance( public static AFCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFCallback cb) { if (handler == null || camera == null || cb == null) return null; return new AFCallbackForward(handler, camera, cb); Loading Loading @@ -577,15 +580,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link AFMoveCallbackForward}. * Returns a new instance of {@link AFMoveCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link AFMoveCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static AFMoveCallbackForward instance( public static AFMoveCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFMoveCallback cb) { if (handler == null || camera == null || cb == null) return null; return new AFMoveCallbackForward(handler, camera, cb); Loading Loading @@ -619,15 +622,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link ShutterCallbackForward}. * Returns a new instance of {@link ShutterCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link ShutterCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static ShutterCallbackForward instance( public static ShutterCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraShutterCallback cb) { if (handler == null || camera == null || cb == null) return null; return new ShutterCallbackForward(handler, camera, cb); Loading Loading @@ -660,15 +663,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link PictureCallbackForward}. * Returns a new instance of {@link PictureCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link PictureCallbackForward}, * or null if any one of other parameters is null. * or null if any parameters is null. */ public static PictureCallbackForward instance( public static PictureCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPictureCallback cb) { if (handler == null || camera == null || cb == null) return null; return new PictureCallbackForward(handler, camera, cb); Loading Loading @@ -702,15 +705,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link PreviewCallbackForward}. * Returns a new instance of {@link PreviewCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link PictureCallbackForward}, * or null if any one of other parameters is null. * @return The instance of the {@link PreviewCallbackForward}, * or null if any parameters is null. */ public static PreviewCallbackForward instance( public static PreviewCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPreviewDataCallback cb) { if (handler == null || camera == null || cb == null) return null; return new PreviewCallbackForward(handler, camera, cb); Loading @@ -734,4 +737,43 @@ class AndroidCameraManagerImpl implements CameraManager { }); } } private static class FaceDetectionCallbackForward implements FaceDetectionListener { private final Handler mHandler; private final CameraFaceDetectionCallback mCallback; private final CameraProxy mCamera; /** * Returns a new instance of {@link FaceDetectionCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link FaceDetectionCallbackForward}, * or null if any parameter is null. */ public static FaceDetectionCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraFaceDetectionCallback cb) { if (handler == null || camera == null || cb == null) return null; return new FaceDetectionCallbackForward(handler, camera, cb); } private FaceDetectionCallbackForward( Handler h, CameraProxy camera, CameraFaceDetectionCallback cb) { mHandler = h; mCamera = camera; mCallback = cb; } @Override public void onFaceDetection( final Camera.Face[] faces, Camera camera) { mHandler.post(new Runnable() { @Override public void run() { mCallback.onFaceDetection(faces, mCamera); } }); } } } src/com/android/camera/CameraManager.java +19 −5 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.camera; import android.annotation.TargetApi; import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.hardware.Camera.ErrorCallback; import android.hardware.Camera.FaceDetectionListener; import android.hardware.Camera.OnZoomChangeListener; import android.hardware.Camera.Parameters; import android.os.Handler; Loading @@ -41,7 +41,6 @@ import java.io.IOException; * * TODO: provide callback interfaces for: * {@code android.hardware.Camera.ErrorCallback}, * {@code android.hardware.Camera.FaceDetectionListener}, * {@code android.hardware.Camera.OnZoomChangeListener}, and * {@code android.hardware.Camera.Parameters}. */ Loading Loading @@ -87,6 +86,20 @@ public interface CameraManager { public void onPreviewFrame(byte[] data, CameraProxy camera); } /** * An interface which wraps * {@link android.hardware.Camera.FaceDetectionListener}. */ public interface CameraFaceDetectionCallback { /** * Callback for face detection. * * @param faces Recognized face in the preview. * @param camera The camera which the preview image comes from. */ public void onFaceDetection(Camera.Face[] faces, CameraProxy camera); } /** * Opens the camera of the specified ID synchronously. * Loading Loading @@ -248,10 +261,11 @@ public interface CameraManager { /** * Sets the face detection listener. * * @param listener The listener for face detection results. * @param handler The handler in which the callback will be invoked. * @param callback The callback for face detection results. */ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public void setFaceDetectionListener(FaceDetectionListener listener); public void setFaceDetectionCallback(Handler handler, CameraFaceDetectionCallback callback); /** * Starts the face detection. Loading src/com/android/camera/PhotoModule.java +3 −3 Original line number Diff line number Diff line Loading @@ -664,7 +664,7 @@ public class PhotoModule CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId]; mUI.onStartFaceDetection(mDisplayOrientation, (info.facing == CameraInfo.CAMERA_FACING_FRONT)); mCameraDevice.setFaceDetectionListener(mUI); mCameraDevice.setFaceDetectionCallback(mHandler, mUI); mCameraDevice.startFaceDetection(); } } Loading @@ -676,7 +676,7 @@ public class PhotoModule if (!mFaceDetectionStarted) return; if (mParameters.getMaxNumDetectedFaces() > 0) { mFaceDetectionStarted = false; mCameraDevice.setFaceDetectionListener(null); mCameraDevice.setFaceDetectionCallback(null, null); mCameraDevice.stopFaceDetection(); mUI.clearFaces(); } Loading Loading @@ -1502,7 +1502,7 @@ public class PhotoModule if (mCameraDevice != null) { mCameraDevice.setZoomChangeListener(null); if(ApiHelper.HAS_FACE_DETECTION) { mCameraDevice.setFaceDetectionListener(null); mCameraDevice.setFaceDetectionCallback(null, null); } mCameraDevice.setErrorCallback(null); CameraHolder.instance().release(); Loading src/com/android/camera/PhotoUI.java +4 −8 Original line number Diff line number Diff line Loading @@ -27,13 +27,11 @@ import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.hardware.Camera.Face; import android.hardware.Camera.FaceDetectionListener; import android.hardware.Camera.Parameters; import android.hardware.Camera.Size; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; import android.view.TextureView; import android.view.View; import android.view.View.OnClickListener; Loading @@ -42,20 +40,19 @@ import android.view.ViewGroup; import android.view.ViewStub; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import android.widget.Toast; import com.android.camera.CameraPreference.OnPreferenceChangedListener; import com.android.camera.FocusOverlayManager.FocusUI; import com.android.camera.ui.AbstractSettingPopup; import com.android.camera.ui.CameraControls; import com.android.camera.ui.CameraRootView; import com.android.camera.ui.CameraSwitcher; import com.android.camera.ui.CameraSwitcher.CameraSwitchListener; import com.android.camera.ui.CountDownView; import com.android.camera.ui.CountDownView.OnCountDownFinishedListener; import com.android.camera.ui.CameraSwitcher; import com.android.camera.ui.FaceView; import com.android.camera.ui.FocusIndicator; import com.android.camera.ui.CameraRootView; import com.android.camera.ui.PieRenderer; import com.android.camera.ui.PieRenderer.PieListener; import com.android.camera.ui.RenderOverlay; Loading @@ -63,14 +60,13 @@ import com.android.camera.ui.ZoomRenderer; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import java.io.IOException; import java.util.List; public class PhotoUI implements PieListener, PreviewGestures.SingleTapListener, FocusUI, TextureView.SurfaceTextureListener, LocationManager.Listener, CameraRootView.MyDisplayListener, FaceDetectionListener { CameraManager.CameraFaceDetectionCallback { private static final String TAG = "CAM_UI"; private static final int UPDATE_TRANSFORM_MATRIX = 1; Loading Loading @@ -856,7 +852,7 @@ public class PhotoUI implements PieListener, } @Override public void onFaceDetection(Face[] faces, android.hardware.Camera camera) { public void onFaceDetection(Face[] faces, CameraManager.CameraProxy camera) { mFaceView.setFaces(faces); } Loading Loading
src/com/android/camera/AndroidCameraManagerImpl.java +78 −36 Original line number Diff line number Diff line Loading @@ -391,12 +391,12 @@ class AndroidCameraManagerImpl implements CameraManager { @TargetApi(ApiHelper.VERSION_CODES.HONEYCOMB) @Override public void setPreviewTexture(final SurfaceTexture surfaceTexture) { public void setPreviewTexture(SurfaceTexture surfaceTexture) { mCameraHandler.obtainMessage(SET_PREVIEW_TEXTURE_ASYNC, surfaceTexture).sendToTarget(); } @Override public void setPreviewDisplay(final SurfaceHolder surfaceHolder) { public void setPreviewDisplay(SurfaceHolder surfaceHolder) { mCameraHandler.obtainMessage(SET_PREVIEW_DISPLAY_ASYNC, surfaceHolder).sendToTarget(); } Loading @@ -413,18 +413,18 @@ class AndroidCameraManagerImpl implements CameraManager { @Override public void setPreviewDataCallback( Handler handler, final CameraPreviewDataCallback cb) { Handler handler, CameraPreviewDataCallback cb) { mCameraHandler.obtainMessage( SET_PREVIEW_CALLBACK, PreviewCallbackForward.instance(handler, this, cb)).sendToTarget(); PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override public void setPreviewDataCallbackWithBuffer( Handler handler, final CameraPreviewDataCallback cb) { Handler handler, CameraPreviewDataCallback cb) { mCameraHandler.obtainMessage( SET_PREVIEW_CALLBACK_WITH_BUFFER, PreviewCallbackForward.instance(handler, this, cb)).sendToTarget(); PreviewCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading @@ -436,7 +436,7 @@ class AndroidCameraManagerImpl implements CameraManager { public void autoFocus(Handler handler, CameraAFCallback cb) { mCameraHandler.obtainMessage( AUTO_FOCUS, AFCallbackForward.instance(handler, this, cb)).sendToTarget(); AFCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading @@ -448,24 +448,24 @@ class AndroidCameraManagerImpl implements CameraManager { @TargetApi(ApiHelper.VERSION_CODES.JELLY_BEAN) @Override public void setAutoFocusMoveCallback( Handler handler, final CameraAFMoveCallback cb) { Handler handler, CameraAFMoveCallback cb) { mCameraHandler.obtainMessage( SET_AUTO_FOCUS_MOVE_CALLBACK, AFMoveCallbackForward.instance(handler, this, cb)).sendToTarget(); AFMoveCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override public void takePicture( final Handler handler, final CameraShutterCallback shutter, final CameraPictureCallback raw, final CameraPictureCallback post, final CameraPictureCallback jpeg) { Handler handler, CameraShutterCallback shutter, CameraPictureCallback raw, CameraPictureCallback post, CameraPictureCallback jpeg) { mCameraHandler.requestTakePicture( ShutterCallbackForward.instance(handler, this, shutter), PictureCallbackForward.instance(handler, this, raw), PictureCallbackForward.instance(handler, this, post), PictureCallbackForward.instance(handler, this, jpeg)); ShutterCallbackForward.getNewInstance(handler, this, shutter), PictureCallbackForward.getNewInstance(handler, this, raw), PictureCallbackForward.getNewInstance(handler, this, post), PictureCallbackForward.getNewInstance(handler, this, jpeg)); } @Override Loading @@ -480,8 +480,11 @@ class AndroidCameraManagerImpl implements CameraManager { } @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public void setFaceDetectionListener(FaceDetectionListener listener) { mCameraHandler.obtainMessage(SET_FACE_DETECTION_LISTENER, listener).sendToTarget(); public void setFaceDetectionCallback( Handler handler, CameraFaceDetectionCallback cb) { mCameraHandler.obtainMessage( SET_FACE_DETECTION_LISTENER, FaceDetectionCallbackForward.getNewInstance(handler, this, cb)).sendToTarget(); } @Override Loading Loading @@ -537,15 +540,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraAFCallback mCallback; /** * Returns an instance of {@link AFCallbackForward}. * Returns a new instance of {@link AFCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link AFCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static AFCallbackForward instance( public static AFCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFCallback cb) { if (handler == null || camera == null || cb == null) return null; return new AFCallbackForward(handler, camera, cb); Loading Loading @@ -577,15 +580,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link AFMoveCallbackForward}. * Returns a new instance of {@link AFMoveCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link AFMoveCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static AFMoveCallbackForward instance( public static AFMoveCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraAFMoveCallback cb) { if (handler == null || camera == null || cb == null) return null; return new AFMoveCallbackForward(handler, camera, cb); Loading Loading @@ -619,15 +622,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link ShutterCallbackForward}. * Returns a new instance of {@link ShutterCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link ShutterCallbackForward}, * or null if any one of other parameters is null. * or null if any parameter is null. */ public static ShutterCallbackForward instance( public static ShutterCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraShutterCallback cb) { if (handler == null || camera == null || cb == null) return null; return new ShutterCallbackForward(handler, camera, cb); Loading Loading @@ -660,15 +663,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link PictureCallbackForward}. * Returns a new instance of {@link PictureCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link PictureCallbackForward}, * or null if any one of other parameters is null. * or null if any parameters is null. */ public static PictureCallbackForward instance( public static PictureCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPictureCallback cb) { if (handler == null || camera == null || cb == null) return null; return new PictureCallbackForward(handler, camera, cb); Loading Loading @@ -702,15 +705,15 @@ class AndroidCameraManagerImpl implements CameraManager { private final CameraProxy mCamera; /** * Returns an instance of {@link PreviewCallbackForward}. * Returns a new instance of {@link PreviewCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link PictureCallbackForward}, * or null if any one of other parameters is null. * @return The instance of the {@link PreviewCallbackForward}, * or null if any parameters is null. */ public static PreviewCallbackForward instance( public static PreviewCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraPreviewDataCallback cb) { if (handler == null || camera == null || cb == null) return null; return new PreviewCallbackForward(handler, camera, cb); Loading @@ -734,4 +737,43 @@ class AndroidCameraManagerImpl implements CameraManager { }); } } private static class FaceDetectionCallbackForward implements FaceDetectionListener { private final Handler mHandler; private final CameraFaceDetectionCallback mCallback; private final CameraProxy mCamera; /** * Returns a new instance of {@link FaceDetectionCallbackForward}. * * @param handler The handler in which the callback will be invoked in. * @param camera The {@link CameraProxy} which the callback is from. * @param cb The callback to be invoked. * @return The instance of the {@link FaceDetectionCallbackForward}, * or null if any parameter is null. */ public static FaceDetectionCallbackForward getNewInstance( Handler handler, CameraProxy camera, CameraFaceDetectionCallback cb) { if (handler == null || camera == null || cb == null) return null; return new FaceDetectionCallbackForward(handler, camera, cb); } private FaceDetectionCallbackForward( Handler h, CameraProxy camera, CameraFaceDetectionCallback cb) { mHandler = h; mCamera = camera; mCallback = cb; } @Override public void onFaceDetection( final Camera.Face[] faces, Camera camera) { mHandler.post(new Runnable() { @Override public void run() { mCallback.onFaceDetection(faces, mCamera); } }); } } }
src/com/android/camera/CameraManager.java +19 −5 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ package com.android.camera; import android.annotation.TargetApi; import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.hardware.Camera.ErrorCallback; import android.hardware.Camera.FaceDetectionListener; import android.hardware.Camera.OnZoomChangeListener; import android.hardware.Camera.Parameters; import android.os.Handler; Loading @@ -41,7 +41,6 @@ import java.io.IOException; * * TODO: provide callback interfaces for: * {@code android.hardware.Camera.ErrorCallback}, * {@code android.hardware.Camera.FaceDetectionListener}, * {@code android.hardware.Camera.OnZoomChangeListener}, and * {@code android.hardware.Camera.Parameters}. */ Loading Loading @@ -87,6 +86,20 @@ public interface CameraManager { public void onPreviewFrame(byte[] data, CameraProxy camera); } /** * An interface which wraps * {@link android.hardware.Camera.FaceDetectionListener}. */ public interface CameraFaceDetectionCallback { /** * Callback for face detection. * * @param faces Recognized face in the preview. * @param camera The camera which the preview image comes from. */ public void onFaceDetection(Camera.Face[] faces, CameraProxy camera); } /** * Opens the camera of the specified ID synchronously. * Loading Loading @@ -248,10 +261,11 @@ public interface CameraManager { /** * Sets the face detection listener. * * @param listener The listener for face detection results. * @param handler The handler in which the callback will be invoked. * @param callback The callback for face detection results. */ @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public void setFaceDetectionListener(FaceDetectionListener listener); public void setFaceDetectionCallback(Handler handler, CameraFaceDetectionCallback callback); /** * Starts the face detection. Loading
src/com/android/camera/PhotoModule.java +3 −3 Original line number Diff line number Diff line Loading @@ -664,7 +664,7 @@ public class PhotoModule CameraInfo info = CameraHolder.instance().getCameraInfo()[mCameraId]; mUI.onStartFaceDetection(mDisplayOrientation, (info.facing == CameraInfo.CAMERA_FACING_FRONT)); mCameraDevice.setFaceDetectionListener(mUI); mCameraDevice.setFaceDetectionCallback(mHandler, mUI); mCameraDevice.startFaceDetection(); } } Loading @@ -676,7 +676,7 @@ public class PhotoModule if (!mFaceDetectionStarted) return; if (mParameters.getMaxNumDetectedFaces() > 0) { mFaceDetectionStarted = false; mCameraDevice.setFaceDetectionListener(null); mCameraDevice.setFaceDetectionCallback(null, null); mCameraDevice.stopFaceDetection(); mUI.clearFaces(); } Loading Loading @@ -1502,7 +1502,7 @@ public class PhotoModule if (mCameraDevice != null) { mCameraDevice.setZoomChangeListener(null); if(ApiHelper.HAS_FACE_DETECTION) { mCameraDevice.setFaceDetectionListener(null); mCameraDevice.setFaceDetectionCallback(null, null); } mCameraDevice.setErrorCallback(null); CameraHolder.instance().release(); Loading
src/com/android/camera/PhotoUI.java +4 −8 Original line number Diff line number Diff line Loading @@ -27,13 +27,11 @@ import android.graphics.SurfaceTexture; import android.hardware.Camera; import android.hardware.Camera.Face; import android.hardware.Camera.FaceDetectionListener; import android.hardware.Camera.Parameters; import android.hardware.Camera.Size; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.Gravity; import android.view.MotionEvent; import android.view.TextureView; import android.view.View; import android.view.View.OnClickListener; Loading @@ -42,20 +40,19 @@ import android.view.ViewGroup; import android.view.ViewStub; import android.widget.FrameLayout; import android.widget.FrameLayout.LayoutParams; import android.widget.ImageView; import android.widget.Toast; import com.android.camera.CameraPreference.OnPreferenceChangedListener; import com.android.camera.FocusOverlayManager.FocusUI; import com.android.camera.ui.AbstractSettingPopup; import com.android.camera.ui.CameraControls; import com.android.camera.ui.CameraRootView; import com.android.camera.ui.CameraSwitcher; import com.android.camera.ui.CameraSwitcher.CameraSwitchListener; import com.android.camera.ui.CountDownView; import com.android.camera.ui.CountDownView.OnCountDownFinishedListener; import com.android.camera.ui.CameraSwitcher; import com.android.camera.ui.FaceView; import com.android.camera.ui.FocusIndicator; import com.android.camera.ui.CameraRootView; import com.android.camera.ui.PieRenderer; import com.android.camera.ui.PieRenderer.PieListener; import com.android.camera.ui.RenderOverlay; Loading @@ -63,14 +60,13 @@ import com.android.camera.ui.ZoomRenderer; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; import java.io.IOException; import java.util.List; public class PhotoUI implements PieListener, PreviewGestures.SingleTapListener, FocusUI, TextureView.SurfaceTextureListener, LocationManager.Listener, CameraRootView.MyDisplayListener, FaceDetectionListener { CameraManager.CameraFaceDetectionCallback { private static final String TAG = "CAM_UI"; private static final int UPDATE_TRANSFORM_MATRIX = 1; Loading Loading @@ -856,7 +852,7 @@ public class PhotoUI implements PieListener, } @Override public void onFaceDetection(Face[] faces, android.hardware.Camera camera) { public void onFaceDetection(Face[] faces, CameraManager.CameraProxy camera) { mFaceView.setFaces(faces); } Loading