Loading camera/libcameraservice/CameraHardwareStub.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,12 @@ CameraParameters CameraHardwareStub::getParameters() const return mParameters; } status_t CameraHardwareStub::sendCommand(int32_t command, int32_t arg1, int32_t arg2) { return BAD_VALUE; } void CameraHardwareStub::release() { } Loading camera/libcameraservice/CameraHardwareStub.h +2 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ public: virtual status_t dump(int fd, const Vector<String16>& args) const; virtual status_t setParameters(const CameraParameters& params); virtual CameraParameters getParameters() const; virtual status_t sendCommand(int32_t command, int32_t arg1, int32_t arg2); virtual void release(); static sp<CameraHardwareInterface> createInstance(); Loading camera/libcameraservice/CameraService.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -1134,6 +1134,21 @@ String8 CameraService::Client::getParameters() const return params; } status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) { LOGD("sendCommand (pid %d)", getCallingPid()); Mutex::Autolock lock(mLock); status_t result = checkPid(); if (result != NO_ERROR) return result; if (mHardware == 0) { LOGE("mHardware is NULL, returning."); return INVALID_OPERATION; } return mHardware->sendCommand(cmd, arg1, arg2); } void CameraService::Client::copyFrameAndPostCopiedFrame(sp<IMemoryHeap> heap, size_t offset, size_t size) { LOGV("copyFrameAndPostCopiedFrame"); Loading camera/libcameraservice/CameraService.h +3 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,9 @@ private: // get preview/capture parameters - key/value pairs virtual String8 getParameters() const; // send command to camera driver virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2); // our client... const sp<ICameraClient>& getCameraClient() const { return mCameraClient; } Loading core/java/android/hardware/Camera.java +111 −8 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class Camera { case CAMERA_MSG_ZOOM: if (mZoomCallback != null) { mZoomCallback.onZoomUpdate(msg.arg1, mCamera); mZoomCallback.onZoomUpdate(msg.arg1, msg.arg2 != 0, mCamera); } return; Loading Loading @@ -467,6 +467,26 @@ public class Camera { native_takePicture(); } /** * Zooms to the requested value smoothly. Driver will generate {@link * #ZoomCallback} for the current zoom value and whether zoom is stopped. * The applications can call {@link #stopSmoothZoom} to stop the zoom * earlier. The applications should not call startSmoothZoom again or {@link * android.hardware.Camera.Parameters#setZoom(int)} before the zoom stops. * * @param value zoom value. The valid range is 0 to {@link * android.hardware.Camera.Parameters#getMaxZoom}. * @hide */ public native final void startSmoothZoom(int value); /** * Stops the smooth zoom. The applications should wait for the {@link * #ZoomCallback} to know when the zoom is actually stopped. * @hide */ public native final void stopSmoothZoom(); /** * Handles the zoom callback. * Loading @@ -476,18 +496,21 @@ public class Camera { { /** * Callback for zoom updates * @param zoomLevel new zoom level in 1/1000 increments, * e.g. a zoom of 3.2x is stored as 3200. Accuracy of the * value is dependent on the hardware implementation. Not * all devices will generate this callback. * * @param zoomValue the current zoom value. In smooth zoom mode, camera * generates this callback for every new zoom value. * @param stopped whether smooth zoom is stopped. If the value is true, * this is the last zoom update for the application. * * @param camera the Camera service object * @see android.hardware.Camera.Parameters#startSmoothZoom */ void onZoomUpdate(int zoomLevel, Camera camera); void onZoomUpdate(int zoomValue, boolean stopped, Camera camera); }; /** * Registers a callback to be invoked when the zoom * level is updated by the camera driver. * Registers a callback to be invoked when the zoom value is updated by the * camera driver during smooth zoom. * @param cb the callback to run * @hide */ Loading Loading @@ -642,20 +665,24 @@ public class Camera { * Flash will not be fired. */ public static final String FLASH_MODE_OFF = "off"; /** * Flash will be fired automatically when required. The flash may be fired * during preview, auto-focus, or snapshot depending on the driver. */ public static final String FLASH_MODE_AUTO = "auto"; /** * Flash will always be fired during snapshot. The flash may also be * fired during preview or auto-focus depending on the driver. */ public static final String FLASH_MODE_ON = "on"; /** * Flash will be fired in red-eye reduction mode. */ public static final String FLASH_MODE_RED_EYE = "red-eye"; /** * Constant emission of light during preview, auto-focus and snapshot. * This can also be used for video recording. Loading Loading @@ -684,12 +711,14 @@ public class Camera { * Auto-focus mode. */ public static final String FOCUS_MODE_AUTO = "auto"; /** * Focus is set at infinity. Applications should not call * {@link #autoFocus(AutoFocusCallback)} in this mode. */ public static final String FOCUS_MODE_INFINITY = "infinity"; public static final String FOCUS_MODE_MACRO = "macro"; /** * Focus is fixed. The camera is always in this mode if the focus is not * adjustable. If the camera has auto-focus, this mode can fix the Loading Loading @@ -1367,6 +1396,80 @@ public class Camera { return split(str); } /** * Gets current zoom value. This also works when smooth zoom is in * progress. * * @return the current zoom value. The range is 0 to {@link * #getMaxZoom}. * @hide */ public int getZoom() { return getInt("zoom"); } /** * Sets current zoom value. If {@link #startSmoothZoom(int)} has been * called and zoom is not stopped yet, applications should not call this * method. * * @param value zoom value. The valid range is 0 to {@link #getMaxZoom}. * @hide */ public void setZoom(int value) { set("zoom", value); } /** * Returns true if zoom is supported. Applications should call this * before using other zoom methods. * * @return true if zoom is supported. * @hide */ public boolean isZoomSupported() { String str = get("zoom-supported"); return "true".equals(str); } /** * Gets the maximum zoom value allowed for snapshot. This is the maximum * value that applications can set to {@link #setZoom(int)}. * * @return the maximum zoom value supported by the camera. * @hide */ public int getMaxZoom() { return getInt("max-zoom"); } /** * Gets the zoom factors of all zoom values. * * @return the zoom factors in 1/100 increments. Ex: a zoom of 3.2x is * returned as 320. Accuracy of the value is dependent on the * hardware implementation. The first element of the list is the * zoom factor of first zoom value. If the first zoom value is * 0, the zoom factor should be 100. The last element is the * zoom factor of zoom value {@link #getMaxZoom}. * @hide */ public List<Integer> getZoomFactors() { return splitInt(get("zoom-factors")); } /** * Returns true if smooth zoom is supported. Applications should call * this before using other smooth zoom methods. * * @return true if smooth zoom is supported. * @hide */ public boolean isSmoothZoomSupported() { String str = get("smooth-zoom-supported"); return "true".equals(str); } // Splits a comma delimited string to an ArrayList of String. // Return null if the passing string is null or the size is 0. private ArrayList<String> split(String str) { Loading Loading
camera/libcameraservice/CameraHardwareStub.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -368,6 +368,12 @@ CameraParameters CameraHardwareStub::getParameters() const return mParameters; } status_t CameraHardwareStub::sendCommand(int32_t command, int32_t arg1, int32_t arg2) { return BAD_VALUE; } void CameraHardwareStub::release() { } Loading
camera/libcameraservice/CameraHardwareStub.h +2 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,8 @@ public: virtual status_t dump(int fd, const Vector<String16>& args) const; virtual status_t setParameters(const CameraParameters& params); virtual CameraParameters getParameters() const; virtual status_t sendCommand(int32_t command, int32_t arg1, int32_t arg2); virtual void release(); static sp<CameraHardwareInterface> createInstance(); Loading
camera/libcameraservice/CameraService.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -1134,6 +1134,21 @@ String8 CameraService::Client::getParameters() const return params; } status_t CameraService::Client::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) { LOGD("sendCommand (pid %d)", getCallingPid()); Mutex::Autolock lock(mLock); status_t result = checkPid(); if (result != NO_ERROR) return result; if (mHardware == 0) { LOGE("mHardware is NULL, returning."); return INVALID_OPERATION; } return mHardware->sendCommand(cmd, arg1, arg2); } void CameraService::Client::copyFrameAndPostCopiedFrame(sp<IMemoryHeap> heap, size_t offset, size_t size) { LOGV("copyFrameAndPostCopiedFrame"); Loading
camera/libcameraservice/CameraService.h +3 −0 Original line number Diff line number Diff line Loading @@ -122,6 +122,9 @@ private: // get preview/capture parameters - key/value pairs virtual String8 getParameters() const; // send command to camera driver virtual status_t sendCommand(int32_t cmd, int32_t arg1, int32_t arg2); // our client... const sp<ICameraClient>& getCameraClient() const { return mCameraClient; } Loading
core/java/android/hardware/Camera.java +111 −8 Original line number Diff line number Diff line Loading @@ -301,7 +301,7 @@ public class Camera { case CAMERA_MSG_ZOOM: if (mZoomCallback != null) { mZoomCallback.onZoomUpdate(msg.arg1, mCamera); mZoomCallback.onZoomUpdate(msg.arg1, msg.arg2 != 0, mCamera); } return; Loading Loading @@ -467,6 +467,26 @@ public class Camera { native_takePicture(); } /** * Zooms to the requested value smoothly. Driver will generate {@link * #ZoomCallback} for the current zoom value and whether zoom is stopped. * The applications can call {@link #stopSmoothZoom} to stop the zoom * earlier. The applications should not call startSmoothZoom again or {@link * android.hardware.Camera.Parameters#setZoom(int)} before the zoom stops. * * @param value zoom value. The valid range is 0 to {@link * android.hardware.Camera.Parameters#getMaxZoom}. * @hide */ public native final void startSmoothZoom(int value); /** * Stops the smooth zoom. The applications should wait for the {@link * #ZoomCallback} to know when the zoom is actually stopped. * @hide */ public native final void stopSmoothZoom(); /** * Handles the zoom callback. * Loading @@ -476,18 +496,21 @@ public class Camera { { /** * Callback for zoom updates * @param zoomLevel new zoom level in 1/1000 increments, * e.g. a zoom of 3.2x is stored as 3200. Accuracy of the * value is dependent on the hardware implementation. Not * all devices will generate this callback. * * @param zoomValue the current zoom value. In smooth zoom mode, camera * generates this callback for every new zoom value. * @param stopped whether smooth zoom is stopped. If the value is true, * this is the last zoom update for the application. * * @param camera the Camera service object * @see android.hardware.Camera.Parameters#startSmoothZoom */ void onZoomUpdate(int zoomLevel, Camera camera); void onZoomUpdate(int zoomValue, boolean stopped, Camera camera); }; /** * Registers a callback to be invoked when the zoom * level is updated by the camera driver. * Registers a callback to be invoked when the zoom value is updated by the * camera driver during smooth zoom. * @param cb the callback to run * @hide */ Loading Loading @@ -642,20 +665,24 @@ public class Camera { * Flash will not be fired. */ public static final String FLASH_MODE_OFF = "off"; /** * Flash will be fired automatically when required. The flash may be fired * during preview, auto-focus, or snapshot depending on the driver. */ public static final String FLASH_MODE_AUTO = "auto"; /** * Flash will always be fired during snapshot. The flash may also be * fired during preview or auto-focus depending on the driver. */ public static final String FLASH_MODE_ON = "on"; /** * Flash will be fired in red-eye reduction mode. */ public static final String FLASH_MODE_RED_EYE = "red-eye"; /** * Constant emission of light during preview, auto-focus and snapshot. * This can also be used for video recording. Loading Loading @@ -684,12 +711,14 @@ public class Camera { * Auto-focus mode. */ public static final String FOCUS_MODE_AUTO = "auto"; /** * Focus is set at infinity. Applications should not call * {@link #autoFocus(AutoFocusCallback)} in this mode. */ public static final String FOCUS_MODE_INFINITY = "infinity"; public static final String FOCUS_MODE_MACRO = "macro"; /** * Focus is fixed. The camera is always in this mode if the focus is not * adjustable. If the camera has auto-focus, this mode can fix the Loading Loading @@ -1367,6 +1396,80 @@ public class Camera { return split(str); } /** * Gets current zoom value. This also works when smooth zoom is in * progress. * * @return the current zoom value. The range is 0 to {@link * #getMaxZoom}. * @hide */ public int getZoom() { return getInt("zoom"); } /** * Sets current zoom value. If {@link #startSmoothZoom(int)} has been * called and zoom is not stopped yet, applications should not call this * method. * * @param value zoom value. The valid range is 0 to {@link #getMaxZoom}. * @hide */ public void setZoom(int value) { set("zoom", value); } /** * Returns true if zoom is supported. Applications should call this * before using other zoom methods. * * @return true if zoom is supported. * @hide */ public boolean isZoomSupported() { String str = get("zoom-supported"); return "true".equals(str); } /** * Gets the maximum zoom value allowed for snapshot. This is the maximum * value that applications can set to {@link #setZoom(int)}. * * @return the maximum zoom value supported by the camera. * @hide */ public int getMaxZoom() { return getInt("max-zoom"); } /** * Gets the zoom factors of all zoom values. * * @return the zoom factors in 1/100 increments. Ex: a zoom of 3.2x is * returned as 320. Accuracy of the value is dependent on the * hardware implementation. The first element of the list is the * zoom factor of first zoom value. If the first zoom value is * 0, the zoom factor should be 100. The last element is the * zoom factor of zoom value {@link #getMaxZoom}. * @hide */ public List<Integer> getZoomFactors() { return splitInt(get("zoom-factors")); } /** * Returns true if smooth zoom is supported. Applications should call * this before using other smooth zoom methods. * * @return true if smooth zoom is supported. * @hide */ public boolean isSmoothZoomSupported() { String str = get("smooth-zoom-supported"); return "true".equals(str); } // Splits a comma delimited string to an ArrayList of String. // Return null if the passing string is null or the size is 0. private ArrayList<String> split(String str) { Loading