diff options
-rw-r--r-- | api/current.txt | 14 | ||||
-rw-r--r-- | core/java/android/hardware/Camera.java | 96 |
2 files changed, 37 insertions, 73 deletions
diff --git a/api/current.txt b/api/current.txt index 2a0bdd4..286e640 100644 --- a/api/current.txt +++ b/api/current.txt @@ -9098,6 +9098,7 @@ package android.hardware { method public final void release(); method public final void setDisplayOrientation(int); method public final void setErrorCallback(android.hardware.Camera.ErrorCallback); + method public final void setFaceDetectionListener(android.hardware.Camera.FaceDetectionListener); method public final void setOneShotPreviewCallback(android.hardware.Camera.PreviewCallback); method public void setParameters(android.hardware.Camera.Parameters); method public final void setPreviewCallback(android.hardware.Camera.PreviewCallback); @@ -9105,8 +9106,10 @@ package android.hardware { method public final void setPreviewDisplay(android.view.SurfaceHolder) throws java.io.IOException; method public final void setPreviewTexture(android.graphics.SurfaceTexture) throws java.io.IOException; method public final void setZoomChangeListener(android.hardware.Camera.OnZoomChangeListener); + method public final void startFaceDetection(); method public final void startPreview(); method public final void startSmoothZoom(int); + method public final void stopFaceDetection(); method public final void stopPreview(); method public final void stopSmoothZoom(); method public final void takePicture(android.hardware.Camera.ShutterCallback, android.hardware.Camera.PictureCallback, android.hardware.Camera.PictureCallback); @@ -9140,6 +9143,16 @@ package android.hardware { method public abstract void onError(int, android.hardware.Camera); } + public static class Camera.Face { + ctor public Camera.Face(); + field public android.graphics.Rect rect; + field public int score; + } + + public static abstract interface Camera.FaceDetectionListener { + method public abstract void onFaceDetection(android.hardware.Camera.Face[], android.hardware.Camera); + } + public static abstract interface Camera.OnZoomChangeListener { method public abstract void onZoomChange(int, boolean, android.hardware.Camera); } @@ -9164,6 +9177,7 @@ package android.hardware { method public int getJpegThumbnailQuality(); method public android.hardware.Camera.Size getJpegThumbnailSize(); method public int getMaxExposureCompensation(); + method public int getMaxNumDetectedFaces(); method public int getMaxNumFocusAreas(); method public int getMaxNumMeteringAreas(); method public int getMaxZoom(); diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index 8d3750a..cab8457 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -167,22 +167,13 @@ public class Camera { /** * Hardware face detection. It does not use much CPU. - * - * @see #startFaceDetection(int) - * @see Parameters#getMaxNumDetectedFaces(int) - * @see #CAMERA_FACE_DETECTION_SW - * @hide */ - public static final int CAMERA_FACE_DETECTION_HW = 0; + private static final int CAMERA_FACE_DETECTION_HW = 0; /** - * Software face detection. It uses some CPU. Applications must use - * {@link #setPreviewTexture(SurfaceTexture)} for preview in this mode. - * - * @see #CAMERA_FACE_DETECTION_HW - * @hide + * Software face detection. It uses some CPU. */ - public static final int CAMERA_FACE_DETECTION_SW = 1; + private static final int CAMERA_FACE_DETECTION_SW = 1; /** * Returns the number of physical cameras available on this device. @@ -1071,7 +1062,6 @@ public class Camera { /** * Callback interface for face detected in the preview frame. * - * @hide */ public interface FaceDetectionListener { @@ -1086,12 +1076,11 @@ public class Camera { } /** - * Registers a listener to be notified about the face detected of the + * Registers a listener to be notified about the faces detected in the * preview frame. * * @param listener the listener to notify - * @see #startFaceDetection(int) - * @hide + * @see #startFaceDetection() */ public final void setFaceDetectionListener(FaceDetectionListener listener) { @@ -1099,48 +1088,37 @@ public class Camera { } /** - * Start the face detection. This should be called after preview is started. + * Starts the face detection. This should be called after preview is started. * The camera will notify {@link FaceDetectionListener} of the detected * faces in the preview frame. The detected faces may be the same as the * previous ones. Applications should call {@link #stopFaceDetection} to * stop the face detection. This method is supported if {@link - * Parameters#getMaxNumDetectedFaces(int)} returns a number larger than 0. - * Hardware and software face detection cannot be used at the same time. + * Parameters#getMaxNumDetectedFaces()} returns a number larger than 0. * If the face detection has started, apps should not call this again. * - * In hardware face detection mode, {@link Parameters#setWhiteBalance(String)}, + * When the face detection is running, {@link Parameters#setWhiteBalance(String)}, * {@link Parameters#setFocusAreas(List)}, and {@link Parameters#setMeteringAreas(List)} * have no effect. * - * @param type face detection type. This can be either {@link - * #CAMERA_FACE_DETECTION_HW} or {@link #CAMERA_FACE_DETECTION_SW} - * @throws IllegalArgumentException if the face detection type is - * unsupported or invalid. + * @throws IllegalArgumentException if the face detection is unsupported. * @throws RuntimeException if the method fails or the face detection is * already running. - * @see #CAMERA_FACE_DETECTION_HW - * @see #CAMERA_FACE_DETECTION_SW * @see FaceDetectionListener * @see #stopFaceDetection() - * @see Parameters#getMaxNumDetectedFaces(int) - * @hide + * @see Parameters#getMaxNumDetectedFaces() */ - public final void startFaceDetection(int type) { - if (type != CAMERA_FACE_DETECTION_HW && type != CAMERA_FACE_DETECTION_SW) { - throw new IllegalArgumentException("Invalid face detection type " + type); - } + public final void startFaceDetection() { if (mFaceDetectionRunning) { throw new RuntimeException("Face detection is already running"); } - _startFaceDetection(type); + _startFaceDetection(CAMERA_FACE_DETECTION_HW); mFaceDetectionRunning = true; } /** - * Stop the face detection. + * Stops the face detection. * * @see #startFaceDetection(int) - * @hide */ public final void stopFaceDetection() { _stopFaceDetection(); @@ -1153,17 +1131,21 @@ public class Camera { /** * The information of a face from camera face detection. * - * @hide */ public static class Face { + /** + * Create an empty face. + */ public Face() { } /** * Bounds of the face. (-1000, -1000) represents the top-left of the * camera field of view, and (1000, 1000) represents the bottom-right of - * the field of view. The width and height cannot be 0 or negative. This - * is supported by both hardware and software face detection. + * the field of view. For example, suppose the size of the viewfinder UI + * is 800x480. The rect passed from the driver is (-1000, -1000, 0, 0). + * The corresponding viewfinder rect should be (0, 0, 400, 240). The + * width and height of the rect will not be 0 or negative. * * <p>The direction is relative to the sensor orientation, that is, what * the sensor sees. The direction is not affected by the rotation or @@ -1175,37 +1157,11 @@ public class Camera { /** * The confidence level of the face. The range is 1 to 100. 100 is the - * highest confidence. This is supported by both hardware and software - * face detction. + * highest confidence. * * @see #startFaceDetection(int) */ public int score; - - /** - * An unique id per face while the face is visible to the tracker. If - * the face leaves the field-of-view and comes back, it will get a new - * id. If the value is 0, id is not supported. - */ - public int id; - - /** - * The coordinates of the center of the left eye. The range is -1000 to - * 1000. null if this is not supported. - */ - public Point leftEye; - - /** - * The coordinates of the center of the right eye. The range is -1000 to - * 1000. null if this is not supported. - */ - public Point rightEye; - - /** - * The coordinates of the center of the mouth. The range is -1000 to - * 1000. null if this is not supported. - */ - public Point mouth; } // Error codes match the enum in include/ui/Camera.h @@ -3167,15 +3123,9 @@ public class Camera { * * @return the maximum number of detected face supported by the camera. * @see #startFaceDetection(int) - * @hide */ - public int getMaxNumDetectedFaces(int type) { - if (type == CAMERA_FACE_DETECTION_HW) { - return getInt(KEY_MAX_NUM_DETECTED_FACES_HW, 0); - } else if (type == CAMERA_FACE_DETECTION_SW){ - return getInt(KEY_MAX_NUM_DETECTED_FACES_SW, 0); - } - throw new IllegalArgumentException("Invalid face detection type " + type); + public int getMaxNumDetectedFaces() { + return getInt(KEY_MAX_NUM_DETECTED_FACES_HW, 0); } /** |