diff --git a/_data/full_tree.yml b/_data/full_tree.yml
deleted file mode 100644
index b600058d..00000000
--- a/_data/full_tree.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-tree_file_list:
- - sidelist-full-tree.html
- - sidelist-programming/programming-oc.html
- - sidelist-programming/programming-oc-v1.0.0.html
- - sidelist-programming/programming-oc-v1.0.1.html
- - sidelist-programming/programming-oc-v1.0.3.html
- - sidelist-programming/programming-oc-v2.0.0.html
- - sidelist-programming/programming-oc-v2.1.4.html
- - sidelist-programming/programming-oc-v2.3.5.html
- - sidelist-programming/programming-oc-v2.3.20.html
- - sidelist-programming/programming-android.html
- - sidelist-programming/programming-android-v1.0.0.html
- - sidelist-programming/programming-android-v1.0.1.html
- - sidelist-programming/programming-android-v1.0.3.html
- - sidelist-programming/programming-android-v2.0.0.html
- - sidelist-programming/programming-android-v2.1.4.html
- - sidelist-programming/programming-android-v2.3.5.html
- - sidelist-programming/programming-android-v2.3.12.html
- - sidelist-programming/programming-android-v3.0.3.html
diff --git a/_data/product_version.yml b/_data/product_version.yml
deleted file mode 100644
index 57ecfdcf..00000000
--- a/_data/product_version.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-useGroupedVersion: true
-
-version_info_list_mobile:
- - value: latest version
- - value: 4.x
- child:
- - 4.2.10_Android
- - 4.2.1_ios
- - 4.2.0
- - 4.0.2
- - 4.0.1
- - 4.0.0
- - value: 3.x
- child:
- - 3.0.3
- - 3.0.2
- - 3.0.1
- - 3.0.0
- - value: 2.x
- child:
- - 2.3.21_ios
- - 2.3.20
- - 2.3.12
- - 2.3.11
- - 2.3.10
- - 2.3.5
- - 2.3.4
- - 2.3.3
- - 2.3.2
- - 2.3.1_ios
- - 2.3.0
- - 2.1.4
- - 2.1.3
- - 2.1.1
- - 2.0.0
diff --git a/_includes/release-notes/product-highlight-2.0.0.md b/_includes/release-notes/product-highlight-2.0.0.md
deleted file mode 100644
index ac28a856..00000000
--- a/_includes/release-notes/product-highlight-2.0.0.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
-- Simplified the usage of camera-control APIs. The new APIs are easier to use and cover more scenarios.
-- Simplified the usage of camera enhancer features. Users can enable all required features via the method `enableFeatures` by inputting the combined enumeration value.
-- Extended the features of `DCECameraView`. Users can add and personalize the overlays and viewfinder on the camera UI.
-- Extended the features of `DCEFrame`. `DCEFrame` will store more frame information to cover more scenarios. In addition, the method `toBitmap` is added to enable users to convert `DCEFrame` to a visible image.
-- The camera UI will display a fuzzified image instead of the previously captured image when the camera UI is quit and resumed.
-
-
diff --git a/_includes/release-notes/product-highlight-2.1.0.md b/_includes/release-notes/product-highlight-2.1.0.md
deleted file mode 100644
index b3ba81b9..00000000
--- a/_includes/release-notes/product-highlight-2.1.0.md
+++ /dev/null
@@ -1,4 +0,0 @@
-
-- Added class scan region configuration APIs and `RegionDefinition` for users to set the region of interest. The frames will be cropped based on the scan region to accelerate further frame processing.
-
-
diff --git a/_includes/release-notes/product-highlight-2.3.0.md b/_includes/release-notes/product-highlight-2.3.0.md
deleted file mode 100644
index 1ac312fb..00000000
--- a/_includes/release-notes/product-highlight-2.3.0.md
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-* The same camera enhancer instance can now be used by multiple products. (JS edition only)
-* Added photo capturing features. You can now capture high-resolution images using the library. (Mobile editions only)
-* Added device feedback features. You can now trigger vibrations or beep sounds of mobile devices. (Mobile editions only)
-
diff --git a/_includes/sidelist-full-tree.html b/_includes/sidelist-full-tree.html
deleted file mode 100644
index ac90b4fd..00000000
--- a/_includes/sidelist-full-tree.html
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/_layouts/default-layout.html b/_layouts/default-layout-OLD.html
similarity index 100%
rename from _layouts/default-layout.html
rename to _layouts/default-layout-OLD.html
diff --git a/_layouts/search-page.html b/_layouts/search-page-OLD.html
similarity index 100%
rename from _layouts/search-page.html
rename to _layouts/search-page-OLD.html
diff --git a/index.md b/index.md
deleted file mode 100644
index e8e80f23..00000000
--- a/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: home-page
-title: Index of Dynamsoft Camera Enhancer
-description: This is the documentation - Index of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer
-needAutoGenerateSidebar: true
-breadcrumbText: Start Programming
----
-
-# Dynamsoft Camera Enhancer Mobile
-
-- [Android]({{site.android}})
-- [iOS]({{site.ios}})
diff --git a/programming-old/android/api-reference-v1.0.3.md b/programming-old/android/api-reference-v1.0.3.md
deleted file mode 100644
index a5b705ae..00000000
--- a/programming-old/android/api-reference-v1.0.3.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v1.0.3.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### [Initialization]({{site.android-api}}initialization.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`]({{site.android-api}}initialization.html#initlicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-### [Frame preprocessing methods]({{site.android-api}}preprocess.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`AcquireListFrame`]({{site.android-api}}preprocess.html#acquirelistframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`]({{site.android-api}}preprocess.html#enablefastmode) | Set true/false to turn on/off DCE fast mode. |
-| [`getEnabledFastModeStatus`]({{site.android-api}}preprocess.html#getenabledfastmodestatus) | Get the current status of fast mode (on/off). |
-| [`enableFrameFilter`]({{site.android-api}}preprocess.html#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`getEnabledFrameFilterStatus`]({{site.android-api}}preprocess.html#getenabledframefilterstatus) | Get the status (on/off) of DCE frame filter mode. |
-| [`setMaxFrameRate`]({{site.android-api}}preprocess.html#setmaxframerate) | Set max frame rate. |
-| [`enableSensorControl`]({{site.android-api}}preprocess.html#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`getEnabledSensorControlStatus`]({{site.android-api}}preprocess.html#getenabledsensorcontrolstatus) | Get the status (on/off) of DCE sensor control mode. |
-| [`setSensorControlThreshold`]({{site.android-api}}preprocess.html#setsensorcontrolthreshold) | Enable user to change sensor sensitivity (default value is 50). |
-
-### [Regular camera methods]({{site.android-api}}camera.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDeviceLevel`]({{site.android-api}}camera.html#getdevicelevel)| Make an evaluation on the current device and define its level for further use. |
-| [`setAutoModeLevelParam`]({{site.android-api}}camera.html#setautomodelevelparam) | Set auto mode level parameter. |
-| [`updateCameraSetting`]({{site.android-api}}camera.html#updatecamerasetting) | Update camera, filter and focus settings from Json. |
-| [`getVersion`]({{site.android-api}}camera.html#getversion) | Check current DCE version |
-| [`getCameraCurrentState`]({{site.android-api}}camera.html#getcameracurrentstate) | Get camera current state. |
-| [`getCameraDesiredState`]({{site.android-api}}camera.html#getcameradesiredstate) | Get camera desired state. |
-| [`setCameraDesiredState`]({{site.android-api}}camera.html#setcameradesiredstate) | Set Camera on/off. |
-| [`pauseCamera`]({{site.android-api}}camera.html#pausecamera-and-resumecamera) | Pause Camera. |
-| [`resumeCamera`]({{site.android-api}}camera.html#pausecamera-and-resumecamera) | Resume Camera. |
-| [`startScanning`]({{site.android-api}}camera.html#stopscanning-and-startscanning) | Start scanning. |
-| [`stopScanning`]({{site.android-api}}camera.html#stopscanning-and-startscanning) | Stop scanning. |
-| [`addCameraListener`]({{site.android-api}}camera.html#addcameralistener) | Add camera listener (on preview original, filtered or fast frames). |
-| [`removeCameraListener`]({{site.android-api}}camera.html#removecameralistener) | Remove camera listener. |
-| [`getTorchCurrentState`]({{site.android-api}}camera.html#gettorchcurrentstate) | Get torch current state. |
-| [`getTorchDesiredState`]({{site.android-api}}camera.html#gettorchdesiredstate) | Get torch desired state. |
-| [`setTorchDesiredState`]({{site.android-api}}camera.html#settorchdesiredstate) | Set torch state. |
-| [`addTorchListener`]({{site.android-api}}camera.html#addtorchlistener) | Add torch listener. |
-| [`getCameraPosition`]({{site.android-api}}camera.html#getcameraposition) | Get current camera position. |
-| [`switchCameraPosition`]({{site.android-api}}camera.html#switchcameraposition) | Switch camera position front/back. |
-| [`getResolution`]({{site.android-api}}camera.html#getresolution) | Get current resolution setting. |
-| [`setResolution`]({{site.android-api}}camera.html#setresolution) | Set resolution. |
-| [`getResolutionList`]({{site.android-api}}camera.html#getresolutionlist) | Get all available resolutions |
-
-### [Focus & zoom methods]({{site.android-api}}zoom-focus.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`setAutoFocusPosition`]({{site.android-api}}zoom-focus.html#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`]({{site.android-api}}zoom-focus.html#setmanualfocusposition) | Set manual focus position (This focus position is only effected once for each time the API is called). |
-| [`setFocalLength`]({{site.android-api}}zoom-focus.html#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`]({{site.android-api}}zoom-focus.html#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`getEnabledDCEAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenableddceautofocusstatus) | Get the status (on/off) of DCE auto focus. |
-| [`enableDefaultAutoFocus`]({{site.android-api}}zoom-focus.html#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`getEnabledDefaultAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenableddefaultautofocusstatus) | Get the status (on/off) of camera default auto focus. |
-| [`enableRegularAutoFocus`]({{site.android-api}}zoom-focus.html#enableregularautofocus) | If this is true, camera will auto focus every 3 seconds. This focus mode will start automatically if DCE auto focus is enabled. Users can manually quit this focus mode when DCE auto focus is activated. |
-| [`getEnabledRegularAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenabledregularautofocusstatus) | Get the current status (on/off) of this auto focus mode. |
-| [`setRegularAutoFocusParam`]({{site.android-api}}zoom-focus.html#setregularautofocusparam) | Set the time interval and terminate time for the regular auto focus |
-| [`enableAutoFocusOnSharpnessChange`]({{site.android-api}}zoom-focus.html#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. This focus mode will start automatically if DCE autofocus is enabled. Users can manually quit this focus mode when DCE autofocus is activated. |
-| [`getEnabledAutoFocusOnSharpnessChangeStatus`]({{site.android-api}}zoom-focus.html#getenabledautofocusonsharpnesschangestatus) | Get the current status (on/off) of this auto focus mode. |
-| [`enableAutoZoom`]({{site.android-api}}zoom-focus.html#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`getEnabledAutoZoomStatus`]({{site.android-api}}zoom-focus.html#getenabledautozoomstatus) | Get the status (on/off) of auto zoom mode. |
-| [`setZoomFactor`]({{site.android-api}}zoom-focus.html#setzoomfactor) | Set zoom factor. |
-
-## Auxiliary Classes
-
-- [`DMDLSConnectionParameters`]({{site.android-api-auxiliary}}dlsconnection.html)
-- [`Frame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`HardwareUtil`]({{site.android-api-auxiliary}}hardwareutil.html)
-- [`CameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`CameraListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`CameraDLSLicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-- [`TorchListener`]({{ site.android-api-auxiliary }}interface-torchlistener.html)
-
-## Enumerations
-
-- [View all Enumerations]({{ site.dce-enums }}enum-1.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.0.0.md b/programming-old/android/api-reference-v2.0.0.md
deleted file mode 100644
index f2f71643..00000000
--- a/programming-old/android/api-reference-v2.0.0.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.0.0.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.android-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | Set the frame rate to the input value (if the input value is available for the device). |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.1.3.md b/programming-old/android/api-reference-v2.1.3.md
deleted file mode 100644
index 2ba3d4dc..00000000
--- a/programming-old/android/api-reference-v2.1.3.md
+++ /dev/null
@@ -1,99 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.1.3.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.android-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | Set the frame rate to the input value (if the input value is available for the device). |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.1.4.md b/programming-old/android/api-reference-v2.1.4.md
deleted file mode 100644
index 7f1f348a..00000000
--- a/programming-old/android/api-reference-v2.1.4.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.1.4.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.android-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCEPhotoListener`]({{ site.android-api-auxiliary }}interface-dcephotolistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.3.0.md b/programming-old/android/api-reference-v2.3.0.md
deleted file mode 100644
index 9d5d1508..00000000
--- a/programming-old/android/api-reference-v2.3.0.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.3.0.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.android-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.android-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCEPhotoListener`]({{ site.android-api-auxiliary }}interface-dcephotolistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.3.10.md b/programming-old/android/api-reference-v2.3.10.md
deleted file mode 100644
index fac158fc..00000000
--- a/programming-old/android/api-reference-v2.3.10.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.3.10.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`]({{site.android-api}}camera-enhancer.html#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`]({{site.android-api}}camera-enhancer.html#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the device uses a front-facing or rear-facing camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.android-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and focus once at the configured position. |
-| [`setFocus(subsequentFocusMode)`]({{site.android-api}}camera-enhancer.html#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setCameraStateListener`]({{site.android-api}}camera-enhancer.html#setcamerastatelistener ) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html)
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-
-## Exception
-
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-- [`Error Code Reference`]({{ site.dce-enums }}error-code.html?lang=android)
-
-## Interfaces
-
-- [`DCECameraStateListener`]({{ site.android-api-auxiliary }}interface-camerastatelistener.html)
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-- [`DCEPhotoListener`]({{ site.android-api-auxiliary }}interface-dcephotolistener.html)
-
-## Enumerations
-
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.3.12.md b/programming-old/android/api-reference-v2.3.12.md
deleted file mode 100644
index c15088df..00000000
--- a/programming-old/android/api-reference-v2.3.12.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.3.12.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`]({{site.android-api}}camera-enhancer.html#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`]({{site.android-api}}camera-enhancer.html#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the device uses a front-facing or rear-facing camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.android-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and focus once at the configured position. |
-| [`setFocus(subsequentFocusMode)`]({{site.android-api}}camera-enhancer.html#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setCameraStateListener`]({{site.android-api}}camera-enhancer.html#setcamerastatelistener ) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html)
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-
-## Exception
-
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-- [`Error Code Reference`]({{ site.dce-enums }}error-code.html?lang=android)
-
-## Interfaces
-
-- [`DCECameraStateListener`]({{ site.android-api-auxiliary }}interface-camerastatelistener.html)
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-- [`DCEPhotoListener`]({{ site.android-api-auxiliary }}interface-dcephotolistener.html)
-
-## Enumerations
-
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
diff --git a/programming-old/android/api-reference-v2.3.5.md b/programming-old/android/api-reference-v2.3.5.md
deleted file mode 100644
index 3fab3826..00000000
--- a/programming-old/android/api-reference-v2.3.5.md
+++ /dev/null
@@ -1,107 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API reference page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, API
-needAutoGenerateSidebar: true
-breadcrumbText: API references
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/api-reference-v2.3.5.html
----
-
-# Android API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.android-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.android-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`]({{site.android-api}}camera-enhancer.html#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`]({{site.android-api}}camera-enhancer.html#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.android-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraPosition`]({{site.android-api}}camera-enhancer.html#getcameraposition) | Returns whether the device uses a front-facing or rear-facing camera. |
-| [`getCameraState`]({{site.android-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.android-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.android-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.android-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.android-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.android-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.android-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.android-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`getResolutionList`]({{site.android-api}}camera-enhancer.html#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`]({{site.android-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.android-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.android-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.android-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.android-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`]({{site.android-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.android-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.android-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.android-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) | Enable DCE features with Enumeration value. |
-| [`disableFeatures`]({{site.android-api}}camera-enhancer.html#disablefeatures) | Disable DCE features with Enumeration value. |
-| [`isFeatureEnabled`]({{site.android-api}}camera-enhancer.html#isfeatureenabled) | Returns a boolean value that means whether the feature(s) you input is (are) enabled. |
-
-### Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Sets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-| [`getCameraView`]({{site.android-api}}camera-enhancer.html#setcameraview) | Gets camera video streaming UI. Read more from [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html)
-- [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html)
-- [`CameraEnhancerException`]({{site.android-api-auxiliary}}camera-enhancer-exception.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.android-api-auxiliary }}interface-dceframelistener.html)
-- [`DCEPhotoListener`]({{ site.android-api-auxiliary }}interface-dcephotolistener.html)
-- [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=android)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=android)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=android)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=android)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=android)
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android)
diff --git a/programming-old/android/api-reference-v3.0.0.md b/programming-old/android/api-reference-v3.0.0.md
deleted file mode 100644
index 91cdb8d7..00000000
--- a/programming-old/android/api-reference-v3.0.0.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-layout: default-layout
-title: Android API references - Dynamsoft Camera Enhancer
-description: This is the documentation - Android API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android API references
-permalink: /programming/android/api-reference-v3.0.0.html
----
-
-# Android API references
-
-## Primary Class
-
-* [CameraEnhancer](primary-api/camera-enhancer.html)
-
-## View Classes
-
-* [`DCECameraView`](auxiliary-api/dcecameraview.html)
-* [`DCEImageEditorView`](auxiliary-api/dceimageeditorview.html)
-
-## Auxiliary Classes
-
-* [CameraEnhancerException](auxiliary-api/camera-enhancer-exception.html)
-* [DrawingItem](auxiliary-api/drawingitem.html)
- * [LineDrawingItem](auxiliary-api/drawingitem-line.html)
- * [QuadDrawingItem](auxiliary-api/drawingitem-quad.html)
- * [RectDrawingItem](auxiliary-api/drawingitem-rect.html)
- * [TextDrawingItem](auxiliary-api/drawingitem-tex.html)
-* [DCEDrawingLayer](auxiliary-api/dcedrawinglayer.html)
-* [DrawingStyle](auxiliary-api/drawingstyle.html)
-* [DrawingStyleManager](auxiliary-api/drawingstylemanager.html)
-* [DCEFeedback](auxiliary-api/dcefeedback.html)
-
-## Interfaces
-
-* [`CameraStateListener`](auxiliary-api/interface-camerastatelistener.html)
-* [`PhotoListener`](auxiliary-api/interface-dcephotolistener.html)
-* [`FrameListener`](auxiliary-api/interface-dceframelistener.html)
-
-## Enumerations
-
-* [`EnumCameraPosition`]({{ site.dcv-enum }}camera-position.html)
-* [`EnumCameraState`]({{ site.dcv-enum }}camera-state.html)
-* [`EnumCoordinateBase`]({{ site.dcv-enum }}coordinate-base.html)
-* [`EnumDrawingItemMediaType`]({{ site.dcv-enum }}drawing-item-media-type.html)
-* [`EnumDrawingItemState`]({{ site.dcv-enum }}drawing-item-state.html)
-* [`EnumEnhancedFeatures`]({{ site.dcv-enum }}enhanced-features.html)
-* [`EnumFocusMode`]({{ site.dcv-enum }}focus-mode.html)
-* [`EnumResolution`]({{ site.dcv-enum }}resolution.html)
diff --git a/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.11.md b/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.11.md
deleted file mode 100644
index c1093c1a..00000000
--- a/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.11.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancerException Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android CameraEnhancerException Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, CameraEnhancerException
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancerException Class
-permalink: /programming/android/auxiliary-api/camera-enhancer-exception-v2.3.11.html
----
-
-# CameraEnhancerException
-
-Exception for signaling camera enhancer errors.
-
-```java
-class com.dynamsoft.dce.CameraEnhancerException extends Exception
-```
-
-| Method Name | Type |
-|------|------|
-| [`getErrorCode`](#geterrorcode) | int |
-
-
-
-## getErrorCode
-
-Gets the error code.
-
-```java
-int getErrorCode()
-```
-
-**Return Value**
-
-The error code. See Camera Enhancer error code list.
-
-**Code Snippet**
-
-```java
-try {
- mCameraEnhancer.setResolution(EnumResolution.RESOLUTION_1080P);
-} catch (CameraEnhancerException e) {
- Log.e("DCE", "onCreate: Resolution setting error is:"+e.getErrorCode());
-}
-```
diff --git a/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.12.md b/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.12.md
deleted file mode 100644
index f911379f..00000000
--- a/programming-old/android/auxiliary-api/camera-enhancer-exception-v2.3.12.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancerException Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android CameraEnhancerException Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, CameraEnhancerException
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancerException Class
-permalink: /programming/android/auxiliary-api/camera-enhancer-exception-v2.3.12.html
----
-
-# CameraEnhancerException
-
-Exception for signaling camera enhancer errors.
-
-```java
-class com.dynamsoft.dce.CameraEnhancerException extends Exception
-```
-
-| Method Name | Type |
-|------|------|
-| [`getErrorCode`](#geterrorcode) | int |
-
-
-
-## getErrorCode
-
-Gets the error code.
-
-```java
-int getErrorCode()
-```
-
-**Return Value**
-
-The error code. See Camera Enhancer error code list.
-
-**Code Snippet**
-
-```java
-try {
- mCameraEnhancer.setResolution(EnumResolution.RESOLUTION_1080P);
-} catch (CameraEnhancerException e) {
- Log.e("DCE", "onCreate: Resolution setting error is:"+e.getErrorCode());
-}
-```
diff --git a/programming-old/android/auxiliary-api/camera-enhancer-exception-v3.0.3.md b/programming-old/android/auxiliary-api/camera-enhancer-exception-v3.0.3.md
deleted file mode 100644
index 24f02df8..00000000
--- a/programming-old/android/auxiliary-api/camera-enhancer-exception-v3.0.3.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancerException Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android CameraEnhancerException Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, CameraEnhancerException
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancerException Class
-permalink: /programming/android/auxiliary-api/camera-enhancer-exception-v3.0.3.html
----
-
-# CameraEnhancerException
-
-Exception for signaling camera enhancer errors.
-
-```java
-class com.dynamsoft.dce.CameraEnhancerException extends Exception
-```
-
-| Method Name | Type |
-|------|------|
-| [`getErrorCode`](#geterrorcode) | int |
-
-
-
-## getErrorCode
-
-Gets the error code.
-
-```java
-int getErrorCode()
-```
-
-**Return Value**
-
-The error code. See Camera Enhancer error code list.
-
-**Code Snippet**
-
-```java
-try {
- mCameraEnhancer.setResolution(EnumResolution.RESOLUTION_1080P);
-} catch (CameraEnhancerException e) {
- Log.e("DCE", "onCreate: Resolution setting error is:"+e.getErrorCode());
-}
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v1.0.3.md b/programming-old/android/auxiliary-api/dcecameraview-v1.0.3.md
deleted file mode 100644
index 9b5cd2a9..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v1.0.3.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-layout: default-layout
-title: Android CameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android CameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, CameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v1.0.3.html
----
-
-# CameraView
-
-This page is for `CameraView` Class. `CameraView` is designed to Make basic settings on the overlay.
-
-```java
-class com.dynamsoft.dce.CameraView
-```
-
-| Method Name | Description |
-|------|------|
-| [`addOverlay`](#addoverlay) | Add overlay |
-| [`removeOverlay`](#removeoverlay) | Remove overlay |
-| [`setBrushColor`](#setbrushcolor) | Set the brush color |
-
-
-
-## addOverlay
-
-Add overlay on located barcode.
-
-```java
-void addOverlay()
-```
-
-**Code Snippet**
-
-```java
-cameraView.addOverlay();
-```
-
-
-
-## removeOverlay
-
-Remove the overlay.
-
-```java
-void removeOverlay()
-```
-
-**Code Snippet**
-
-```java
-cameraView.removeOverlay();
-```
-
-
-
-## setBrushColor
-
-```java
-void setBrushColor(String color)
-```
-
-**Parameters**
-
-`String`: A string value that refers to a color.
-
-**Code Snippet**
-
-```java
-cameraView.setBrushColor("Put your color string here");
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v2.0.0.md b/programming-old/android/auxiliary-api/dcecameraview-v2.0.0.md
deleted file mode 100644
index 2f3e2c99..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v2.0.0.md
+++ /dev/null
@@ -1,174 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v2.0.0.html
----
-
-# DCECameraView
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```Java
-class com.dynamsoft.dce.DCECameraView extends RelativeLayout
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setOverlayVisible`](#setoverlayvisible) | This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the position and the size of the viewfinder. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance to global information about an application environment.
-
-
-
-## setOverlayVisible
-
-This method controls whether the camera view displays coloured and translucent overlay.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlay according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-
-## setOverlayColour
-
-Set the stroke and fill colour of the overlay.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlay stroke.
-`fillARGB`: The colour code of the overlay stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-**Return Value**
-
-A boolean value that means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v2.1.0.md b/programming-old/android/auxiliary-api/dcecameraview-v2.1.0.md
deleted file mode 100644
index 6c5648e4..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v2.1.0.md
+++ /dev/null
@@ -1,244 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v2.1.0.html
----
-
-# DCECameraView
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView extends RelativeLayout
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setOverlayVisible`](#setoverlayvisible) | This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the position and the size of the viewfinder. |
-| [`setTorchButton`](#settorchbutton) | Set the position of the torch button. The visibility of the torch button will be set to true as well. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setOverlayVisible
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the position of the torch button. The visibility of the torch button will be set to true as well.
-
-```java
-void setTorchButton(Point torchButtonPosition)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The `torchButtonPosition` illustrates the coordinates of the torch button on the camera view. The x coordinate of the point stands for the pixel distance between the point and the left edge of the screen. The y coordinate of the point stands for the pixel distance between the point and the top edge of the screen.
-
-
-
-
torchButtonPosition is the position on the camera view
-
-
-**Code Snippet**
-
-```java
-Point torchButtonPosition = new Point();
-torchButtonPosition.x = 100;
-torchButtonPosition.y = 100;
-dceCameraView.setTorchButtonPosition(torchButtonPosition);
-```
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v2.3.11.md b/programming-old/android/auxiliary-api/dcecameraview-v2.3.11.md
deleted file mode 100644
index f1e53f9a..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v2.3.11.md
+++ /dev/null
@@ -1,338 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v2.3.11.html
----
-
-# DCECameraView Class
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-| [`setOverlayVisible`](#setoverlayvisible) | **Deprecated**. This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | **Deprecated**. Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | **Deprecated**. This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | **Deprecated**. Set the position and the size of the viewfinder. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setTorchButton
-
-Set the styles of the button with the position, size and images.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The coordinate of the top-left corner of the torch button. You can input a null value to apply no changes to the position of the torch button.
-`width`: The width of the torch button. You can input a null value to apply no changes to the width of the torch button.
-`height`: The height of the torch button. You can input a null value to apply no changes to the height of the torch button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-```java
-cameraView.setTorchButton(new Point(100,100), 50,50, getDrawable(R.drawable.torch_on_image), getDrawable(R.drawable.torch_off_image));
-```
-
-**Remarks**
-
-Method `setTorchButton(Point torchButtonPosition)` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-Boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-Boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
-
-
-
-## getDrawingLayer
-
-Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID.
-
-```java
-public DCEDrawingLayer getDrawingLayer(int id);
-```
-
-**Parameters**
-
-`id`: The id of the target [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Parameters**
-
-`id`: The id of the `DrawingLayer`.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID);
-```
-
-
-
-## createDrawingLayer
-
-Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance.
-
-```java
-public DCEDrawingLayer createDrawingLayer();
-```
-
-**Return Value**
-
-An instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.createDrawingLayer();
-```
-
-## setOverlayVisible
-
-> The method is deprecated
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-> The method is deprecated
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-> The method is deprecated
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-```java
-boolean getViewfinderVisible()
-```
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-> The method is deprecated
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-**Return Value**
-
-An `iRegionDefinition` object. You can use this object to set the scan region so that the invisible areas will be cropped from the video frames.
-
-**Code Snippet**
-
-```java
-iRegionDefinition visibleRegion = cameraView.getVisibleRegion();
-cameraEnhancer.setScanRegion(visibleRegion);
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v2.3.12.md b/programming-old/android/auxiliary-api/dcecameraview-v2.3.12.md
deleted file mode 100644
index fb9405a1..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v2.3.12.md
+++ /dev/null
@@ -1,338 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v2.3.12.html
----
-
-# DCECameraView Class
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-| [`setOverlayVisible`](#setoverlayvisible) | **Deprecated**. This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | **Deprecated**. Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | **Deprecated**. This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | **Deprecated**. Set the position and the size of the viewfinder. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setTorchButton
-
-Set the styles of the button with the position, size and images.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The coordinate of the top-left corner of the torch button. You can input a null value to apply no changes to the position of the torch button.
-`width`: The width of the torch button. You can input a null value to apply no changes to the width of the torch button.
-`height`: The height of the torch button. You can input a null value to apply no changes to the height of the torch button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-```java
-cameraView.setTorchButton(new Point(100,100), 50,50, getDrawable(R.drawable.torch_on_image), getDrawable(R.drawable.torch_off_image));
-```
-
-**Remarks**
-
-Method `setTorchButton(Point torchButtonPosition)` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-Boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-Boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
-
-
-
-## getDrawingLayer
-
-Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID.
-
-```java
-public DCEDrawingLayer getDrawingLayer(int id);
-```
-
-**Parameters**
-
-`id`: The id of the target [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Parameters**
-
-`id`: The id of the `DrawingLayer`.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID);
-```
-
-
-
-## createDrawingLayer
-
-Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance.
-
-```java
-public DCEDrawingLayer createDrawingLayer();
-```
-
-**Return Value**
-
-An instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.createDrawingLayer();
-```
-
-## setOverlayVisible
-
-> The method is deprecated
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-> The method is deprecated
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-> The method is deprecated
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-```java
-boolean getViewfinderVisible()
-```
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-> The method is deprecated
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-**Return Value**
-
-An `iRegionDefinition` object. You can use this object to set the scan region so that the invisible areas will be cropped from the video frames.
-
-**Code Snippet**
-
-```java
-iRegionDefinition visibleRegion = cameraView.getVisibleRegion();
-cameraEnhancer.setScanRegion(visibleRegion);
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v2.3.5.md b/programming-old/android/auxiliary-api/dcecameraview-v2.3.5.md
deleted file mode 100644
index 954f0085..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v2.3.5.md
+++ /dev/null
@@ -1,246 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v2.3.5.html
----
-
-# DCECameraView
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView extends RelativeLayout
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setOverlayVisible`](#setoverlayvisible) | This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the position and the size of the viewfinder. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-
-
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setOverlayVisible
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the styles of the button with the position, size and images.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The coordinate of the top-left corner of the torch button. You can input a null value to apply no changes to the position of the torch button.
-`width`: The width of the torch button. You can input a null value to apply no changes to the width of the torch button.
-`height`: The height of the torch button. You can input a null value to apply no changes to the height of the torch button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-```java
-cameraView.setTorchButton(new Point(100,100), 50,50, getDrawable(R.drawable.torch_on_image), getDrawable(R.drawable.torch_off_image));
-```
-
-**Remarks**
-
-Method `setTorchButton(Point torchButtonPosition)` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview-v3.0.3.md b/programming-old/android/auxiliary-api/dcecameraview-v3.0.3.md
deleted file mode 100644
index e7953459..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview-v3.0.3.md
+++ /dev/null
@@ -1,338 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview-v3.0.3.html
----
-
-# DCECameraView Class
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-| [`setOverlayVisible`](#setoverlayvisible) | **Deprecated**. This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | **Deprecated**. Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | **Deprecated**. This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | **Deprecated**. Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | **Deprecated**. Set the position and the size of the viewfinder. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setTorchButton
-
-Set the styles of the button with the position, size and images.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The coordinate of the top-left corner of the torch button. You can input a null value to apply no changes to the position of the torch button.
-`width`: The width of the torch button. You can input a null value to apply no changes to the width of the torch button.
-`height`: The height of the torch button. You can input a null value to apply no changes to the height of the torch button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-```java
-cameraView.setTorchButton(new Point(100,100), 50,50, getDrawable(R.drawable.torch_on_image), getDrawable(R.drawable.torch_off_image));
-```
-
-**Remarks**
-
-Method `setTorchButton(Point torchButtonPosition)` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-Boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-Boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
-
-
-
-## getDrawingLayer
-
-Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID.
-
-```java
-public DCEDrawingLayer getDrawingLayer(int id);
-```
-
-**Parameters**
-
-`id`: The id of the target [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Parameters**
-
-`id`: The id of the `DrawingLayer`.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID);
-```
-
-
-
-## createDrawingLayer
-
-Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance.
-
-```java
-public DCEDrawingLayer createDrawingLayer();
-```
-
-**Return Value**
-
-An instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer layer = dceCameraView.createDrawingLayer();
-```
-
-## setOverlayVisible
-
-> The method is deprecated
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-> The method is deprecated
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-> The method is deprecated
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-> The method is deprecated
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-```java
-boolean getViewfinderVisible()
-```
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-> The method is deprecated
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-**Return Value**
-
-An `iRegionDefinition` object. You can use this object to set the scan region so that the invisible areas will be cropped from the video frames.
-
-**Code Snippet**
-
-```java
-iRegionDefinition visibleRegion = cameraView.getVisibleRegion();
-cameraEnhancer.setScanRegion(visibleRegion);
-```
diff --git a/programming-old/android/auxiliary-api/dcecameraview.md b/programming-old/android/auxiliary-api/dcecameraview.md
deleted file mode 100644
index 57a7577c..00000000
--- a/programming-old/android/auxiliary-api/dcecameraview.md
+++ /dev/null
@@ -1,269 +0,0 @@
----
-layout: default-layout
-title: Android DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCECameraView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCECameraView Class
-permalink: /programming/android/auxiliary-api/dcecameraview.html
----
-
-# DCECameraView
-
-The camera view is the main UI view of the DCE SDK. It is designed to display the video preview, overlay, viewfinder, etc.
-
-```java
-class com.dynamsoft.dce.DCECameraView extends RelativeLayout
-```
-
-| Method Name | Description |
-|------|------|
-| [`DCECameraView`](#dcecameraview) | Initialize the `DCECameraView` object. |
-| [`setOverlayVisible`](#setoverlayvisible) | This method controls whether the camera view to display coloured and translucent overlay. |
-| [`getOverlayVisible`](#getoverlayvisible) | Get the visibility (true: visible/ false: invisible) of the overlay. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill colour of the overlay. |
-| [`setViewfinderVisible`](#setviewfindervisible) | This method controls whether to display a viewfinder. |
-| [`getViewfinderVisible`](#getviewfindervisible) | Get the visibility (true: visible/ false: invisible) of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the position and the size of the viewfinder. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set the visibility of the torch button. The torch button icon is pre-set in the SDK. |
-| [`getTorchButtonVisible`](#gettorchbuttonvisible) | Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-
-
-
-## DCECameraView
-
-Initialize the `DCECameraView` object.
-
-```java
-DCECameraView(android.content.Context context)
-```
-
-**Parameters**
-
-`context`: An instance of global information about an application environment.
-
-
-
-## setOverlayVisible
-
-This method controls whether the camera view displays coloured and translucent overlays.
-
-```java
-void setOverlayVisible(boolean overlayVisibile)
-```
-
-**Parameters**
-
-`overlayVisibile`: If true, the camera view will draw and display overlays according to the position and colour settings. Otherwise, the overlay will be hidden.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayVisible(true);
-```
-
-
-
-## getOverlayVisible
-
-Get the visibility (true: visible/ false: invisible) of the overlay.
-
-```java
-boolean getOverlayVisible()
-```
-
-**Return Value**
-
-The visibility (true: visible/ false: invisible) of the overlay.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean isVisible = dceCameraView.getOverlayVisible();
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill colour of the overlays.
-
-```java
-void setOverlayColour(int strokeARGB, int fillARGB)
-```
-
-**Parameters**
-
-`strokeARGB`: The colour code of the overlays stroke.
-`fillARGB`: The colour code of the overlays stroke.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setOverlayColour(0xff00ff00, 0x00000000);
-```
-
-
-
-## setViewfinderVisible
-
-This method controls whether to display a viewfinder.
-
-```java
-void setViewfinderVisible(boolean viewfinderVisible)
-```
-
-**Parameters**
-
-`viewfinderVisible`: A boolean value that means whether the viewfinder is visible or not. Users can define the position and size of the viewfinder via method [`setViewfinder`](#setviewfinder). The viewfinder will be created based on the default value if the `setViewfinder` has never been triggered.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinderVisible(true);
-```
-
-
-
-## getViewfinderVisible
-
-Get the visibility (true: visible/ false: invisible) of the viewfinder.
-
-**Return Value**
-
-A boolean value means whether the viewfinder is visible.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-boolean flag = dceCameraView.getViewfinderVisible();
-```
-
-
-
-## setViewfinder
-
-Set the position and the size of the viewfinder.
-
-```java
-void setViewfinder(float left, float top, float right, float bottom) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-```java
-//Suppose dceCameraView is an object of `DCECameraView`
-dceCameraView.setViewfinder(0.2, 0.3, 0.8, 0.7);
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the styles of the button with the position, size and images.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage)
-```
-
-**Parameters**
-
-`torchButtonPosition`: The coordinate of the top-left corner of the torch button. You can input a null value to apply no changes to the position of the torch button.
-`width`: The width of the torch button. You can input a null value to apply no changes to the width of the torch button.
-`height`: The height of the torch button. You can input a null value to apply no changes to the height of the torch button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-```java
-cameraView.setTorchButton(new Point(100,100), 50,50, getDrawable(R.drawable.torch_on_image), getDrawable(R.drawable.torch_off_image));
-```
-
-**Remarks**
-
-Method `setTorchButton(Point torchButtonPosition)` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## setTorchButtonVisible
-
-Set the visibility of the torch button. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible)
-```
-
-**Parameters**
-
-`isTorchButtonVisible`: When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-dceCameraView.setTorchButtonVisible(true);
-```
-
-
-
-## getTorchButtonVisible
-
-Get the visibility setting of the torch button. When it returns true, a torch button should be displayed on the screen.
-
-```java
-boolean getTorchButtonVisible()
-```
-
-**Return Value**
-
-A boolean value. When the value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-**Code Snippet**
-
-```java
-boolean isTorchButtonVisible = dceCameraView.getTorchButtonVisible();
-```
-
-
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-**Return Value**
-
-An `iRegionDefinition` object. You can use this object to set the scan region so that the invisible areas will be cropped from the video frames.
-
-**Code Snippet**
-
-```java
-iRegionDefinition visibleRegion = cameraView.getVisibleRegion();
-cameraEnhancer.setScanRegion(visibleRegion);
-```
diff --git a/programming-old/android/auxiliary-api/dcedrawinglayer-v3.0.3.md b/programming-old/android/auxiliary-api/dcedrawinglayer-v3.0.3.md
deleted file mode 100644
index a9c916a8..00000000
--- a/programming-old/android/auxiliary-api/dcedrawinglayer-v3.0.3.md
+++ /dev/null
@@ -1,271 +0,0 @@
----
-layout: default-layout
-title: Android DCEDrawingLayer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEDrawingLayer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEDrawingLayer
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEDrawingLayer Class
-permalink: /programming/android/auxiliary-api/dcedrawinglayer-v3.0.3.html
----
-
-# DCEDrawingLayer Class
-
-A `DCEDrawingLayer` is the layer that contains and displays `DrawingItems`. Users can add configurations for the `DrawingItems` via `DCEDrawingLayer`
-
-```java
-class com.dynamsoft.dce.DCEDrawingLayer
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`DCEDrawingLayer`](#dcedrawinglayer) | The constructor of the `DCEDrawingLayer` class. |
-| [`getId`](#getid) | Get the `DrawingLayer` ID of the `DrawingLayer`. |
-| [`addDrawingItems`](#adddrawingitems) | Add a list of [`DrawingItems`](drawingitem.html) to the `DrawingLayer`. These [`DrawingItems`](drawingitem.html) will be appended to the drawing item list of the current `DrawingLayer`. |
-| [`setDrawingItems`](#setdrawingitems) | Set a list of [`DrawingItems`](drawingitem.html) to the `DrawingLayer`. These [`DrawingItems`](drawingitem.html) will replace the previous [`DrawingItems`](drawingitem.html) of the current `DrawingLayer`. |
-| [`getDrawingItems`](#getdrawingitems) | Get all available [`DrawingItems`](drawingitem.html) in the `DrawingLayer`. |
-| [`clearDrawingItems`](#cleardrawingitems) | Clear all available [`DrawingItems`](drawingitem.html) in the `DrawingLayer`. |
-| [`setDrawingStyleId(styleId)`](#setdrawingstyleidstyleid) | Specify a style ID for all available [`DrawingItems`](drawingitem.html). |
-| [`setDrawingStyleId(styleId,state)`](#setdrawingstyleidstyleidstate) | Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). |
-| [`setDrawingStyleId(styleId,state,mediaType)`](#setdrawingstyleidstyleidstatemediatype) | Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). |
-| [`setVisible`](#setvisible) | Set the visibility of the `DrawingLayer`. |
-| [`isVisible`](#isvisible) | Get the visibility of the `DrawingLayer`. |
-
-
-
-## DCEDrawingLayer
-
-The constructor of the `DCEDrawingLayer` class.
-
-```java
-public DCEDrawingLayer(int id);
-```
-
-**Parameters**
-
-`id`: Indicate the ID of the `DrawingLayer`.
-
-**Remarks**
-
-Please initialize the DrawingLayers via the following methods:
-
-- [`DCEImageEditorView.createDrawingLayer`](dceimageeditorview.html#createdrawinglayer)
-- [`DCECameraView.createDrawingLayer`](dcecameraview.html#createdrawinglayer)
-
-
-
-## getId
-
-Get the ID of the `DrawingLayer`.
-
-```java
-public int getId();
-```
-
-**Return Value**
-
-The id of the `DrawingLayer`. It can be one of the following:
-
-- `DDN_LAYER_ID`
-- `DBR_LAYER_ID`
-- `DLR_LAYER_ID`
-- `USER_DEFINED_LAYER_BASE_ID`
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer drawingLayer = dceImageEditorView.createDrawingLayer();
-int id = drawingLayer.getId();
-```
-
-
-
-## addDrawingItems
-
-Add a list of [`DrawingItems`](drawingitem.html) to the `DrawingLayer`. These [`DrawingItems`](drawingitem.html) will be appended to the drawing item list of the current `DrawingLayer`.
-
-```java
-public void addDrawingItems(Arraylist items);
-```
-
-**Parameters**
-
-`items`: A list of [`DrawingItems`](drawingitem.html).
-
-**Code Snippet**
-
-```java
-ArrayList drawingItems = new ArrayList();
-drawingItems.add(drawingItem_1);
-drawingItems.add(drawingItem_2);
-drawingItems.add(drawingItem_3);
-drawingLayer.addDrawingItems(drawingItems);
-```
-
-
-
-## setDrawingItems
-
-Set a list of [`DrawingItems`](drawingitem.html) to the `DrawingLayer`. These [`DrawingItems`](drawingitem.html) will replace the previous [`DrawingItems`](drawingitem.html) of the current `DrawingLayer`.
-
-```java
-public void setDrawingItems(Arraylist items);
-```
-
-**Parameters**
-
-`items`: A list of [`DrawingItems`](drawingitem.html).
-
-**Code Snippet**
-
-```java
-ArrayList drawingItems = new ArrayList();
-drawingItems.add(drawingItem_1);
-drawingItems.add(drawingItem_2);
-drawingItems.add(drawingItem_3);
-drawingLayer.setDrawingItems(drawingItems);
-```
-
-
-
-## getDrawingItems
-
-Get all available [`DrawingItems`](drawingitem.html) in the `DrawingLayer`.
-
-```java
-public Arraylist getDrawingItems();
-```
-
-**Return Value**
-
-A list that includes all available [`DrawingItems`](drawingitem.html).
-
-**Code Snippet**
-
-```java
-ArrayList drawingItems = dceDrawingLayer.getDrawingItems();
-```
-
-
-
-## clearDrawingItems
-
-Clear all available [`DrawingItems`](drawingitem.html) in the `DrawingLayer`.
-
-```java
-public void clearDrawingItems();
-```
-
-**Code Snippet**
-
-```java
-drawingLayer.clearDrawingItems();
-```
-
-
-
-## setDrawingStyleId(styleId)
-
-Specify a style ID for all available [`DrawingItems`](drawingitem.html).
-
-```java
-public void setDrawingStyleId(int styleId);
-```
-
-**Parameters**
-
-`id`: The style ID.
-
-**Code Snippet**
-
-```java
-drawingLayer.setDrawingStyleId(0);
-```
-
-
-
-## setDrawingStyleId(styleId,state)
-
-Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). The `state`is a filter of the `DrawingItems`. All the eligible `DrawingItems` will be changed to the input style.
-
-```java
-public void setDrawingStyleId(int styleId, EnumDrawingItemState state);
-```
-
-**Parameters**
-
-`id`: The style ID.
-`state`: The state of the `DrawingItem`.
-
-**Code Snippet**
-
-```java
-drawingLayer.setDrawingStyleId(0, EnumDrawingItemState.DIS_SELECTED);
-```
-
-
-
-## setDrawingStyleId(styleId,state,mediaType)
-
-Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). The `state` and `mediaType` are filters of the `DrawingItems`. All the eligible `DrawingItems` will be changed to the input style.
-
-```java
-public void setDrawingStyleId(int styleId, EnumDrawingItemState state, EnumDrawingItemMediaType mediaTypes);
-```
-
-**Parameters**
-
-`id`: The style ID.
-`state`: The state of the `DrawingItem`.
-`mediaType`: The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-```java
-drawingLayer.setDrawingStyleId(0, EnumDrawingItemState.DIS_SELECTED, EnumDrawingItemMediaType.DIMT_RECTANGLE);
-```
-
-
-
-## setVisible
-
-Set the visibility of the `DrawingLayer`.
-
-```java
-public void setVisible(boolean visible);
-```
-
-**Parameters**
-
-`visible`:
-
-- true: The `DrawingLayer` will be visible
-- false: The `DrawingLayer` will be invisible.
-
-**Code Snippet**
-
-```java
-drawingLayer.setVisible(true);
-```
-
-
-
-## isVisible
-
-Get the visibility of the `DrawingLayer`.
-
-```java
-public boolean isVisible();
-```
-
-**Return Value**
-
-- true: The `DrawingLayer` is visible.
-- false: The `DrawingLayer` is invisible.
-
-**Code Snippet**
-
-```java
-boolean visible = drawingLayer.isVisible();
-```
diff --git a/programming-old/android/auxiliary-api/dcefeedback-v2.3.12.md b/programming-old/android/auxiliary-api/dcefeedback-v2.3.12.md
deleted file mode 100644
index 21ed6385..00000000
--- a/programming-old/android/auxiliary-api/dcefeedback-v2.3.12.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-layout: default-layout
-title: Android DCEFeedback Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEFeedback Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFeedback
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFeedback Class
-permalink: /programming/android/auxiliary-api/dcefeedback-v2.3.12.html
----
-
-# DCEFeedback
-
-| Method | Description |
-| ------ | ----------- |
-| [`vibrate`](#vibrate) | Trigger a vibration when the method is called. |
-| [`beep`](#beep) | Trigger a beep when the method is called. |
-
-## vibrate
-
-Trigger a vibration when the method is called.
-
-```java
-static void vibrate(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.vibrate(MainActivity.this);
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.vibrate(MainActivity.this);
- }
-});
-```
-
-## beep
-
-Trigger a beep when the method is called.
-
-```java
-static void beep(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.beep(MainActivity.this);
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.beep(MainActivity.this);
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/dcefeedback-v3.0.3.md b/programming-old/android/auxiliary-api/dcefeedback-v3.0.3.md
deleted file mode 100644
index 3bde32ef..00000000
--- a/programming-old/android/auxiliary-api/dcefeedback-v3.0.3.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-layout: default-layout
-title: Android DCEFeedback Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEFeedback Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFeedback
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFeedback Class
-permalink: /programming/android/auxiliary-api/dcefeedback-v3.0.3.html
----
-
-# DCEFeedback
-
-| Method | Description |
-| ------ | ----------- |
-| [`vibrate`](#vibrate) | Trigger a vibration when the method is called. |
-| [`beep`](#beep) | Trigger a beep when the method is called. |
-
-## vibrate
-
-Trigger a vibration when the method is called.
-
-```java
-static void vibrate(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.vibrate(MainActivity.this);
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.vibrate(MainActivity.this);
- }
-});
-```
-
-## beep
-
-Trigger a beep when the method is called.
-
-```java
-static void beep(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.beep(MainActivity.this);
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.beep(MainActivity.this);
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/dcefeedback.md b/programming-old/android/auxiliary-api/dcefeedback.md
deleted file mode 100644
index 120b6d6d..00000000
--- a/programming-old/android/auxiliary-api/dcefeedback.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-layout: default-layout
-title: Android DCEFeedback Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCEFeedback Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFeedback
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFeedback Class
-permalink: /programming/android/auxiliary-api/dcefeedback.html
----
-
-# DCEFeedback
-
-| Method | Description |
-| ------ | ----------- |
-| [`vibrate`](#vibrate) | Trigger a vibration when the method is called. |
-| [`beep`](#beep) | Trigger a beep when the method is called. |
-
-## vibrate
-
-Trigger a vibration when the method is called.
-
-```java
-static void vibrate(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.vibrate(MainActivity.this);
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.vibrate(MainActivity.this);
- }
-});
-```
-
-## beep
-
-Trigger a beep when the method is called.
-
-```java
-static void beep(Context context)
-```
-
-**Code Snippet**
-
-```java
-DCEFeedback.beep(MainActivity.this);
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-mReader.setTextResultListener(new TextResultListener() {
- @Override
- public void textResultCallback(int id, ImageData imageData, TextResult[] textResults) {
- ...
- DCEFeedback.beep(MainActivity.this);
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/dceframe-v1.0.3.md b/programming-old/android/auxiliary-api/dceframe-v1.0.3.md
deleted file mode 100644
index 99473f75..00000000
--- a/programming-old/android/auxiliary-api/dceframe-v1.0.3.md
+++ /dev/null
@@ -1,215 +0,0 @@
----
-layout: default-layout
-title: Android Frame Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android Frame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, Frame
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Frame Class
-permalink: /programming/android/auxiliary-api/dceframe-v1.0.3.html
----
-
-# Frame
-
-This page is for `Frame` Class. `Frame` parameters store the frame data.
-
-```java
-class com.dynamsoft.dce.Frame
-```
-
-| Method Name | Type |
-| ----------- | ---- |
-| [`getData`](#getdata) | byte[] |
-| [`getWidth`](#getwidth) | int |
-| [`getHeight`](#getheight) | int |
-| [`getStrides`](#getstrides) | int[] |
-| [`getFormat`](#getformat) | int |
-| [`getFrameId`](#getframeid) | int |
-| [`isFastFrame`](#isfastframe) | boolean |
-| [`getFastFrameId`](#getfastframeid) | int |
-| [`getCropRect`](#getcroprect) | Rect |
-| [`getOrientation`](#getorientation) | int |
-| [`getOriW`](#getoriw) | int |
-| [`getOriH`](#getorih) | int |
-
-
-
-## getData
-
-Get the frame data in byte array.
-
-```java
-byte[] getData()
-```
-
-**Return Value**
-
-The frame byte data.
-
-
-
-
-## getWidth
-
-Get the frame width in pixels.
-
-```java
-int getWidth()
-```
-
-**Return Value**
-
-The pixel width of the frame.
-
-
-
-
-## getHeight
-
-Get the frame height in pixels.
-
-```java
-int getHeight()
-```
-
-**Return Value**
-
-The pixel height of the frame.
-
-
-
-
-## getStrides
-
-Get the frame strides.
-
-```java
-int[] getStrides()
-```
-
-**Return Value**
-
-The strides of the frame.
-
-
-
-
-## getFormat
-
-Get the frame pixel format.
-
-```java
-int getFormat()
-```
-
-**Return Value**
-
-The format of the frame.
-
-
-
-
-## getFrameId
-
-Get the frame ID.
-
-```java
-int getFrameId()
-```
-
-**Return Value**
-
-The ID of the frame.
-
-
-
-
-## isFastFrame
-
-Check whether the fast mode is enabled.
-
-```java
-boolean isFastFrame()
-```
-
-**Return Value**
-
-Whether the frame is cropped.
-
-
-
-
-## getFastFrameId
-
-Get the fast frame (cropped frame) ID.
-
-```java
-int getFastFrameId()
-```
-
-**Return Value**
-
-The ID of the fast frame (cropped frame).
-
-
-
-
-## getCropRect
-
-Get the cropped Rect data (Width & height)
-
-```java
-Rect getCropRect()
-```
-
-**Return Value**
-
-The value of the cropped frame.
-
-
-
-## getOrientation
-
-Get the orientation (of cropped frame).
-
-```java
-int getOrientation()
-```
-
-**Return Value**
-
-The orientation (of cropped frame).
-
-| Orientation of the frame | Value (int) |
-|--------------------------|-------|
-| Vertical | 1 |
-| Horizontal | 2 |
-
-
-
-## getOriW
-
-Get the original width of the cropped frame.
-
-```java
-int getOriW()
-```
-
-**Return Value**
-
-The pixel width of the cropped frame.
-
-
-
-## getOriH
-
-Get the original width of the cropped frame.
-
-```java
-int getOriH()
-```
-
-**Return Value**
-
-The pixel height of the cropped frame.
diff --git a/programming-old/android/auxiliary-api/dceframe-v2.3.11.md b/programming-old/android/auxiliary-api/dceframe-v2.3.11.md
deleted file mode 100644
index 426a2062..00000000
--- a/programming-old/android/auxiliary-api/dceframe-v2.3.11.md
+++ /dev/null
@@ -1,356 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrame Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFrame
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFrame Class
-permalink: /programming/android/auxiliary-api/dceframe-v2.3.11.html
----
-
-# DCEFrame
-
-> You are viewing a historical document page of Dynamsoft Camera Enhancer v2.3.11.
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-```java
-class com.dynamsoft.dce.DCEFrame
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`getImageData`](#getimagedata) | Get the pixel data of the image. |
-| [`getWidth`](#getwidth) | Get the pixel width of the image. |
-| [`getHeight`](#getheight) | Get the pixel height of the image. |
-| [`getStrides`](#getstrides) | Get the number of row bytes in each image plane (YUV). |
-| [`getPixelFormat`](#getpixelformat) | Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`getFrameID`](#getframeid) | Get the `frameID` of the `DCEFrame` object. |
-| [`getQuality`](#getquality) | Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`getIsCropped`](#getiscropped) | Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`getCropRegion`](#getcropregion) | Get the crop region of the image (if the image is cropped). |
-| [`getOrientation`](#setorientation) | Set the orientation of the image. |
-| [`setImageData`](#setimagedata) | Set the pixel data of the image. |
-| [`setWidth`](#setwidth) | Set the pixel width of the image. |
-| [`setHeight`](#setheight) | Set the pixel height of the image. |
-| [`setStrides`](#setstrides) | Set the number of row bytes in each image plane (YUV). |
-| [`setPixelFormat`](#setpixelformat) | Set the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`setFrameID`](#setframeid) | Set the `frameID` of the `DCEFrame` object. |
-| [`setQuality`](#setquality) | Set the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`setIsCropped`](#setiscropped) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setCropRegion`](#setcropregion) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setOrientation`](#setorientation) | Set the orientation of the image. |
-| [`toBitmap`](#tobitmap) | The method converts the image to `Bitmap`. |
-
-
-
-## getImageData
-
-Get the pixel data of the image.
-
-```java
-byte[] getImageData()
-```
-
-**Return Value**
-
-The method returns a byte list that stores the pixel data of the image.
-
-
-
-## getWidth
-
-Get the pixel width of the image.
-
-```java
-int getWidth()
-```
-
-**Return Value**
-
-The method returns the pixel width of the image.
-
-
-
-## getHeight
-
-Get the pixel height of the image.
-
-```java
-int getHeight()
-```
-
-**Return Value**
-
-The method returns the pixel height of the image.
-
-
-
-## getStrides
-
-Get the number of row bytes in each image plane (YUV).
-
-```java
-int[] getStrides()
-```
-
-**Return Value**
-
-The number of row bytes in each image plane (YUV).
-
-**Remarks**
-
-`strides[0]` is the stride of Y component in the image. `strides[1]` and `strides[2]` are the strides of the U (blue projection) and V (red projection) components in the image.
-
-
-
-## getPixelFormat
-
-Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21.
-
-```java
-int getPixelFormat()
-```
-
-**Return Value**
-
-The method returns an int value that refers to the pixel format of the image. View morein [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## getFrameID
-
-Get the `frameID` of the `DCEFrame` object.
-
-```java
-int getFrameID()
-```
-
-**Return Value**
-
-The method returns an int value that stores the `frameID` of the image.
-
-
-
-## getQuality
-
-Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown.
-
-```java
-EnumFrameQuality getQuality()
-```
-
-**Return Value**
-
-The method returns an enumeration value in [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html).
-
-**Remarks**
-
-Users can get all the original DCEFrame via `DCEFrameListener` but only high-quality frame can be acquired from the DCE video buffer if frame filter is enabled. In another word, when frame filter feature is enabled, the frame quality will always be high if they are acquired by triggering `getFrameFromBuffer`.
-
-
-
-## getIsCropped
-
-Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled.
-
-```java
-boolean getIsCropped()
-```
-
-**Return Value**
-
-A boolean value. `True` means the image is cropped and `false` means the image has never been cropped.
-
-
-
-## getCropRegion
-
-Get the crop region of the image (if the image is cropped).
-
-```java
-Rect getCropRegion()
-```
-
-**Return Value**
-
-A Rect value that stores the crop region. If the image is not cropped, the value will be null.
-
-
-
-## getOrientation
-
-Set the orientation of the image.
-
-```java
-int getOrientation()
-```
-
-**Return Value**
-
-Int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation.
-
-
-
-
All examples of the orientation
-
-
-
-
-## setImageData
-
-Set the pixel data of the image.
-
-```java
-void setImageData(byte[] imageData)
-```
-
-**Parameters**
-
-`imageData`: A byte list that storing the image pixel data.
-
-
-
-## setWidth
-
-Set the pixel width of the image.
-
-```java
-void setWidth(int width)
-```
-
-**Parameters**
-
-`width`: The pixel value that stands for the width of the image.
-
-
-
-## setHeight
-
-Set the pixel height of the image.
-
-```java
-void setHeight(int height)
-```
-
-**Parameters**
-
-`height`: The pixel value that stands for the height of the image.
-
-
-
-## setStrides
-
-Set the number of row bytes in each image plane.
-
-```java
-void setStrides(int[] strides)
-```
-
-**Parameters**
-
-`strides`: The number of row bytes in each image plane.
-
-
-
-## setPixelFormat
-
-Set the pixel format of the image.
-
-```java
-void setPixelFormat(int pixelFormat)
-```
-
-**Parameters**
-
-`pixelFormat`: The pixelFormat of the image. View more in [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## setFrameID
-
-Set the `frameID` of the image.
-
-```java
-void setFrameID(int frameID)
-```
-
-**Parameters**
-
-`frameID`: An int value that stands for the `frameID` of the image.
-
-
-
-## setQuality
-
-Set the frame quality of the image.
-
-```java
-void setQuality(EnumFrameQuality quality)
-```
-
-**Parameters**
-
-`quality`: One of the [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html) value that indicates the frame quality.
-
-
-
-## setIsCropped
-
-Set whether the image is cropped.
-
-```java
-void setIsCropped(boolean isCropped)
-```
-
-**Parameters**
-
-`isCropped`: A boolean value that means whether the image is cropped.
-
-
-
-## setCropRegion
-
-Set the crop region of the image (if the frame is cropped).
-
-```java
-void setCropRegion(Rect region)
-```
-
-**Parameters**
-
-`cropRegion`: A Rect value that means crop area of the image (if the frame is cropped).
-
-
-
-## setOrientation
-
-Set the orientation of the image.
-
-```java
-void setOrientation(int orientation)
-```
-
-**Parameters**
-
-`orientation`: Int value that means the rotation angle of the image.
-
-## toBitmap
-
-The method converts the image to `Bitmap`.
-
-```java
-Bitmap toBitmap()
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-```java
-Bitmap frame = DCEFrame.toBitmap();
-```
diff --git a/programming-old/android/auxiliary-api/dceframe-v2.3.12.md b/programming-old/android/auxiliary-api/dceframe-v2.3.12.md
deleted file mode 100644
index 7e498101..00000000
--- a/programming-old/android/auxiliary-api/dceframe-v2.3.12.md
+++ /dev/null
@@ -1,356 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrame Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFrame
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFrame Class
-permalink: /programming/android/auxiliary-api/dceframe-v2.3.12.html
----
-
-# DCEFrame
-
-> You are viewing a historical document page of Dynamsoft Camera Enhancer v2.3.11.
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-```java
-class com.dynamsoft.dce.DCEFrame
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`getImageData`](#getimagedata) | Get the pixel data of the image. |
-| [`getWidth`](#getwidth) | Get the pixel width of the image. |
-| [`getHeight`](#getheight) | Get the pixel height of the image. |
-| [`getStrides`](#getstrides) | Get the number of row bytes in each image plane (YUV). |
-| [`getPixelFormat`](#getpixelformat) | Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`getFrameID`](#getframeid) | Get the `frameID` of the `DCEFrame` object. |
-| [`getQuality`](#getquality) | Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`getIsCropped`](#getiscropped) | Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`getCropRegion`](#getcropregion) | Get the crop region of the image (if the image is cropped). |
-| [`getOrientation`](#setorientation) | Set the orientation of the image. |
-| [`setImageData`](#setimagedata) | Set the pixel data of the image. |
-| [`setWidth`](#setwidth) | Set the pixel width of the image. |
-| [`setHeight`](#setheight) | Set the pixel height of the image. |
-| [`setStrides`](#setstrides) | Set the number of row bytes in each image plane (YUV). |
-| [`setPixelFormat`](#setpixelformat) | Set the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`setFrameID`](#setframeid) | Set the `frameID` of the `DCEFrame` object. |
-| [`setQuality`](#setquality) | Set the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`setIsCropped`](#setiscropped) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setCropRegion`](#setcropregion) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setOrientation`](#setorientation) | Set the orientation of the image. |
-| [`toBitmap`](#tobitmap) | The method converts the image to `Bitmap`. |
-
-
-
-## getImageData
-
-Get the pixel data of the image.
-
-```java
-byte[] getImageData()
-```
-
-**Return Value**
-
-The method returns a byte list that stores the pixel data of the image.
-
-
-
-## getWidth
-
-Get the pixel width of the image.
-
-```java
-int getWidth()
-```
-
-**Return Value**
-
-The method returns the pixel width of the image.
-
-
-
-## getHeight
-
-Get the pixel height of the image.
-
-```java
-int getHeight()
-```
-
-**Return Value**
-
-The method returns the pixel height of the image.
-
-
-
-## getStrides
-
-Get the number of row bytes in each image plane (YUV).
-
-```java
-int[] getStrides()
-```
-
-**Return Value**
-
-The number of row bytes in each image plane (YUV).
-
-**Remarks**
-
-`strides[0]` is the stride of Y component in the image. `strides[1]` and `strides[2]` are the strides of the U (blue projection) and V (red projection) components in the image.
-
-
-
-## getPixelFormat
-
-Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21.
-
-```java
-int getPixelFormat()
-```
-
-**Return Value**
-
-The method returns an int value that refers to the pixel format of the image. View morein [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## getFrameID
-
-Get the `frameID` of the `DCEFrame` object.
-
-```java
-int getFrameID()
-```
-
-**Return Value**
-
-The method returns an int value that stores the `frameID` of the image.
-
-
-
-## getQuality
-
-Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown.
-
-```java
-EnumFrameQuality getQuality()
-```
-
-**Return Value**
-
-The method returns an enumeration value in [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html).
-
-**Remarks**
-
-Users can get all the original DCEFrame via `DCEFrameListener` but only high-quality frame can be acquired from the DCE video buffer if frame filter is enabled. In another word, when frame filter feature is enabled, the frame quality will always be high if they are acquired by triggering `getFrameFromBuffer`.
-
-
-
-## getIsCropped
-
-Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled.
-
-```java
-boolean getIsCropped()
-```
-
-**Return Value**
-
-A boolean value. `True` means the image is cropped and `false` means the image has never been cropped.
-
-
-
-## getCropRegion
-
-Get the crop region of the image (if the image is cropped).
-
-```java
-Rect getCropRegion()
-```
-
-**Return Value**
-
-A Rect value that stores the crop region. If the image is not cropped, the value will be null.
-
-
-
-## getOrientation
-
-Set the orientation of the image.
-
-```java
-int getOrientation()
-```
-
-**Return Value**
-
-Int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation.
-
-
-
-
All examples of the orientation
-
-
-
-
-## setImageData
-
-Set the pixel data of the image.
-
-```java
-void setImageData(byte[] imageData)
-```
-
-**Parameters**
-
-`imageData`: A byte list that storing the image pixel data.
-
-
-
-## setWidth
-
-Set the pixel width of the image.
-
-```java
-void setWidth(int width)
-```
-
-**Parameters**
-
-`width`: The pixel value that stands for the width of the image.
-
-
-
-## setHeight
-
-Set the pixel height of the image.
-
-```java
-void setHeight(int height)
-```
-
-**Parameters**
-
-`height`: The pixel value that stands for the height of the image.
-
-
-
-## setStrides
-
-Set the number of row bytes in each image plane.
-
-```java
-void setStrides(int[] strides)
-```
-
-**Parameters**
-
-`strides`: The number of row bytes in each image plane.
-
-
-
-## setPixelFormat
-
-Set the pixel format of the image.
-
-```java
-void setPixelFormat(int pixelFormat)
-```
-
-**Parameters**
-
-`pixelFormat`: The pixelFormat of the image. View more in [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## setFrameID
-
-Set the `frameID` of the image.
-
-```java
-void setFrameID(int frameID)
-```
-
-**Parameters**
-
-`frameID`: An int value that stands for the `frameID` of the image.
-
-
-
-## setQuality
-
-Set the frame quality of the image.
-
-```java
-void setQuality(EnumFrameQuality quality)
-```
-
-**Parameters**
-
-`quality`: One of the [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html) value that indicates the frame quality.
-
-
-
-## setIsCropped
-
-Set whether the image is cropped.
-
-```java
-void setIsCropped(boolean isCropped)
-```
-
-**Parameters**
-
-`isCropped`: A boolean value that means whether the image is cropped.
-
-
-
-## setCropRegion
-
-Set the crop region of the image (if the frame is cropped).
-
-```java
-void setCropRegion(Rect region)
-```
-
-**Parameters**
-
-`cropRegion`: A Rect value that means crop area of the image (if the frame is cropped).
-
-
-
-## setOrientation
-
-Set the orientation of the image.
-
-```java
-void setOrientation(int orientation)
-```
-
-**Parameters**
-
-`orientation`: Int value that means the rotation angle of the image.
-
-## toBitmap
-
-The method converts the image to `Bitmap`.
-
-```java
-Bitmap toBitmap()
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-```java
-Bitmap frame = DCEFrame.toBitmap();
-```
diff --git a/programming-old/android/auxiliary-api/dceframe-v3.0.3.md b/programming-old/android/auxiliary-api/dceframe-v3.0.3.md
deleted file mode 100644
index 7a17d3a7..00000000
--- a/programming-old/android/auxiliary-api/dceframe-v3.0.3.md
+++ /dev/null
@@ -1,356 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrame Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFrame
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFrame Class
-permalink: /programming/android/auxiliary-api/dceframe-v3.0.3.html
----
-
-# DCEFrame
-
-> You are viewing a historical document page of Dynamsoft Camera Enhancer v3.0.3.
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-```java
-class com.dynamsoft.dce.DCEFrame
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`getImageData`](#getimagedata) | Get the pixel data of the image. |
-| [`getWidth`](#getwidth) | Get the pixel width of the image. |
-| [`getHeight`](#getheight) | Get the pixel height of the image. |
-| [`getStrides`](#getstrides) | Get the number of row bytes in each image plane (YUV). |
-| [`getPixelFormat`](#getpixelformat) | Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`getFrameID`](#getframeid) | Get the `frameID` of the `DCEFrame` object. |
-| [`getQuality`](#getquality) | Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`getIsCropped`](#getiscropped) | Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`getCropRegion`](#getcropregion) | Get the crop region of the image (if the image is cropped). |
-| [`getOrientation`](#setorientation) | Set the orientation of the image. |
-| [`setImageData`](#setimagedata) | Set the pixel data of the image. |
-| [`setWidth`](#setwidth) | Set the pixel width of the image. |
-| [`setHeight`](#setheight) | Set the pixel height of the image. |
-| [`setStrides`](#setstrides) | Set the number of row bytes in each image plane (YUV). |
-| [`setPixelFormat`](#setpixelformat) | Set the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`setFrameID`](#setframeid) | Set the `frameID` of the `DCEFrame` object. |
-| [`setQuality`](#setquality) | Set the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`setIsCropped`](#setiscropped) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setCropRegion`](#setcropregion) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setOrientation`](#setorientation) | Set the orientation of the image. |
-| [`toBitmap`](#tobitmap) | The method converts the image to `Bitmap`. |
-
-
-
-## getImageData
-
-Get the pixel data of the image.
-
-```java
-byte[] getImageData()
-```
-
-**Return Value**
-
-The method returns a byte list that stores the pixel data of the image.
-
-
-
-## getWidth
-
-Get the pixel width of the image.
-
-```java
-int getWidth()
-```
-
-**Return Value**
-
-The method returns the pixel width of the image.
-
-
-
-## getHeight
-
-Get the pixel height of the image.
-
-```java
-int getHeight()
-```
-
-**Return Value**
-
-The method returns the pixel height of the image.
-
-
-
-## getStrides
-
-Get the number of row bytes in each image plane (YUV).
-
-```java
-int[] getStrides()
-```
-
-**Return Value**
-
-The number of row bytes in each image plane (YUV).
-
-**Remarks**
-
-`strides[0]` is the stride of Y component in the image. `strides[1]` and `strides[2]` are the strides of the U (blue projection) and V (red projection) components in the image.
-
-
-
-## getPixelFormat
-
-Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21.
-
-```java
-int getPixelFormat()
-```
-
-**Return Value**
-
-The method returns an int value that refers to the pixel format of the image. View morein [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## getFrameID
-
-Get the `frameID` of the `DCEFrame` object.
-
-```java
-int getFrameID()
-```
-
-**Return Value**
-
-The method returns an int value that stores the `frameID` of the image.
-
-
-
-## getQuality
-
-Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown.
-
-```java
-EnumFrameQuality getQuality()
-```
-
-**Return Value**
-
-The method returns an enumeration value in [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html).
-
-**Remarks**
-
-Users can get all the original DCEFrame via `DCEFrameListener` but only high-quality frame can be acquired from the DCE video buffer if frame filter is enabled. In another word, when frame filter feature is enabled, the frame quality will always be high if they are acquired by triggering `getFrameFromBuffer`.
-
-
-
-## getIsCropped
-
-Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled.
-
-```java
-boolean getIsCropped()
-```
-
-**Return Value**
-
-A boolean value. `True` means the image is cropped and `false` means the image has never been cropped.
-
-
-
-## getCropRegion
-
-Get the crop region of the image (if the image is cropped).
-
-```java
-Rect getCropRegion()
-```
-
-**Return Value**
-
-A Rect value that stores the crop region. If the image is not cropped, the value will be null.
-
-
-
-## getOrientation
-
-Set the orientation of the image.
-
-```java
-int getOrientation()
-```
-
-**Return Value**
-
-Int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation.
-
-
-
-
All examples of the orientation
-
-
-
-
-## setImageData
-
-Set the pixel data of the image.
-
-```java
-void setImageData(byte[] imageData)
-```
-
-**Parameters**
-
-`imageData`: A byte list that storing the image pixel data.
-
-
-
-## setWidth
-
-Set the pixel width of the image.
-
-```java
-void setWidth(int width)
-```
-
-**Parameters**
-
-`width`: The pixel value that stands for the width of the image.
-
-
-
-## setHeight
-
-Set the pixel height of the image.
-
-```java
-void setHeight(int height)
-```
-
-**Parameters**
-
-`height`: The pixel value that stands for the height of the image.
-
-
-
-## setStrides
-
-Set the number of row bytes in each image plane.
-
-```java
-void setStrides(int[] strides)
-```
-
-**Parameters**
-
-`strides`: The number of row bytes in each image plane.
-
-
-
-## setPixelFormat
-
-Set the pixel format of the image.
-
-```java
-void setPixelFormat(int pixelFormat)
-```
-
-**Parameters**
-
-`pixelFormat`: The pixelFormat of the image. View more in [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=android).
-
-
-
-## setFrameID
-
-Set the `frameID` of the image.
-
-```java
-void setFrameID(int frameID)
-```
-
-**Parameters**
-
-`frameID`: An int value that stands for the `frameID` of the image.
-
-
-
-## setQuality
-
-Set the frame quality of the image.
-
-```java
-void setQuality(EnumFrameQuality quality)
-```
-
-**Parameters**
-
-`quality`: One of the [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html) value that indicates the frame quality.
-
-
-
-## setIsCropped
-
-Set whether the image is cropped.
-
-```java
-void setIsCropped(boolean isCropped)
-```
-
-**Parameters**
-
-`isCropped`: A boolean value that means whether the image is cropped.
-
-
-
-## setCropRegion
-
-Set the crop region of the image (if the frame is cropped).
-
-```java
-void setCropRegion(Rect region)
-```
-
-**Parameters**
-
-`cropRegion`: A Rect value that means crop area of the image (if the frame is cropped).
-
-
-
-## setOrientation
-
-Set the orientation of the image.
-
-```java
-void setOrientation(int orientation)
-```
-
-**Parameters**
-
-`orientation`: Int value that means the rotation angle of the image.
-
-## toBitmap
-
-The method converts the image to `Bitmap`.
-
-```java
-Bitmap toBitmap()
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-```java
-Bitmap frame = DCEFrame.toBitmap();
-```
diff --git a/programming-old/android/auxiliary-api/dceframe.md b/programming-old/android/auxiliary-api/dceframe.md
deleted file mode 100644
index ef5c0d16..00000000
--- a/programming-old/android/auxiliary-api/dceframe.md
+++ /dev/null
@@ -1,359 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrame Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEFrame
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEFrame Class
-permalink: /programming/android/auxiliary-api/dceframe.html
-ignore: true
----
-
-# DCEFrame
-
-> You are viewing a historical document page of Dynamsoft Camera Enhancer v3.0.3.
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-```java
-class com.dynamsoft.dce.DCEFrame
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`getImageData`](#getimagedata) | Get the pixel data of the image. |
-| [`getWidth`](#getwidth) | Get the pixel width of the image. |
-| [`getHeight`](#getheight) | Get the pixel height of the image. |
-| [`getStrides`](#getstrides) | Get the number of row bytes in each image plane (YUV). |
-| [`getPixelFormat`](#getpixelformat) | Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`getFrameID`](#getframeid) | Get the `frameID` of the `DCEFrame` object. |
-| [`getQuality`](#getquality) | Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`getIsCropped`](#getiscropped) | Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`getCropRegion`](#getcropregion) | Get the crop region of the image (if the image is cropped). |
-| [`getOrientation`](#setorientation) | Set the orientation of the image. |
-| [`setImageData`](#setimagedata) | Set the pixel data of the image. |
-| [`setWidth`](#setwidth) | Set the pixel width of the image. |
-| [`setHeight`](#setheight) | Set the pixel height of the image. |
-| [`setStrides`](#setstrides) | Set the number of row bytes in each image plane (YUV). |
-| [`setPixelFormat`](#setpixelformat) | Set the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21. |
-| [`setFrameID`](#setframeid) | Set the `frameID` of the `DCEFrame` object. |
-| [`setQuality`](#setquality) | Set the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown. |
-| [`setIsCropped`](#setiscropped) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setCropRegion`](#setcropregion) | Set a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`setOrientation`](#setorientation) | Set the orientation of the image. |
-| [`toBitmap`](#tobitmap) | The method converts the image to `UIImage` to make it visible on the UI. |
-
-
-
-## getImageData
-
-Get the pixel data of the image.
-
-```java
-byte[] getImageData()
-```
-
-**Return Value**
-
-The method returns a byte list that stores the pixel data of the image.
-
-
-
-## getWidth
-
-Get the pixel width of the image.
-
-```java
-int getWidth()
-```
-
-**Return Value**
-
-The method returns the pixel width of the image.
-
-
-
-## getHeight
-
-Get the pixel height of the image.
-
-```java
-int getHeight()
-```
-
-**Return Value**
-
-The method returns the pixel height of the image.
-
-
-
-## getStrides
-
-Get the number of row bytes in each image plane (YUV).
-
-```java
-int[] getStrides()
-```
-
-**Return Value**
-
-The number of row bytes in each image plane (YUV).
-
-**Remarks**
-
-`strides[0]` is the stride of Y component in the image. `strides[1]` and `strides[2]` are the strides of the U (blue projection) and V (red projection) components in the image.
-
-
-
-## getPixelFormat
-
-Get the pixel format of the image. Currently, the image output format of `DCEFrame` is always NV21.
-
-```java
-int getPixelFormat()
-```
-
-**Return Value**
-
-The method returns an int value that refers to the enumeration value of [`ImagePixelFormat`]({{site.barcode-enum}}other-enums.html#imagepixelformat) (view the enumeration members in Dynamsoft Barcode Reader documents).
-
-
-
-
-## getFrameID
-
-Get the `frameID` of the `DCEFrame` object.
-
-```java
-int getFrameID()
-```
-
-**Return Value**
-
-The method returns an int value that stores the `frameID` of the image.
-
-
-
-
-## getQuality
-
-Get the frame quality of the image. User have to enable the frame filter feature to get the quality (high/low) of the image. Otherwise, the frame quality will be unknown.
-
-```java
-EnumFrameQuality getQuality()
-```
-
-**Return Value**
-
-The method returns an enumeration value in [`EnumFrameQuality`]({{site.dce-enums}}video-frame-quality.html?lang=android).
-
-**Remarks**
-
-Users can get all the original DCEFrame via `DCEFrameListener` but only high-quality frame can be acquired from the DCE video buffer if frame filter is enabled. In another word, when frame filter feature is enabled, the frame quality will always be high if they are acquired by triggering `getFrameFromBuffer`.
-
-
-
-## getIsCropped
-
-Get a boolean value that means whether the image is cropped. The frames can be cropped if `fast mode` is enabled.
-
-```java
-boolean getIsCropped()
-```
-
-**Return Value**
-
-A boolean value. `True` means the image is cropped and `false` means the image has never been cropped.
-
-
-
-## getCropRegion
-
-Get the crop region of the image (if the image is cropped).
-
-```java
-Rect getCropRegion()
-```
-
-**Return Value**
-
-A Rect value that stores the crop region. If the image is not cropped, the value will be null.
-
-
-
-## getOrientation
-
-Set the orientation of the image.
-
-```java
-int getOrientation()
-```
-
-**Return Value**
-
-Int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation.
-
-
-
-
All examples of the orientation
-
-
-
-
-## setImageData
-
-Set the pixel data of the image.
-
-```java
-void setImageData(byte[] imageData)
-```
-
-**Parameters**
-
-`imageData`: A byte list that storing the image pixel data.
-
-
-
-## setWidth
-
-Set the pixel width of the image.
-
-```java
-void setWidth(int width)
-```
-
-**Parameters**
-
-`width`: The pixel value that stands for the width of the image.
-
-
-
-## setHeight
-
-Set the pixel height of the image.
-
-```java
-void setHeight(int height)
-```
-
-**Parameters**
-
-`height`: The pixel value that stands for the height of the image.
-
-
-
-## setStrides
-
-Set the number of row bytes in each image plane.
-
-```java
-void setStrides(int[] strides)
-```
-
-**Parameters**
-
-`strides`: The number of row bytes in each image plane.
-
-
-
-## setPixelFormat
-
-Set the pixel format of the image.
-
-```java
-void setPixelFormat(int pixelFormat)
-```
-
-**Parameters**
-
-`pixelFormat`: The pixelFormat of the image. View more in Dynamsoft Barcode Reader Enumeration [`ImagePixelFormat`]({{site.barcode-enum}}other-enums.html#imagepixelformat)
-
-
-
-## setFrameID
-
-Set the `frameID` of the image.
-
-```java
-void setFrameID(int frameID)
-```
-
-**Parameters**
-
-`frameID`: An int value that stands for the `frameID` of the image.
-
-
-
-## setQuality
-
-Set the frame quality of the image.
-
-```java
-void setQuality(EnumFrameQuality quality)
-```
-
-**Parameters**
-
-`quality`: An `Enumeration` value that means the frame quality. Read more in [`EnumFrameQuality`]({{site.dce-enums}}video-frame-quality.html?lang=android).
-
-
-
-## setIsCropped
-
-Set whether the image is cropped.
-
-```java
-void setIsCropped(boolean isCropped)
-```
-
-**Parameters**
-
-`isCropped`: A boolean value that means whether the image is cropped.
-
-
-
-## setCropRegion
-
-Set the crop region of the image (if the frame is cropped).
-
-```java
-void setCropRegion(Rect region)
-```
-
-**Parameters**
-
-`cropRegion`: A Rect value that means crop area of the image (if the frame is cropped).
-
-
-
-## setOrientation
-
-Set the orientation of the image.
-
-```java
-void setOrientation(int orientation)
-```
-
-**Parameters**
-
-`orientation`: Int value that means the rotation angle of the image.
-
-## toBitmap
-
-The method converts the image to `UIImage` to make it visible on the UI.
-
-```java
-Bitmap toBitmap()
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-```java
-Bitmap frame = DCEFrame.toBitmap();
-```
diff --git a/programming-old/android/auxiliary-api/dceimageeditorview-v3.0.3.md b/programming-old/android/auxiliary-api/dceimageeditorview-v3.0.3.md
deleted file mode 100644
index 25fa459f..00000000
--- a/programming-old/android/auxiliary-api/dceimageeditorview-v3.0.3.md
+++ /dev/null
@@ -1,144 +0,0 @@
----
-layout: default-layout
-title: Android DCEImageEditorView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DCEImageEditorView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DCEImageEditorView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DCEImageEditorView Class
-permalink: /programming/android/auxiliary-api/dceimageeditorview-v3.0.3.html
----
-
-# DCEImageEditorView
-
-`DCEImageEditorView` is the class that enable users to add UI configurations on a static image.
-
-```java
-class com.dynamsoft.dce.DCEImageEditorView
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`setOriginalImage`](#setoriginalimage) | Set the background image of the view with an original image. |
-| [`getOriginalImage`](#getoriginalimage) | Get the current backgroud image. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getSelectedDrawingItem`](#getselecteddrawingitem) | Get the selected drawing item. |
-
-
-
-## setOriginalImage
-
-Set the background image of the view with an original image.
-
-```java
-public void setOriginalImage(ImageData imageData);
-```
-
-**Parameters**
-
-`imageData`: The `imageData` of the image.
-
-**Code Snippet**
-
-```java
-mIEV = (DCEImageEditorView) findViewById(R.id.iev);
-mImgData = getIntent().getIntExtra("imagedata");
-mIEV.setOriginalImage(mImgData);
-```
-
-
-
-## getOriginalImage
-
-Get the current backgroud image.
-
-```java
-public ImageData getOriginalImage();
-```
-
-**Return Value**
-
-The `imageData` of the image.
-
-**Code Snippet**
-
-```java
-ImageData image = imageEditorView.getOriginalImage();
-```
-
-
-
-## getDrawingLayer
-
-Get the instance of the target `DrawingLayer`. The target `DrawingLayer` will be created if it does not exist.
-
-```java
-public DCEDrawingLayer getDrawingLayer(int id);
-```
-
-**Parameters**
-
-`id`: The id of the `DrawingLayer`.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Return Value**
-
-An instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer drawingLayer = dceImageEditorView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID);
-```
-
-
-
-## createDrawingLayer
-
-Create a user-defined `DrawingLayer` instance.
-
-```java
-public DCEDrawingLayer createDrawingLayer();
-```
-
-**Return Value**
-
-An instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-```java
-DCEDrawingLayer drawingLayer = dceImageEditorView.createDrawingLayer();
-```
-
-
-
-## getSelectedDrawingItem
-
-Get the user selected `DrawingItem`.
-
-```java
-public DrawingItem getSelectedDrawingItem();
-```
-
-**Return Value**
-
-An instance of `DrawingItem`.
-
-**Code Snippet**
-
-```java
-DrawingItem drawingItem = dceImageEditorView.getSelectedDrawingItem();
-```
-
-
diff --git a/programming-old/android/auxiliary-api/dlsconnection-v1.0.1.md b/programming-old/android/auxiliary-api/dlsconnection-v1.0.1.md
deleted file mode 100644
index 05cd73d2..00000000
--- a/programming-old/android/auxiliary-api/dlsconnection-v1.0.1.md
+++ /dev/null
@@ -1,229 +0,0 @@
----
-layout: default-layout
-title: Android DMLTSConnectionParameters Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DMLTSConnectionParameters Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android DMLTSConnectionParameters Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DMLTSConnectionParameters Class
-permalink: /programming/android/auxiliary-api/dlsconnection-v1.0.1.html
----
-
-# DMLTSConnectionParameters
-
-`DMLTSConnectionParameters` is the class that defines a struct to configure the parameters to connect to the license tracking server.
-
-```java
-class com.dynamsoft.dce.DMLTSConnectionParameters
-```
-
-| Attribute Name | Type |
-|------|------|
-| [`mainServerURL`](#mainserverurl) | String |
-| [`standbyServerURL`](#standbyserverurl) | String |
-| [`handshakeCode`](#handshakecode) | String |
-| [`organizationID`](#organizationid) | String |
-| [`sessionPassword`](#sessionpassword) | String |
-| [`uuidGenerationMethod`](#uuidgenerationmethod) | int |
-| [`maxBufferDays`](#maxbufferdays) | int |
-| [`limitedLicenseModules`](#limitedlicensemodules) | list |
-| [`chargeWay`](#chargeway) | int |
-| [`products`](#products) | int |
-
-## mainServerURL
-
-The URL of the license tracking server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.mainServerURL = "";
-```
-
-**Remarks**
-
-If you choose "Dynamsoft-hosting", then no need to change the value of MainServerURL and StandbyServerURL. When both are set to null (default value), it will connect to Dynamsoft's license tracking servers for online verification.
-
-
-
-## standbyServerURL
-
-The URL of the standby license tracking server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.standbyServerURL = "";
-```
-
-**Remarks**
-
-If you choose "Dynamsoft-hosting", then no need to change the value of MainServerURL and StandbyServerURL. When both are set to null (default value), it will connect to Dynamsoft's license tracking servers for online verification.
-
-
-
-## handshakeCode
-
-The handshake code.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.handshakeCode = "";
-```
-
-
-
-## organizationID
-
-The organization ID
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.organizationID = "";
-```
-
-
-
-## sessionPassword
-
-The session password of the handshake code set in license tracking server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.sessionPassword = "";
-```
-
-
-
-## uuidGenerationMethod
-
-Sets the method to generate UUID.
-
-**Value Range**
-
-Any one of the [`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod) Enumeration items.
-
-**Default Value**
-
-DM_UUIDGM_RANDOM
-
-**Code Snippet**
-
-```java
-dceParameters.uuidGenerationMethod = EnumCameraDMUUIDGenerationMethod.DM_UUIDGM_RANDOM;
-```
-
-**See Also**
-
-[`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod)
-
-
-
-
-## maxBufferDays
-
-Sets the max days to buffer the license info.
-
-**Value Range**
-
-[7,0x7fffffff]
-
-**Default Value**
-
-7
-
-**Code Snippet**
-
-
-```java
-dceParameters.maxBufferDays = 7;
-```
-
-
-
-
-## chargeWay
-
-Sets the charge way.
-
-**Value Range**
-
-Any one of the [`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway) Enumeration items.
-
-**Default Value**
-
-DM_CW_AUTO
-
-**Code Snippet**
-
-```java
-dceParameters.chargeWay = EnumDMChargeWay.DM_CW_DEVICE_COUNT;
-```
-
-**See Also**
-
-[`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway)
-
-
-
-## products
-
-Set the products. This is a combined value of Product Enumration items.
-
-**Value Range**
-
-Any one of the [`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct) Enumeration items.
-
-**Code Snippet**
-
-```java
-dceParameters.products = EnumProduct.PROD_DBR;
-```
-
-**See Also**
-
-[`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct)
diff --git a/programming-old/android/auxiliary-api/dlsconnection.md b/programming-old/android/auxiliary-api/dlsconnection.md
deleted file mode 100644
index 699fb175..00000000
--- a/programming-old/android/auxiliary-api/dlsconnection.md
+++ /dev/null
@@ -1,230 +0,0 @@
----
-layout: default-layout
-title: Android DMDLSConnectionParameters Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android DMDLSConnectionParameters Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android DMDLSConnectionParameters Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DMDLSConnectionParameters Class
-permalink: /programming/android/auxiliary-api/dlsconnection.html
----
-
-# DMDLSConnectionParameters
-
-`DMDLSConnectionParameters` is the class that defines a struct to configure the parameters to connect to the Dynamsoft License Server.
-
-```java
-class com.dynamsoft.dce.DMDLSConnectionParameters
-```
-
-| Attribute Name | Type |
-| -------------- | ---- |
-| [`mainServerURL`](#mainserverurl) | String |
-| [`standbyServerURL`](#standbyserverurl) | String |
-| [`handshakeCode`](#handshakecode) | String |
-| [`organizationID`](#organizationid) | String |
-| [`sessionPassword`](#sessionpassword) | String |
-| [`uuidGenerationMethod`](#uuidgenerationmethod) | int |
-| [`maxBufferDays`](#maxbufferdays) | int |
-| [`limitedLicenseModules`](#limitedlicensemodules) | list |
-| [`chargeWay`](#chargeway) | int |
-| [`products`](#products) | int |
-
-## mainServerURL
-
-The URL of the Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.mainServerURL = "";
-```
-
-**Remarks**
-
-If you choose "Dynamsoft-hosting", then no need to change the value of MainServerURL and StandbyServerURL. When both are set to null (default value), it will connect to Dynamsoft License Servers for online verification.
-
-
-
-## standbyServerURL
-
-The URL of the standby Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.standbyServerURL = "";
-```
-**Remarks**
-
-If you choose "Dynamsoft-hosting", then no need to change the value of MainServerURL and StandbyServerURL. When both are set to null (default value), it will connect to Dynamsoft License Servers for online verification.
-
-
-
-
-## handshakeCode
-
-The handshake code.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-
-```java
-dceParameters.handshakeCode = "";
-```
-
-
-
-## organizationID
-
-The organization ID
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.organizationID = "";
-```
-
-
-
-## sessionPassword
-
-The session password of the handshake code set in Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```java
-dceParameters.sessionPassword = "";
-```
-
-
-
-## uuidGenerationMethod
-
-Sets the method to generate UUID.
-
-**Value Range**
-
-Any one of the [`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod) Enumeration items.
-
-**Default Value**
-
-DM_UUIDGM_RANDOM
-
-**Code Snippet**
-
-
-```java
-dceParameters.uuidGenerationMethod = EnumCameraDMUUIDGenerationMethod.DM_UUIDGM_RANDOM;
-```
-
-**See Also**
-
-[`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod)
-
-
-
-## maxBufferDays
-
-Sets the max days to buffer the license info.
-
-**Value Range**
-
-[7,0x7fffffff]
-
-**Default Value**
-
-7
-
-**Code Snippet**
-
-```java
-dceParameters.maxBufferDays = 7;
-```
-
-
-
-## chargeWay
-
-Sets the charge way.
-
-**Value Range**
-
-Any one of the [`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway) Enumeration items.
-
-**Default Value**
-
-DM_CW_AUTO
-
-**Code Snippet**
-
-```java
-dceParameters.chargeWay = EnumDMChargeWay.DM_CW_DEVICE_COUNT;
-```
-
-**See Also**
-
-[`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway)
-
-
-
-
-## products
-
-Set the products. This is a combined value of Product Enumration items.
-
-**Value Range**
-
-Any one of the [`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct) Enumeration items.
-
-**Code Snippet**
-
-
-```java
-dceParameters.products = EnumProduct.PROD_DBR;
-```
-
-**See Also**
-
-[`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct)
diff --git a/programming-old/android/auxiliary-api/drawingitem-quad-v3.0.3.md b/programming-old/android/auxiliary-api/drawingitem-quad-v3.0.3.md
deleted file mode 100644
index 8b3735e9..00000000
--- a/programming-old/android/auxiliary-api/drawingitem-quad-v3.0.3.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-layout: default-layout
-title: Android QuadDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android QuadDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, QuadDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android QuadDrawingItem Class
-permalink: /programming/android/auxiliary-api/drawingitem-quad-v3.0.3.html
----
-
-# QuadDrawingItem Class
-
-`QuadDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `QuadDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-```java
-class com.dynamsoft.dce.QuadDrawingItem extends DrawingItem
-```
-
-| Method | Descriptions |
-| ------ | ------------ |
-| [`QuadDrawingItem`](#quaddrawingitem) | The constructor of `QuadDrawingItem`. Create an instance of `QuadDrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the `QuadDrawingItem`. |
-| [`getQuad`](#getquad) | Get the `Quad` of the `QuadDrawingItem`. |
-| [`getDrawingStyleId`](#getdrawingstyleid) | Get the drawing style of the current drawing item. |
-| [`setDrawingStyleId`](#setdrawingstyleid) | Set the drawing style of the current drawing item. |
-| [`getState`](#getstate) | Get the state of the current drawing item. |
-| [`setState`](#setstate) | Set the state of the current drawing item. |
-
-## QuadDrawingItem
-
-The constructor of `QuadDrawingItem`. Create an instance of `QuadDrawingItem`.
-
-```java
-public QuadDrawingItem(com.dynamsoft.core.Quadrilateral quad);
-```
-
-**Parameters**
-
-`quad`: The [`Quadrilateral`]({{ site.dcv_android_api }}core/basic-structures/quadrilateral.html) that indicates the location of the `QuadDrawingItem`.
-
-**Code Snippet**
-
-```java
-DrawingItem drawingItem = new QuadDrawingItem(quad);
-```
-
-
-
-## getMediaType
-
-Get the media type of the `QuadDrawingItem`.
-
-```java
-public EnumDrawingItemMeidaType getMediaType();
-```
-
-**Return Value**
-
-The media type of the `QuadDrawingItem`.
-
-**Code Snippet**
-
-```java
-EnumDrawingItemMediaType mediaType = drawingItem.getMediaType();
-```
-
-
-
-## getQuad
-
-Get the `Quad` of the `QuadDrawingItem`.
-
-```java
-public com.dynamsoft.core.Quadrilateral getQuad();
-```
-
-**Return Value**
-
-The [`Quadrilateral`]({{ site.dcv_android_api }}core/basic-structures/quadrilateral.html) that indicates the location of the `QuadDrawingItem`.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.core.Quadrilateral quad = drawingItem.getQuad();
-```
-
-
-
-## getDrawingStyleId
-
-Get the ID of the `DrawingStyle` that is applied on this `DrawingItem`.
-
-```java
-public int getDrawingStyleId();
-```
-
-**Return Value**
-
-An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-int styleId = drawingItem.getDrawingStyleId();
-```
-
-
-
-## setDrawingStyleId
-
-Set a `DrawingStyle` by ID for the `DrawingItem`.
-
-```java
-public void setDrawingStyleId(int style);
-```
-
-**Parameters**
-
-`style`: An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-drawingItem.setDrawingStyleId(0);
-```
-
-
-
-## getState
-
-Get the status of the `DrawingItem`.
-
-```java
-public EnumDrawingItemState getState();
-```
-
-**Return Value**
-
-The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-EnumDrawingItemState state = drawingItem.getState();
-```
-
-
-
-## setState
-
-Set the status of the `DrawingItem`.
-
-```java
-public void setState(EnumDrawingItemState state);
-```
-
-**Parameters**
-
-`state`: The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-drawingItem.setState(EnumDrawingItemState.DIS_SELECTED)
-```
-
-
diff --git a/programming-old/android/auxiliary-api/drawingitem-rect-v3.0.3.md b/programming-old/android/auxiliary-api/drawingitem-rect-v3.0.3.md
deleted file mode 100644
index 0f51db6c..00000000
--- a/programming-old/android/auxiliary-api/drawingitem-rect-v3.0.3.md
+++ /dev/null
@@ -1,171 +0,0 @@
----
-layout: default-layout
-title: Android RectDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android RectDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, RectDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android RectDrawingItem Class
-permalink: /programming/android/auxiliary-api/drawingitem-rect-v3.0.3.html
----
-
-# RectDrawingItem Class
-
-`RectDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `RectDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-```java
-class com.dynamsoft.dce.RectDrawingItem extends DrawingItem
-```
-
-| Method | Descriptions |
-| ------ | ------------ |
-| [`RectDrawingItem`](#rectdrawingitem) | The constructor of `RectDrawingItem`. Create an instance of `RectDrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the `RectDrawingItem`. |
-| [`getRect`](#getrect) | Get the `Rect` of the `RectDrawingItem`. |
-| [`getDrawingStyleId`](#getdrawingstyleid) | Get the drawing style of the current drawing item. |
-| [`setDrawingStyleId`](#setdrawingstyleid) | Set the drawing style of the current drawing item. |
-| [`getState`](#getstate) | Get the state of the current drawing item. |
-| [`setState`](#setstate) | Set the state of the current drawing item. |
-
-
-
-## RectDrawingItem
-
-The constructor of `RectDrawingItem`. Create an instance of `RectDrawingItem`.
-
-```java
-public RectDrawingItem(android.graphics.Rect rect);
-```
-
-**Parameters**
-
-`rect`: The `Rect` that indicates the location of the `RectDrawingItem`.
-
-**Code Snippet**
-
-```java
-DrawingItem drawingItem = new RectDrawingItem(rect);
-```
-
-
-
-## getMediaType
-
-Get the media type of the `RectDrawingItem`.
-
-```java
-public EnumDrawingItemMeidaType getMediaType();
-```
-
-**Return Value**
-
-The media type of the `RectDrawingItem`.
-
-**Code Snippet**
-
-```java
-EnumDrawingItemMediaType mediaType = drawingItem.getMediaType();
-```
-
-
-
-## getRect
-
-Get the `Rect` of the `RectDrawingItem`.
-
-```java
-public android.graphics.Rect getRect();
-```
-
-**Return Value**
-
-The `Rect` that indicates the location of the `RectDrawingItem`.
-
-**Code Snippet**
-
-```java
-android.graphics.Rect rect = drawingItem.getRect();
-```
-
-
-
-## getDrawingStyleId
-
-Get the ID of the `DrawingStyle` that is applied on this `DrawingItem`.
-
-```java
-public int getDrawingStyleId();
-```
-
-**Return Value**
-
-An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-int styleId = drawingItem.getDrawingStyleId();
-```
-
-
-
-## setDrawingStyleId
-
-Set a `DrawingStyle` by ID for the `DrawingItem`.
-
-```java
-public void setDrawingStyleId(int style);
-```
-
-**Parameters**
-
-`style`: An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-drawingItem.setDrawingStyleId(0);
-```
-
-
-
-## getState
-
-Get the status of the `DrawingItem`.
-
-```java
-public EnumDrawingItemState getState();
-```
-
-**Return Value**
-
-The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-EnumDrawingItemState state = drawingItem.getState();
-```
-
-
-
-## setState
-
-Set the status of the `DrawingItem`.
-
-```java
-public void setState(EnumDrawingItemState state);
-```
-
-**Parameters**
-
-`state`: The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-drawingItem.setState(EnumDrawingItemState.DIS_SELECTED)
-```
-
-
diff --git a/programming-old/android/auxiliary-api/drawingitem-text-v3.0.3.md b/programming-old/android/auxiliary-api/drawingitem-text-v3.0.3.md
deleted file mode 100644
index 6e0d4fd6..00000000
--- a/programming-old/android/auxiliary-api/drawingitem-text-v3.0.3.md
+++ /dev/null
@@ -1,192 +0,0 @@
----
-layout: default-layout
-title: Android TextDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android TextDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, TextDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android TextDrawingItem Class
-permalink: /programming/android/auxiliary-api/drawingitem-text-v3.0.3.html
----
-
-# TextDrawingItem Class
-
-`TextDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `TextDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-```java
-class com.dynamsoft.dce.TextDrawingItem extends DrawingItem
-```
-
-| Method | Descriptions |
-| ------ | ------------ |
-| [`TextDrawingItem`](#textdrawingitem) | The constructor of `TextDrawingItem`. Create an instance of `TextDrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the `TextDrawingItem`. |
-| [`getText`](#gettext) | Get the `Text` of the `TextDrawingItem`. |
-| [`getDrawingStyleId`](#getdrawingstyleid) | Get the drawing style of the current drawing item. |
-| [`setDrawingStyleId`](#setdrawingstyleid) | Set the drawing style of the current drawing item. |
-| [`getState`](#getstate) | Get the state of the current drawing item. |
-| [`setState`](#setstate) | Set the state of the current drawing item. |
-
-
-
-## TextDrawingItem
-
-The constructor of `TextDrawingItem`. Create an instance of `TextDrawingItem`.
-
-```java
-public TextDrawingItem(String text, android.graphics.Rect textRect);
-```
-
-**Parameters**
-
-`text`: The text of the `TextDrawingItem`.
-`textRect`: The `Rect` that indicates the location of the `TextDrawingItem`.
-
-**Code Snippet**
-
-```java
-DrawingItem drawingItem = new TextDrawingItem(Text);
-```
-
-
-
-## getMediaType
-
-Get the media type of the `TextDrawingItem`.
-
-```java
-public EnumDrawingItemMeidaType getMediaType();
-```
-
-**Return Value**
-
-The media type of the `TextDrawingItem`.
-
-**Code Snippet**
-
-```java
-EnumDrawingItemMediaType mediaType = drawingItem.getMediaType();
-```
-
-
-
-## getText
-
-Get the `Text` of the `TextDrawingItem`.
-
-```java
-public String getText();
-```
-
-**Return Value**
-
-The text content of the `TextDrawingItem`.
-
-**Code Snippet**
-
-```java
-String text = drawingItem.getText();
-```
-
-
-
-## getTextRect
-
-Get the `Rect` of the `TextDrawingItem`. It indicates the location of the `TextDrawingItem`.
-
-```java
-public android.graphics.Rect getTextRect();
-```
-
-**Return Value**
-
-The Rect of the `TextDrawingItem`.
-
-**Code Snippet**
-
-```java
-android.graphics.Rect rect = drawingItem.getTextRect();
-```
-
-
-
-## getDrawingStyleId
-
-Get the ID of the `DrawingStyle` that is applied on this `DrawingItem`.
-
-```java
-public int getDrawingStyleId();
-```
-
-**Return Value**
-
-An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-int styleId = drawingItem.getDrawingStyleId();
-```
-
-
-
-## setDrawingStyleId
-
-Set a `DrawingStyle` by ID for the `DrawingItem`.
-
-```java
-public void setDrawingStyleId(int style);
-```
-
-**Parameters**
-
-`style`: An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-drawingItem.setDrawingStyleId(0);
-```
-
-
-
-## getState
-
-Get the status of the `DrawingItem`.
-
-```java
-public EnumDrawingItemState getState();
-```
-
-**Return Value**
-
-The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-EnumDrawingItemState state = drawingItem.getState();
-```
-
-
-
-## setState
-
-Set the status of the `DrawingItem`.
-
-```java
-public void setState(EnumDrawingItemState state);
-```
-
-**Parameters**
-
-`state`: The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-drawingItem.setState(EnumDrawingItemState.DIS_SELECTED)
-```
-
-
diff --git a/programming-old/android/auxiliary-api/drawingitem-v3.0.3.md b/programming-old/android/auxiliary-api/drawingitem-v3.0.3.md
deleted file mode 100644
index 1ecc5be5..00000000
--- a/programming-old/android/auxiliary-api/drawingitem-v3.0.3.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-layout: default-layout
-title: Android DrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DrawingItem Class
-permalink: /programming/android/auxiliary-api/drawingitem-v3.0.3.html
----
-
-# DrawingItem
-
-`DrawingItem` is the class for users to draw graphic items on the UI view.
-
-```java
-class com.dynamsoft.dce.DrawingItem
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`getDrawingStyleId`](#getdrawingstyleid) | Get the drawing style of the current drawing item. |
-| [`setDrawingStyleId`](#setdrawingstyleid) | Set the drawing style of the current drawing item. |
-| [`getState`](#getstate) | Get the state of the current drawing item. |
-| [`setState`](#setstate) | Set the state of the current drawing item. |
-| [`getMediaType`](#getmediatype) | Get the media type of the current drawing item. |
-
-
-
-## getDrawingStyleId
-
-Get the ID of the `DrawingStyle` that is applied on this `DrawingItem`.
-
-```java
-public int getDrawingStyleId();
-```
-
-**Return Value**
-
-An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-int styleId = drawingItem.getDrawingStyleId();
-```
-
-
-
-## setDrawingStyleId
-
-Set a `DrawingStyle` by ID for the `DrawingItem`.
-
-```java
-public void setDrawingStyleId(int style);
-```
-
-**Parameters**
-
-`style`: An int value that representing the style ID.
-
-**Code Snippet**
-
-```java
-drawingItem.setDrawingStyleId(0);
-```
-
-
-
-## getState
-
-Get the status of the `DrawingItem`.
-
-```java
-public EnumDrawingItemState getState();
-```
-
-**Return Value**
-
-The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-EnumDrawingItemState state = drawingItem.getState();
-```
-
-
-
-## setState
-
-Set the status of the `DrawingItem`.
-
-```java
-public void setState(EnumDrawingItemState state);
-```
-
-**Parameters**
-
-`state`: The value that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.android_camera_enhancer }}enum-drawing-item-state.html).
-
-**Code Snippet**
-
-```java
-drawingItem.setState(EnumDrawingItemState.DIS_SELECTED)
-```
-
-
-
-## getMediaType
-
-Get the media type of the `DrawingItem`.
-
-```java
-public abstract EnumDrawingItemMediaType getMediaType();
-```
-
-**Return Value**
-
-One of the `EnumDrawingItemMediaType` that indicates the media type of the `DrawingItem`.
-
-**Code Snippet**
-
-```java
-EnumDrawingItemMediaType type = drawingItem.getMediaType();
-```
diff --git a/programming-old/android/auxiliary-api/drawingstyle-v3.0.3.md b/programming-old/android/auxiliary-api/drawingstyle-v3.0.3.md
deleted file mode 100644
index 324a2030..00000000
--- a/programming-old/android/auxiliary-api/drawingstyle-v3.0.3.md
+++ /dev/null
@@ -1,180 +0,0 @@
----
-layout: default-layout
-title: Android DrawingStyle Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DrawingStyle Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DrawingStyle
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DrawingStyle Class
-permalink: /programming/android/auxiliary-api/drawingstyle-v3.0.3.html
----
-
-# DrawingStyle Class
-
-The class of DrawingStyle. It stores the detailed styles of the drawing item.
-
-```java
-class com.dynamsoft.dce.DrawingStyle
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`DrawingStyle`](#drawingstyle) | The constructor of the `DrawingStyle`. |
-| [`getId`](#getid) | Get the id of the drawing style. |
-| [`getStrokeColor`](#getstrokecolor) | Get the stroke color of the drawing style. |
-| [`setStrokeColor`](#setstrokecolor) | Set the stroke color of the drawing style. |
-| [`getFillColor`](#getfillcolor) | Get the fill color of the drawing style. |
-| [`setFillColor`](#setfillcolor) | Set the fill color of the drawing style. |
-| [`getTextColor`](#gettextcolor) | Get the text color of the drawing style. |
-| [`setTextColor`](#settextcolor) | Set the text color of the drawing style. |
-| [`getStrokeWidth`](#getstrokewidth) | Get the stroke width of the drawing style. |
-| [`setStrokeWidth`](#setstrokewidth) | Set the stroke width of the drawing style. |
-| [`getFontSize`](#getfontsize) | Get the font size of the drawing style. |
-| [`setFontSize`](#setfontsize) | Set the font size of the drawing style. |
-| [`getFontFamily`](#getfontfamily) | Get the font-Family of the drawing style. |
-| [`setFontFamily`](#setfontfamily) | Set the font-Family of the drawing style. |
-
-
-
-## DrawingStyle
-
-The constructor of the `DrawingStyle`.
-
-```java
-public DrawingStyle(int id, int strokeColor, float strokeWidth, int fillColor, int textColor, int fontSize, String fontFamily);
-```
-
-**Remarks**
-
-Please use [`DrawingStyleManager.createDrawingStyle`](drawingstylemanager.html#createdrawingstyle) to create the drawing style.
-
-
-
-## getId
-
-Get the id of the drawing style.
-
-```java
-public int getId();
-```
-
-
-
-## getStrokeColor
-
-Get the stroke color of the drawing style.
-
-```java
-public int getStrokeColor();
-```
-
-
-
-## setStrokeColor
-
-Set the stroke color of the drawing style.
-
-```java
-public void setStrokeColor(int color);
-```
-
-
-
-## getFillColor
-
-Get the fill color of the drawing style.
-
-```java
-public int getFillColor();
-```
-
-
-
-## setFillColor
-
-Set the fill color of the drawing style.
-
-```java
-public void setFillColor(int color);
-```
-
-
-
-## getTextColor
-
-Get the text color of the drawing style.
-
-```java
-public int getTextColor();
-```
-
-
-
-## setTextColor
-
-Set the text color of the drawing style.
-
-```java
-public void setTextColor(int color);
-```
-
-
-
-## getStrokeWidth
-
-Get the stroke width of the drawing style.
-
-```java
-public float getStrokeWidth();
-```
-
-
-
-## setStrokeWidth
-
-Set the stroke width of the drawing style.
-
-```java
-public void setStrokeWidth(float width);
-```
-
-
-
-## getFontSize
-
-Get the font size of the drawing style.
-
-```java
-public int getFontSize();
-```
-
-
-
-## setFontSize
-
-Set the font size of the drawing style.
-
-```java
-public void setFontSize(int size);
-```
-
-
-
-## getFontFamily
-
-Get the font-Family of the drawing style.
-
-```java
-public String getFontFamily();
-```
-
-
-
-## setFontFamily
-
-Set the font-Family of the drawing style.
-
-```java
-public void setFontFamily(String font);
-```
diff --git a/programming-old/android/auxiliary-api/drawingstylemanager-v3.0.3.md b/programming-old/android/auxiliary-api/drawingstylemanager-v3.0.3.md
deleted file mode 100644
index 9df31265..00000000
--- a/programming-old/android/auxiliary-api/drawingstylemanager-v3.0.3.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-layout: default-layout
-title: Android DrawingStyleManager Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android DrawingStyleManager Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, DrawingStyleManager
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android DrawingStyleManager Class
-permalink: /programming/android/auxiliary-api/drawingstylemanager-v3.0.3.html
----
-
-# DrawingStyleManager
-
-`DrawingStyleManager` is the class for users to create and adjust `DrawingStyles`.
-
-```java
-class com.dynamsoft.dce.DrawingStyleManager
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDrawingStyle`](#getdrawingstyle) | Get the `DrawingStyle` instance with the style ID. |
-| [`createDrawingStyle`](#createdrawingstyle) | Create a user-defined `DrawingStyle` and get the style ID. |
-
-## getDrawingStyle
-
-Get the `DrawingStyle` instance with the style ID.
-
-```java
-public static DrawingStyle getDrawingStyle(int styleId);
-```
-
-**Parameters**
-
-`styleId`: The ID of the target `DrawingStyle`.
-
-**Return Value**
-
-An instance of `DrawingStyle`.
-
-**Code Snippet**
-
-```java
-DrawingStyle defaultStyle = DrawingStyleManager.getDrawingStyle(DrawingStyleManager.STYLE_ORANGE_STROKE);
-```
-
-**Remarks**
-
-There are 8 preset drawing styles.
-
-| ID | Style Name |
-| -- | ---------- |
-| 1 | `STYLE_BLUE_STROKE` |
-| 2 | `STYLE_GREEN_STROKE` |
-| 3 | `STYLE_ORANGE_STROKE` |
-| 4 | `STYLE_YELLOW_STROKE` |
-| 5 | `STYLE_BLUE_STROKE_FILL` |
-| 6 | `STYLE_GREEN_STROKE_FILL` |
-| 7 | `STYLE_ORANGE_STROKE_FILL` |
-| 8 | `STYLE_YELLOW_STROKE_FILL` |
-
-
-
-## createDrawingStyle
-
-Create a user-defined `DrawingStyle` and get the style ID.
-
-```java
-public static int createDrawingStyle(int strokeColor, float strokeWidth, int fillColor, int textColor, int fontSize, String fontFamily);
-```
-
-**Parameters**
-
-`strokeColor`: The stroke colour.
-`strokeWidth`: The width of the stroke (measured by px).
-`fillColor`: The fill colour.
-`textColor`: The text colour.
-`fontSize`: The font size (measured by sp).
-`fontFamily`: The font family.
-
-**Code Snippet**
-
-```java
-int myStyleId = styleManager.createDrawingStyle(0xff00ff00,2,0xff00ff00,0xff00ff00,12,"sans-serif")
-```
diff --git a/programming-old/android/auxiliary-api/guide-of-drawing-items-v3.0.3.md b/programming-old/android/auxiliary-api/guide-of-drawing-items-v3.0.3.md
deleted file mode 100644
index 3d71cecd..00000000
--- a/programming-old/android/auxiliary-api/guide-of-drawing-items-v3.0.3.md
+++ /dev/null
@@ -1,136 +0,0 @@
----
-layout: default-layout
-title: Android UI Configuration - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/auxiliary-api/guide-of-drawing-items-v3.0.3.html
----
-
-# UI Configurations
-
-# UI Configurations Classes
-
-| Class | Description |
-| ----- | ----------- |
-| [`DCECameraView`](dcecameraview.html) | The view displays video streaming and auxiliary UI elements. |
-| [`DCEImageEditorView`](dceimageeditorview.html) | The view displays still image and auxiliary UI elements. |
-
-`DCECameraView` and `DCEImageEditorView` are the main classes for user to configure the UI. `DrawingItems` are the UI elements that user can create, modify and interact on the UI view. All the `DrawingItems` are contained in `DCEDrawingLayers` and finally displayed on the `DCECameraView` or `DCEImageEditorView`.
-
-
-
-
DrawingItems in DCECameraView and DCEImageEditorView
-
-
-## Basic Usages
-
-
-
-### Display Highlight Overlays
-
-When `DynamsoftCameraEnhancer(DCE)` is used together with other Dynamsoft products like `DynamsoftBarcodeReader(DBR)` and `DynamsoftDocumentNormalizer(DDN)`, it can automatically draw highlight overlays (`QuadDrawingItem`) on the detected barcodes or documents. If you want to disable this feature, you can use the following code to stop drawing the highlights.
-
-```java
-// Example: Remove all highlights on the barcodes
-editorView.getDrawingLayer(DCEDrawingLayer.DBR_LAYER_ID).setVisible(false);
-```
-
-
-
-### Style Configuration
-
-You can change the style of the `DrawingItems` specifying a `DrawingStyleId`. The `DrawingStyleId` can be a preset `DrawingStyle` or a user-defined `DrawingStyle`.
-
-To change the style of `DrawingItems` with preset `DrawingStyles`:
-
-```java
-// You can change the drawing style of all DrawingItems in the layer.
-cameraView.getDrawingLayer(DCEDrawingLayer.DBR_LAYER_ID).setDrawingStyleId(DrawingStyleManager.STYLE_ORANGE_STROKE);
-// You can also change the drawing style of a part of the DrawingItems.
-editorView.getDrawingLayer(DCEDrawingLayer.DBR_LAYER_ID).setDrawingStyleId(DrawingStyleManager.STYLE_ORANGE_STROKE, EnumDrawingItemState.DIS_SELECTED, EnumDrawingItemMediaType.DIMT_QUADRILATERAL);
-```
-
-List of all available preset styles:
-
-```java
-// DrawingItems on DDN layer are using this style as default.
-public static int STYLE_BLUE_STROKE = 1;
-// DrawingItems on DBR layer are using this style as default.
-public static int STYLE_GREEN_STROKE = 2;
-// DrawingItems on DLR layer are using this style as default.
-public static int STYLE_ORANGE_STROKE = 3;
-// DrawingItems on user defined layer are using this style as default.
-public static int STYLE_YELLOW_STROKE = 4;
-// DrawingItems on DDN layer are using this style as default if they are selected.
-public static int STYLE_BLUE_STROKE_FILL = 5;
-// DrawingItems on DBR layer are using this style as default if they are selected.
-public static int STYLE_GREEN_STROKE_FILL = 6;
-// DrawingItems on DLR layer are using this style as default if they are selected.
-public static int STYLE_ORANGE_STROKE_FILL = 7;
-// DrawingItems on user defined layer are using this style as default if they are selected.
-public static int STYLE_YELLOW_STROKE_FILL = 8;
-```
-
-
-
-
Preset DrawingStyles
-
-
-If you want to set other styles to your UI elements, you can add your personal defined `DrawingStyles`.
-
-```java
-// Create a new DrawingStyle via DrawingStyle manager and get the style ID of the new style.
-int myStyleId = DrawingStyleManager.createDrawingStyle(0xff00ff00,2,0xff00ff00,0xff00ff00,12,"sans-serif");
-// Assign the newly created style to the targeting DrawingItems.
-cameraView.getDrawingLayer(DCEDrawingLayer.DBR_LAYER_ID).setDrawingStyleId(myStyleId);
-```
-
-To modify the existing DrawingStyles:
-
-```java
-// Get the style by ID.
-DrawingStyle myStyle = DrawingStyleManager.getDrawingStyle(myStyleId);
-// Modify the style.
-myStyle.strokeColor = 0xff00ff00;
-```
-
-
-
-## Advanced Usages
-
-
-
-### Add User Defined UI Elements
-
-Apart from the system-defined items, you can add your personal defined UI elements via the `DrawingItem` APIs. On this page, we will draw a user-defined `quadrilateral` on the `DCEImageEditorView` for example.
-
-1. Create a new `QuadDrawingItem`.
-
- ```java
- // Create a new quadrilateral.
- com.dynamsoft.core.Quadrilateral newQuad = new Quadrilateral();
- // Add your code to assign the quad data.
- newQuad.points = new com.dynamsoft.core.Point[]{new Point(0,0),new Point(100,0), new Point(100,100), new Point(0,100)};
- // Use the newly created quadrilateral to initialize the DrawingItem.
- DrawingItem item = new QuadDrawingItem(newQuad);
- ```
-
-2. Add the Created `DrawingItems` to the view.
-
- ```java
- // To display the drawingItems on the UI, you have to put the DrawingItems in a ArrayList.
- ArrayList drawingItems = new ArrayList<>();
- drawingItems.add(item);
- // The following code shows how to add the ArrayList of DrawingItems to the first layer of the cameraView.
- // There are multiple layers in DCECameraView and DCEImageEditorView.
- // You must select a layer for your DrawingItems.
- cameraView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID).addDrawingItems(drawingItems);
- // To add the DrawingItems to the imageEditorView
- // imageEditorView.getDrawingLayer(DCEDrawingLayer.DDN_LAYER_ID).addDrawingItems(drawingItems);
- ```
-
-
diff --git a/programming-old/android/auxiliary-api/hardwareutil.md b/programming-old/android/auxiliary-api/hardwareutil.md
deleted file mode 100644
index fd3df273..00000000
--- a/programming-old/android/auxiliary-api/hardwareutil.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-layout: default-layout
-title: Android HardwareUtil Class - Dynamsoft Camera Enhancer
-description: This is the documentation - Android HardwareUtil Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android, HardwareUtil
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android HardwareUtil Class
-permalink: /programming/android/auxiliary-api/hardwareutil.html
----
-
-# HardwareUtil
-
-This page is for `HardwareUtil` page. `HardwareUtil` parameters are static values that illustrate device level.
-
-```java
-class com.dynamsoft.dce.HardwareUtil
-```
-
-| Attribute Name | Value |
-| -------------- | ----- |
-| `DEVICEINFO_UNKNOWN` | -1 |
-| `DEVICE_LEVEL_HIGH` | 2 |
-| `DEVICE_LEVEL_MID` | 1 |
-| `DEVICE_LEVEL_LOW` | 0 |
-| `DEVICE_LEVEL_UNKNOWN` | -2 |
-
-## Device level
-
-**Related API**
-
-[`getDeviceLevel`]({{ site.android-api }}camera.html#getdevicelevel)
-
-**Code Snippet**
-
-```java
-int level;
-level = mCamera.getDeviceLevel();
-if (level == HardwareUtil.DEVICE_LEVEL_LOW){
- mCamera.enableFrameFilter(true);
- mCamera.enableDCEAutoFocus(true);
-}
-```
-
diff --git a/programming-old/android/auxiliary-api/index-v3.0.3.md b/programming-old/android/auxiliary-api/index-v3.0.3.md
deleted file mode 100644
index a4b6a41e..00000000
--- a/programming-old/android/auxiliary-api/index-v3.0.3.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-layout: default-layout
-title: Android Camera Enhancer Library - Dynamsoft Camera Enhancer Documents
-description: This is the main page of Camera Enhancer API Reference for Android SDK.
-keywords: api reference, Android, camera enhancer
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-breadcrumbText: Android Camera Enhancer
-noTitleIndex: true
-permalink: /programming/android/auxiliary-api/index-v3.0.3.html
----
-
-# Camera Enhancer API Reference
-
-`DynamsoftCameraEnhancer` is the libary that provides camera control and UI configuration APIs.
-
-## Components
-
-**Main Class**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DynamsoftCameraEnhancer`](camera-enhancer.html) | The main class that includes camera control APIs. Features like frame filtering can be enabled via this class. |
-
-**UI Classes**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCECameraView`](dcecameraview.html) | UI view class that displays video streaming. UI configuration APIs are available for users to visualize the detected results on the video streaming. |
-| [`DCEImageEditorView`](dceimageeditorview.html) | UI view class that displays images. UI configuration APIs are available for users to highlight the detected results on the view with quadrilateral elements. The border of the quadrilaterals can be edited so that user can further accurate the detected results. |
-
-
-
-
DynamsoftCameraEnhancer UI View
-
-
-**Auxiliary Classes**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCEFrame`](dceframe.html) | The struct that `DynamsoftCameraEnhancer` stores the video frames. It contains the image data and other information of the video frame. |
-| [`DCEDrawingLayer`](dcedrawinglayer.html) | The layers that contains `DrawingItems`. Users can add configurations for the `DrawingItems` via `DCEDrawingLayer` |
-| [`DrawingItem`](drawingitem.html) | The`DrawingItems` are elements that can be added the UI. |
-| [`QuadDrawingItem`](drawingitem-quad.html) | A subclass of `DrawingItem`. Users can add `QuadDrawingItems` to the layer to display quadrilateral elements on the view. |
-| [`RectDrawingItem`](drawingitem-rect.html) | A subclass of `DrawingItem`. Users can add `RectDrawingItems` to the layer to display rectangle elements on the view. |
-| [`TextDrawingItem`](drawingitem-text.html) | A subclass of `DrawingItem`. Users can add `TextDrawingItems` to the layer to display text box on the view. |
-| [`DrawingStyle`](drawingstyle.html) | `DrawingStyle` stores colour, font and other detailed styles of `DrawingItems`. |
-| [`DrawingStyleManager`](drawingstylemanager.html) | The class for users to create and adjust `DrawingStyles`. |
-| [`CameraEnhancerException`](camera-enhancer-exception.html) | Exception for signaling camera enhancer errors. |
-
-**Interface**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCEFrameListener`](interface-dceframelistener.html) | The interface to handle callback when previewed frame callback is returned. |
-| [`DCECameraStateListener`](interface-dcecamerastatelistener.html) | The interface to handle callback when camera state changes. |
diff --git a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.11.md b/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.11.md
deleted file mode 100644
index 7abc3125..00000000
--- a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.11.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-layout: default-layout
-title: Interface DCECameraStateListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCECameraStateListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCECameraStateListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCECameraStateListener
-permalink: /programming/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.11.html
----
-
-# DCECameraStateListener
-
-The interface to handle callback when camera state changes.
-
-```java
-interface com.dynamsoft.dce.DCECameraStateListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`stateChangeCallback`](#statechangecallback) | The callback method is triggered when **camera state** changes. |
-
-## stateChangeCallback
-
-The callback method is triggered when **camera state** changes.
-
-```java
-void stateChangeCallback(EnumCameraState currentState);
-```
-
-**Parameters**
-
-`currentState`: The camera state. It includes `opened`, `opening`, `closed` and `closing`.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener() {
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes
- }
-});
-```
-
-**See also**
-
-- [`setCameraStateListener`](../camera-enhancer/camera-enhancer.html#setcamerastatelistener)
diff --git a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.12.md b/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.12.md
deleted file mode 100644
index d1b0da18..00000000
--- a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.12.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-layout: default-layout
-title: Interface DCECameraStateListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCECameraStateListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCECameraStateListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCECameraStateListener
-permalink: /programming/android/auxiliary-api/interface-dcecamerastatelistener-v2.3.12.html
----
-
-# DCECameraStateListener
-
-The interface to handle callback when camera state changes.
-
-```java
-interface com.dynamsoft.dce.DCECameraStateListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`stateChangeCallback`](#statechangecallback) | The callback method is triggered when **camera state** changes. |
-
-## stateChangeCallback
-
-The callback method is triggered when **camera state** changes.
-
-```java
-void stateChangeCallback(EnumCameraState currentState);
-```
-
-**Parameters**
-
-`currentState`: The camera state. It includes `opened`, `opening`, `closed` and `closing`.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener() {
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes
- }
-});
-```
-
-**See also**
-
-- [`setCameraStateListener`](../camera-enhancer/camera-enhancer.html#setcamerastatelistener)
diff --git a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v3.0.3.md b/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v3.0.3.md
deleted file mode 100644
index c12a7cc4..00000000
--- a/programming-old/android/auxiliary-api/interface-dcecamerastatelistener-v3.0.3.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-layout: default-layout
-title: Interface DCECameraStateListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCECameraStateListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCECameraStateListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCECameraStateListener
-permalink: /programming/android/auxiliary-api/interface-dcecamerastatelistener-v3.0.3.html
----
-
-# DCECameraStateListener
-
-The interface to handle callback when camera state changes.
-
-```java
-interface com.dynamsoft.dce.DCECameraStateListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`stateChangeCallback`](#statechangecallback) | The callback method is triggered when **camera state** changes. |
-
-## stateChangeCallback
-
-The callback method is triggered when **camera state** changes.
-
-```java
-void stateChangeCallback(EnumCameraState currentState);
-```
-
-**Parameters**
-
-`currentState`: The camera state. It includes `opened`, `opening`, `closed` and `closing`.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener() {
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes
- }
-});
-```
-
-**See also**
-
-- [`setCameraStateListener`](../camera-enhancer/camera-enhancer.html#setcamerastatelistener)
diff --git a/programming-old/android/auxiliary-api/interface-dceframelistener-v1.0.3.md b/programming-old/android/auxiliary-api/interface-dceframelistener-v1.0.3.md
deleted file mode 100644
index 95325854..00000000
--- a/programming-old/android/auxiliary-api/interface-dceframelistener-v1.0.3.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-layout: default-layout
-title: Android CameraListener - Dynamsoft Camera Enhancer
-description: This is the documentation - CameraListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, CameraListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: CameraListener
-permalink: /programming/android/auxiliary-api/interface-dceframelistener-v1.0.3.html
----
-
-# CameraListener
-
-The interface to handle callback when previewed frame callback is returned.
-
-```java
-interface com.dynamsoft.dce.CameraListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`onPreviewOriginalFrame`](#onprevieworiginalframe) | The callback function where you can add code to use the previewed **original** frames. |
-| [`onPreviewFilterFrame`](#onpreviewfilterframe) | The callback function where you can add code to use the previewed **filtered** frames. |
-| [`onPreviewFastFrame`](#onpreviewfastframe) | The callback function where you can add code to use the previewed **cropped** frames. |
-
-
-
-## onPreviewOriginalFrame
-
-The callback function where you can add code to use the previewed **original** frames.
-
-```java
-void onPreviewOriginalFrame(Frame originalFrame);
-```
-
-**Parameters**
-
-`originalFrame`: The data of original frame(s). The Camera Enhancer can make preprocessing on video frames. In this callback function, the input parameters are the original frames that are captured by the camera.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addCameraListener(new CameraListener() {
- @Override
- public void onPreviewOriginalFrame(Frame originalFrame) {
- // Add your code
- }
- @Override
- public void onPreviewFilterFrame(Frame filteredFrame) {}
- @Override
- public void onPreviewFastFrame(Frame fastFrame) {}
-});
-```
-
-**See also**
-
-- [`class Frame`]({{site.android-api-auxiliary}}dceframe.html)
-
-
-
-
-## onPreviewFilterFrame
-
-The callback function where you can add code to use the previewed **filtered** frames.
-
-```java
-void onPreviewFilterFrame(Frame filteredFrame);
-```
-
-**Parameters**
-
-`filteredFrame`: The data of filtered frame(s). The Camera Enhancer can make preprocessing on video frames. If the frame filter processing is enabled, the input parameter of this function will be the filtered frames.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addCameraListener(new CameraListener() {
- @Override
- public void onPreviewOriginalFrame(Frame originalFrame) {}
- @Override
- public void onPreviewFilterFrame(Frame filteredFrame) {
- // Add your code
- }
- @Override
- public void onPreviewFastFrame(Frame fastFrame) {}
-});
-```
-
-**See also**
-
-- [`class Frame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`enableFrameFilter`]({{site.android-api}}preprocess.html#enableframefilter)
-
-
-
-## onPreviewFastFrame
-
-The callback function where you can add code to use the previewed **cropped** frames.
-
-```java
-void onPreviewFastFrame(Frame fastFrame);
-```
-
-**Parameters**
-
-`fastFrame`: The data of cropped frame(s). The Camera Enhancer can make preprocessing on video frames. If the fast mode is enabled, the input parameter of this function will be the specially cropped frames.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addCameraListener(new CameraListener() {
- @Override
- public void onPreviewOriginalFrame(Frame originalFrame) {}
- @Override
- public void onPreviewFilterFrame(Frame filteredFrame) {}
- @Override
- public void onPreviewFastFrame(Frame fastFrame) {
- // Add your code
- }
-});
-```
-
-**See also**
-
-- [`class Frame`]({{site.android-api-auxiliary}}dceframe.html)
-- [`enableFastMode`]({{site.android-api}}preprocess.html#enablefastmode)
diff --git a/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.11.md b/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.11.md
deleted file mode 100644
index a714b519..00000000
--- a/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.11.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrameListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEFrameListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEFrameListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEFrameListener
-permalink: /programming/android/auxiliary-api/interface-dceframelistener-v2.3.11.html
----
-
-# DCEFrameListener
-
-The interface to handle callback when previewed frame callback is returned.
-
-```java
-interface com.dynamsoft.dce.DCEFrameListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`frameOutputCallback`](#frameoutputcallback) | The callback method for user to implement when frame is output. |
-
-## frameOutputCallback
-
-The callback method can be triggered when `frame` is output.
-
-```java
-void frameOutputCallback(DCEFrame frame, long timeStamp);
-```
-
-**Parameters**
-
-`frame`: The `DCEFrame` object that contains the image data and further information.
-`timeStamp`: The `timeStamp` that records when the `frame` is output.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- // Add your code
- }
-});
-```
-
-**See also**
-
-- [`class DCEFrame`](dceframe.html)
diff --git a/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.12.md b/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.12.md
deleted file mode 100644
index 00754bb9..00000000
--- a/programming-old/android/auxiliary-api/interface-dceframelistener-v2.3.12.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrameListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEFrameListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEFrameListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEFrameListener
-permalink: /programming/android/auxiliary-api/interface-dceframelistener-v2.3.12.html
----
-
-# DCEFrameListener
-
-The interface to handle callback when previewed frame callback is returned.
-
-```java
-interface com.dynamsoft.dce.DCEFrameListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`frameOutputCallback`](#frameoutputcallback) | The callback method for user to implement when frame is output. |
-
-## frameOutputCallback
-
-The callback method can be triggered when `frame` is output.
-
-```java
-void frameOutputCallback(DCEFrame frame, long timeStamp);
-```
-
-**Parameters**
-
-`frame`: The `DCEFrame` object that contains the image data and further information.
-`timeStamp`: The `timeStamp` that records when the `frame` is output.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- // Add your code
- }
-});
-```
-
-**See also**
-
-- [`class DCEFrame`](dceframe.html)
diff --git a/programming-old/android/auxiliary-api/interface-dceframelistener-v3.0.3.md b/programming-old/android/auxiliary-api/interface-dceframelistener-v3.0.3.md
deleted file mode 100644
index bfa3d245..00000000
--- a/programming-old/android/auxiliary-api/interface-dceframelistener-v3.0.3.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCEFrameListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEFrameListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEFrameListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEFrameListener
-permalink: /programming/android/auxiliary-api/interface-dceframelistener-v3.0.3.html
----
-
-# DCEFrameListener
-
-The interface to handle callback when previewed frame callback is returned.
-
-```java
-interface com.dynamsoft.dce.DCEFrameListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`frameOutputCallback`](#frameoutputcallback) | The callback method for user to implement when frame is output. |
-
-## frameOutputCallback
-
-The callback method can be triggered when `frame` is output.
-
-```java
-void frameOutputCallback(DCEFrame frame, long timeStamp);
-```
-
-**Parameters**
-
-`frame`: The `DCEFrame` object that contains the image data and further information.
-`timeStamp`: The `timeStamp` that records when the `frame` is output.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- // Add your code
- }
-});
-```
-
-**See also**
-
-- [`class DCEFrame`](dceframe.html)
diff --git a/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.11.md b/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.11.md
deleted file mode 100644
index 942dcd3b..00000000
--- a/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.11.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: default-layout
-title: Android DCEPhotoListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEPhotoListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEPhotoListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEPhotoListener
-permalink: /programming/android/auxiliary-api/interface-dcephotolistener-v2.3.11.html
----
-
-# DCEPhotoListener
-
-The interface that provide method for capturing photo from the camera.
-
-```java
-interface com.dynamsoft.dce.DCEPhotoListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`photoOutputCallback`](#photooutputcallback) | The callback method for user to receive the captured photo. |
-
-## photoOutputCallback
-
-The callback method for user to receive the captured photo. User can complete the method by adding code to execute with the capture image.
-
-```java
-photoOutputCallback(byte[] bytes)
-```
-
-**Parameters**
-
-`bytes`: The byte data of the captured image.
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- try {
- BarcodeReader mReader = new BarcodeReader();
- mReader.decodeFileInMemory(bytes);
- } catch (BarcodeReaderException e) {
- e.printStackTrace();
- }
- }
-};
-// Since you have configured the photoOutputCallback.
-// When you trigger takePhote method, the library firstly capture a photo
-// When the photo is captured and stored in memory, it will be processed by DBR
-mCameraEnhancer.takePhoto(photoListener);
-```
diff --git a/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.12.md b/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.12.md
deleted file mode 100644
index d53e1847..00000000
--- a/programming-old/android/auxiliary-api/interface-dcephotolistener-v2.3.12.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: default-layout
-title: Android DCEPhotoListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEPhotoListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEPhotoListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEPhotoListener
-permalink: /programming/android/auxiliary-api/interface-dcephotolistener-v2.3.12.html
----
-
-# DCEPhotoListener
-
-The interface that provide method for capturing photo from the camera.
-
-```java
-interface com.dynamsoft.dce.DCEPhotoListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`photoOutputCallback`](#photooutputcallback) | The callback method for user to receive the captured photo. |
-
-## photoOutputCallback
-
-The callback method for user to receive the captured photo. User can complete the method by adding code to execute with the capture image.
-
-```java
-photoOutputCallback(byte[] bytes)
-```
-
-**Parameters**
-
-`bytes`: The byte data of the captured image.
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- try {
- BarcodeReader mReader = new BarcodeReader();
- mReader.decodeFileInMemory(bytes);
- } catch (BarcodeReaderException e) {
- e.printStackTrace();
- }
- }
-};
-// Since you have configured the photoOutputCallback.
-// When you trigger takePhote method, the library firstly capture a photo
-// When the photo is captured and stored in memory, it will be processed by DBR
-mCameraEnhancer.takePhoto(photoListener);
-```
diff --git a/programming-old/android/auxiliary-api/interface-dcephotolistener-v3.0.3.md b/programming-old/android/auxiliary-api/interface-dcephotolistener-v3.0.3.md
deleted file mode 100644
index 6d45865b..00000000
--- a/programming-old/android/auxiliary-api/interface-dcephotolistener-v3.0.3.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: default-layout
-title: Android DCEPhotoListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - DCEPhotoListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCEPhotoListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCEPhotoListener
-permalink: /programming/android/auxiliary-api/interface-dcephotolistener-v3.0.3.html
----
-
-# DCEPhotoListener
-
-The interface that provide method for capturing photo from the camera.
-
-```java
-interface com.dynamsoft.dce.DCEPhotoListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`photoOutputCallback`](#photooutputcallback) | The callback method for user to receive the captured photo. |
-
-## photoOutputCallback
-
-The callback method for user to receive the captured photo. User can complete the method by adding code to execute with the capture image.
-
-```java
-photoOutputCallback(byte[] bytes)
-```
-
-**Parameters**
-
-`bytes`: The byte data of the captured image.
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- try {
- BarcodeReader mReader = new BarcodeReader();
- mReader.decodeFileInMemory(bytes);
- } catch (BarcodeReaderException e) {
- e.printStackTrace();
- }
- }
-};
-// Since you have configured the photoOutputCallback.
-// When you trigger takePhote method, the library firstly capture a photo
-// When the photo is captured and stored in memory, it will be processed by DBR
-mCameraEnhancer.takePhoto(photoListener);
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.1.md b/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.1.md
deleted file mode 100644
index 61591663..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.1.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-layout: default-layout
-title: Android CameraLTSLicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - CameraLTSLicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, CameraLTSLicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: CameraLTSLicenseVerificationListener
-permalink: /programming/android/auxiliary-api/interface-licenselistener-v1.0.1.html
----
-
-
-# CameraLTSLicenseVerificationListener
-
-The interface to handle callback when license verification messages are returned.
-
-```java
-interface com.dynamsoft.dce.CameraLTSLicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| `LTSLicenseVerificationCallback` | The call back of the license server. |
-
-## LTSLicenseVerificationCallback
-
-The call back of the license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```java
-void LTSLicenseVerificationCallback(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`isSuccess`: Whether the license verification was successful.
-`error`: The error message from the license server.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.initLicenseFromLTS(dceParameters, new CameraLTSLicenseVerificationListener() {
- @Override
- public void LTSLicenseVerificationCallback(boolean isSuccess, Exception e) {
- if (!isSuccess) {
- e.printStackTrace();
- }
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.3.md b/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.3.md
deleted file mode 100644
index 618103d3..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener-v1.0.3.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-layout: default-layout
-title: Android CameraDLSLicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - CameraDLSLicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, CameraDLSLicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: CameraDLSLicenseVerificationListener
-permalink: /programming/android/auxiliary-api/interface-licenselistener-v1.0.3.html
----
-
-# CameraDLSLicenseVerificationListener
-
-The interface to handle callback when license verification messages are returned.
-
-```java
-interface com.dynamsoft.dce.CameraDLSLicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| `DLSLicenseVerificationCallback` | The call back of the license server. |
-
-## DLSLicenseVerificationCallback
-
-The call back of the license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```java
-void DLSLicenseVerificationCallback(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`isSuccess`: Whether the license verification was successful.
-`error`: The error message from the license server.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.initLicenseFromDLS(dceParameters, new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception e) {
- if (!isSuccess) {
- e.printStackTrace();
- }
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.11.md b/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.11.md
deleted file mode 100644
index fa2231ec..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.11.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCELicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCELicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCELicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCELicenseVerificationListener
-permalink: /programming/android/auxiliary-api/interface-licenselistener-v2.3.11.html
----
-
-# DCELicenseVerificationListener
-
-The interface to handle callback when license verification messages are returned.
-
-```java
-interface com.dynamsoft.dce.DCELicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| `DCELicenseVerificationCallback` | The call back of the license server. |
-
-
-
-## DCELicenseVerificationCallback
-
-The call back of the license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```java
-void DCELicenseVerificationCallback(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`isSuccess`: Whether the license verification was successful.
-`error`: The error message from the license server.
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception e) {
- if (!isSuccess) {
- e.printStackTrace();
- }
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.12.md b/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.12.md
deleted file mode 100644
index 958b6bd0..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener-v2.3.12.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCELicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCELicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCELicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCELicenseVerificationListener
-permalink: /programming/android/auxiliary-api/interface-licenselistener-v2.3.12.html
----
-
-# DCELicenseVerificationListener
-
-The interface to handle callback when license verification messages are returned.
-
-```java
-interface com.dynamsoft.dce.DCELicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| `DCELicenseVerificationCallback` | The call back of the license server. |
-
-
-
-## DCELicenseVerificationCallback
-
-The call back of the license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```java
-void DCELicenseVerificationCallback(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`isSuccess`: Whether the license verification was successful.
-`error`: The error message from the license server.
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception e) {
- if (!isSuccess) {
- e.printStackTrace();
- }
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener-v3.0.3.md b/programming-old/android/auxiliary-api/interface-licenselistener-v3.0.3.md
deleted file mode 100644
index a1616203..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener-v3.0.3.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Android DCELicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - DCELicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, DCELicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: DCELicenseVerificationListener
-permalink: /programming/android/auxiliary-api/interface-licenselistener-v3.0.3.html
----
-
-# DCELicenseVerificationListener
-
-The interface to handle callback when license verification messages are returned.
-
-```java
-interface com.dynamsoft.dce.DCELicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| `DCELicenseVerificationCallback` | The call back of the license server. |
-
-
-
-## DCELicenseVerificationCallback
-
-The call back of the license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```java
-void DCELicenseVerificationCallback(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`isSuccess`: Whether the license verification was successful.
-`error`: The error message from the license server.
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception e) {
- if (!isSuccess) {
- e.printStackTrace();
- }
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/interface-licenselistener.md b/programming-old/android/auxiliary-api/interface-licenselistener.md
deleted file mode 100644
index ae46a1a6..00000000
--- a/programming-old/android/auxiliary-api/interface-licenselistener.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: default-layout
-title: LicenseVerificationListener - Dynamsoft Camera Enhancer Android Edition API Reference
-description: The interface LicenseVerificationListener of Dynamsoft Camera Enhancer includes methods for monitoring the license verification status.
-keywords: license verification, Java, Kotlin
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# LicenseVerificationListener
-
-The `LicenseVerificationListener` is a interface that includes methods for monitoring the license verification status.
-
-## Definition
-
-*Namespace:* com.dynamsoft.license
-
-*Assembly:* DynamsoftLicense.aar
-
-```java
-interface LicenseVerificationListener
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`onLicenseVerified`](#onlicenseverified) | The method that is triggered when the license server returns the verification info. |
-
-### onLicenseVerified
-
-The method that is triggered when the license server returns the verification info.
-
-```java
-void onLicenseVerified(boolean isSuccess, Exception error);
-```
-
-**Parameters**
-
-`[in] isSuccess`: A Boolean value indicating whether the license is verified successfully.
-
-`[in] error`: An exception object. It carries the error code and message that describe the reason why your license activation failed.
diff --git a/programming-old/android/auxiliary-api/interface-torchlistener.md b/programming-old/android/auxiliary-api/interface-torchlistener.md
deleted file mode 100644
index af467c5b..00000000
--- a/programming-old/android/auxiliary-api/interface-torchlistener.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-layout: default-layout
-title: Android TorchListener - Dynamsoft Camera Enhancer
-description: This is the documentation - TorchListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, TorchListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: TorchListener
-permalink: /programming/android/auxiliary-api/interface-torchlistener.html
----
-
-# TorchListener
-
-The interface to handle callback when torch state callback is returned.
-
-```java
-interface com.dynamsoft.dce.TorchListener
-```
-
-| Methods | Description |
-| --------- | ----------- |
-| [`onTorchStateChanged`](#onTorchStateChanged) | The method for user to add code when torch state is changed. |
-
-## onTorchStateChanged
-
-The method for user to add code when torch state is changed.
-
-```java
-void onTorchStateChanged(TorchState state);
-```
-
-**Parameters**
-
-`state`: The torch status value. One of the parameters in [`TorchState`]({{site.parameter-reference}}index.html#torchstate)
-
-**Code Snippet**
-
-```java
-cameraEnhancer.addTorchListener(new TorchListener() {
- @Override
- public void onTorchStateChanged(TorchState torchState) {
- // Add your code
- }
-});
-```
diff --git a/programming-old/android/auxiliary-api/region-definition-v2.3.11.md b/programming-old/android/auxiliary-api/region-definition-v2.3.11.md
deleted file mode 100644
index 3c6d92bd..00000000
--- a/programming-old/android/auxiliary-api/region-definition-v2.3.11.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-layout: default-layout
-title: Android RegionDefinition Class - Dynamsoft Camera Enhancer Documents
-description: This page shows the RegionDefinition Class of Dynamsoft Camera Enhancer for Android SDK.
-keywords: RegionDefinition, class, api reference, android
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/auxiliary-api/region-definition-v2.3.11.html
----
-
-# RegionDefinition
-
-Stores the region information.
-
-```java
-class com.dynamsoft.core.RegionDefinition;
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *int* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *int* | The left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *int* | The right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *int* | The bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *int* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-```java
-int regionTop
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-```java
-int regionLeft
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-```java
-int regionRight
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-```java
-int regionBottom
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-```java
-int regionMeasuredByPercentage
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/android/auxiliary-api/region-definition-v2.3.12.md b/programming-old/android/auxiliary-api/region-definition-v2.3.12.md
deleted file mode 100644
index 977de7eb..00000000
--- a/programming-old/android/auxiliary-api/region-definition-v2.3.12.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-layout: default-layout
-title: Android RegionDefinition Class - Dynamsoft Camera Enhancer Documents
-description: This page shows the RegionDefinition Class of Dynamsoft Camera Enhancer for Android SDK.
-keywords: RegionDefinition, class, api reference, android
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/auxiliary-api/region-definition-v2.3.12.html
----
-
-# RegionDefinition
-
-Stores the region information.
-
-```java
-class com.dynamsoft.core.RegionDefinition;
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *int* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *int* | The left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *int* | The right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *int* | The bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *int* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-```java
-int regionTop
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-```java
-int regionLeft
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-```java
-int regionRight
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-```java
-int regionBottom
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-```java
-int regionMeasuredByPercentage
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/android/auxiliary-api/region-definition-v3.0.3.md b/programming-old/android/auxiliary-api/region-definition-v3.0.3.md
deleted file mode 100644
index e62c6f25..00000000
--- a/programming-old/android/auxiliary-api/region-definition-v3.0.3.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-layout: default-layout
-title: Android RegionDefinition Class - Dynamsoft Camera Enhancer Documents
-description: This page shows the RegionDefinition Class of Dynamsoft Camera Enhancer for Android SDK.
-keywords: RegionDefinition, class, api reference, android
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/auxiliary-api/region-definition-v3.0.3.html
----
-
-# RegionDefinition
-
-Stores the region information.
-
-```java
-class com.dynamsoft.core.RegionDefinition;
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *int* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *int* | The left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *int* | The right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *int* | The bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *int* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-```java
-int regionTop
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-```java
-int regionLeft
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-```java
-int regionRight
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-```java
-int regionBottom
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-```java
-int regionMeasuredByPercentage
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/android/auxiliary-api/region-definition.md b/programming-old/android/auxiliary-api/region-definition.md
deleted file mode 100644
index 65fddae5..00000000
--- a/programming-old/android/auxiliary-api/region-definition.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-layout: default-layout
-title: Android RegionDefinition Class - Dynamsoft Camera Enhancer Android API Reference
-description: This page shows the RegionDefinition Class of Dynamsoft Camera Enhancer for Android SDK.
-keywords: RegionDefinition, class, api reference, android
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-permalink: /programming/android/auxiliary-api/region-definition.html
----
-
-# RegionDefinition
-
-Stores the region information.
-
-```java
-class com.dynamsoft.dce.RegionDefinition;
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *int* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *int* | The left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *int* | The right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *int* | The bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *int* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-```java
-int regionTop
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-```java
-int regionLeft
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-```java
-int regionRight
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-```java
-int regionBottom
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-```java
-int regionMeasuredByPercentage
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/android/guide/basic-settings.md b/programming-old/android/guide/basic-settings.md
deleted file mode 100644
index eefa2105..00000000
--- a/programming-old/android/guide/basic-settings.md
+++ /dev/null
@@ -1,73 +0,0 @@
----
-layout: default-layout
-title: Customize Camera Settings on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Customize Camera Settings on Android.
-keywords: Camera Enhancer, Customize Camera Settings
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Customize Camera Settings
-permalink: /programming/android/guide/basic-settings.html
----
-
-# Customize the Basic Settings
-
-There are three classes available in Dynamsoft Camera Enhancer SDK.
-
-| Class | Description |
-| ----- | ----------- |
-| `CameraEnhancer` | The class includes basic hardware control and video streaming control APIs. |
-| `DCECameraView` | The class includes UI |
-| `DCEFrame` | |
-
-## Camera Control
-
-### Basic Camera Settings
-
-When using Dynamsoft Camera Enhancer (DCE), the first back-forward camera is selected as the default camera. You can switch the cameras and control the status of the cameras via camera control APIs that are available in `CameraEnhancer` class.
-
-Use the following methods to switch cameras:
-
-- `getAllCameras`
-- `selectCamera`
-- `getSelectCamera`
-
-Use the following methods to control the camera status:
-
-- `open`/`close`/`pause`/`resume`
-
-### Additional Camera Settings
-
-Specifying the scan region will help you improve processing efficiency. You can specify the scan region and display it on the UI via the following methods:
-
-- `setScanRegion`
-- `setScanRegionVisible`
-
-The resolution, focus, zoom factor and torchlight settings are also available when using DCE.
-
-- `setResolution`/`getResolution`
-- `setZoom`
-- `setFocus`
-- `turnOnTorch`/`turnOffTorch`
-
-**Sample Code**
-
-```java
-```
-
-## UI Configurations
-
-Common UI elements are preset in DCECameraView classes. These UI elements facilitate you when working with Dynamsoft products.
-
-### Add Highlighted Overlays
-
-If DCE is bound with Dynamsoft Barcode Reader, highlight **overlays** can be created automatically on the decoded barcode results based on the localization areas. You can configure the **overlay** settings via the following methods.
-
-- `setOverlayVisible`
-- `setOverlayColour`
-
-### Torch Button
-
-You can simply control the torchlight via the methods `turnOnTorch`/`turnOffTorch` or enable an interactive torch light control via the **torchButton** UI element. Methods are available for users to set the position, size, image and visibility of the **torchButton**. Once the **torchButton** is displayed on the UI, users can click on the **torchButton** to switch on/off the torchlight.
-
-- `setTorchButton`
-- `setTorchButtonVisible`
diff --git a/programming-old/android/guide/features-v3.0.3.md b/programming-old/android/guide/features-v3.0.3.md
deleted file mode 100644
index 16221a20..00000000
--- a/programming-old/android/guide/features-v3.0.3.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-layout: default-layout
-title: Advanced Features on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Enable Advanced Features on Android.
-keywords: Camera Enhancer, Advanced Features on Android
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: Advanced Features
-permalink: /programming/android/guide/features-v3.0.3.html
----
-
-# Advanced Features
-
-On this page, you will read about how to use advanced features of Dynamsoft Camera Enhancer and how they help you on obtaining higher quality video streaming. A valid license is required when using the advanced features.
-
-## Advanced Features Summary
-
-All the advanced feaatures are defined in enumeration `EnumEnhancerFeatures`. Currently, they are available as follow:
-
-| Feature | Enumeration Member | Value |
-| ------- | ------ | ----- |
-| [Frame Filter](#frame-filter) | `EnumFRAME_FILTER` | 0x01 |
-| [Sensor Control](#sensor-control) | `EnumSENSOR_CONTROL` | 0x02 |
-| [Enhanced Focus](#enhanced-focus) | `EnumENHANCED_FOCUS` | 0x04 |
-| [Fast Mode](#fast-mode) | `EnumFAST_MODE` | 0x08 |
-| [Auto Zoom](#auto-zoom) | `EnumAUTO_ZOOM` | 0x10 |
-| [Smart Torch](#smart-torch) | `EnumSMART_TORCH` | 0x20 |
-
-## How to Use
-
-- Enable: Trigger method `enableFeatures` with the enumeration members of the features that you want to enable.
-- Disable: Trigger method `disableFeatures` with the enumeration members of the features that you want to disable.
-
-Sample code:
-
-```java
-// To enable features
-mCameraEnhancer.enableFeatures(EnumEnhancerFeatures.EF_FRAME_FILTER | EnumEnhancerFeatures.EF_AUTO_ZOOM);
-// To disable features
-mCameraEnhancer.disableFeatures(EnumEnhancerFeatures.EF_FRAME_FILTER | EnumEnhancerFeatures.EF_AUTO_ZOOM);
-```
-
-- You can enable or disable multiple features at one time.
-- When an enabled feature is enabled again, it remains enabled.
-- When a feature is disabled more than once, it remains disabled.
-
-## Advanced Features Details
-
-### Frame Filter
-
-All the frames in the video streaming are quickly evaluated and the majority of the blurry frames will be filtered out. You can enable this feature when your mobile device is always moving. The average time consumption on evaluating each video frame is less than 10ms.
-
-### Sensor Control
-
-The mobile sensor can help on filtering out all the frames that are produced when the device is shaking. It will get better effects when enabled together with **Frame Filter**.
-
-### Enhanced Focus
-
-This feature can assist the camera in its focus. It is recommended to be enabled on low-end devices.
-
-### Fast Mode
-
-The video frames are cropped into small sizes when the **Fast Mode** is enabled. The feature will sharply improve the processing efficiency When the targeting areas are always located in the middle of the video. The average time consumption on cropping each frame is less than 10ms.
-
-### Auto Zoom
-
-**Auto Zoom** feature is specially designed for decoding barcodes from long distances. The camera will zoom in automatically to enlarge the region of interest when a barcode is detected far away. The **Auto Zoom** feature might not work ideally when processing the documents or the text areas. Please disable this feature if the targets are not barcodes.
-
-### Smart Torch
-
-**Smart Torch** feature controls the visibility of the torch button created by `setTorchButton` method. The torch button will be displayed automatically when the environment light level is low. Otherwise, the torch button is hidden. The feature doesn't control the status of the mobile torch. Users have to click on the torch button to turn on the torch.
diff --git a/programming-old/android/guide/guide-v1.0.1.md b/programming-old/android/guide/guide-v1.0.1.md
deleted file mode 100644
index b9b3d594..00000000
--- a/programming-old/android/guide/guide-v1.0.1.md
+++ /dev/null
@@ -1,498 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v1.0.1.html
----
-
-# User Guide on Android (Java & Kotlin)
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-## Installation
-
-1. Download Dynamsoft Camera Enhancer to get `dce-android-{version-number}.zip`. Unzip the package to find `DynamsoftCameraEnhancerAndroid.aar`.
-
-2. Create a new Android project in Android Studio.
-
-3. Put the `.aar` file under the dictionary `/app/libs` in your project.
-
-4. Add the following code into `build.gradle(Module: app)`.
-
- ```groovy
- repositories {
- flatDir {
- dirs 'libs'
- }
- }
- ```
-
-5. Also in `build.gradle(Module: app)` add the reference in dependencies:
-
- ```groovy
- implementation(name: 'DynamsoftCameraEnhancerAndroid', ext: 'aar')
- ```
-
-6. Sync the project with Gradle, then, `DynamsoftCameraEnhancerAndroid.aar` is added to your project.
-
-## Create a Camera Module
-
-This section is a guide on using Dynamsoft Camera Enhancer to create a simple camera app after installation.
-
-1. Keep working on the project that you have installed DCE. In the project, create a CameraView section in activity_main.xml.
-
- ```xml
-
- ```
-
-2. Set up for your camera in the `cameraView` section. Please add the following code in your activity for the camera. The following code is an example of setting camera view in `MainActivity`
-
- Java:
-
- ```java
- import com.dynamsoft.dce.CameraEnhancer;
- import com.dynamsoft.dce.CameraState;
- import com.dynamsoft.dce.CameraView;
- public class MainActivity extends AppCompatActivity {
- CameraEnhancer mCameraEnhancer;
- CameraView cameraView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- //Initialize your license
- com.dynamsoft.dce.DMLTSConnectionParameters info = new com.dynamsoft.dce.DMLTSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromLTS(info,new CameraLTSLicenseVerificationListener() {
- @Override
- public void LTSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
- });
- //Turn on the camera
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- //Start scanning
- mCameraEnhancer.startScanning();
- }
- }
- ```
-
- Kotlin:
-
- ```kotlin
- import com.dynamsoft.dce.CameraEnhancer
- import com.dynamsoft.dce.CameraState
- import com.dynamsoft.dce.CameraView
-
- class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from License Tracking Server
- val info = com.dynamsoft.dce.DMLTSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromLTS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
- }
- }
- ```
-
-3. Run the project. Now your camera module is running. If you have any questions about the program, you can view the `samples` we provided in the package you download to get a better understanding of how it works. Also, you can get help from our online customer service.
-
-## Extend the camera module with DCE functions
-
-This is a template for users to add DCE camera settings into the newly built camera module.
-
-Java:
-
-```java
-import com.dynamsoft.dce.CameraEnhancer;
-import com.dynamsoft.dce.CameraState;
-import com.dynamsoft.dce.CameraView;
-public class MainActivity extends AppCompatActivity {
- CameraEnhancer mCameraEnhancer;
- CameraView cameraView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- com.dynamsoft.dce.DMLTSConnectionParameters info = new com.dynamsoft.dce.DMLTSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromLTS(info,new CameraLTSLicenseVerificationListener() {
- @Override
- public void LTSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
- });
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- mCameraEnhancer.startScanning();
- //**************The Following parts are newly added*******************
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- int level = mCameraEnhancer.getDeviceLevel();
- boolean frame_filter = true;
- boolean auto_focus = true;
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false;
- auto_focus = false;
- }else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false;
- }
- mCameraEnhancer.enableDCEAutoFocus(auto_focus);
- mCameraEnhancer.enableFrameFilter(frame_filter);
- //Enable sensor control & fast mode
- mCameraEnhancer.enableSensorControl(true);
- mCameraEnhancer.enableFastMode(true);
- }
-}
-```
-
-Kotlin:
-
-```kotlin
-import com.dynamsoft.dce.CameraEnhancer
-import com.dynamsoft.dce.CameraState
-import com.dynamsoft.dce.CameraView
-
-class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from License Tracking Server
- val info = com.dynamsoft.dce.DMLTSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromLTS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
- //**************The Following parts are newly added*******************
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- val level = mCameraEnhancer!!.deviceLevel
- var frame_filter = true
- var auto_focus = true
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false
- auto_focus = false
- } else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false
- }
- mCameraEnhancer!!.enableDCEAutoFocus(auto_focus)
- mCameraEnhancer!!.enableFrameFilter(frame_filter)
- //Enable sensor control & fast mode
- mCameraEnhancer!!.enableSensorControl(true)
- mCameraEnhancer!!.enableFastMode(true)
- }
-}
-```
-
-Run the project. Now some DCE functions have been added to the camera module.
-
-## Add decoder to the camera module
-
-This section is the guide for users to add a video stream decoder in the camera module. In this section, Dynamsoft Barcode Reader (DBR) will handle the decoding.
-
-1. Remember to add `DynamsoftBarcodeReaderAndroid.aar` to your project. Put the `aar` file under the dictionary `/app/libs` and add the following code to the `build.gradle(Module: app)`.
-
- ```groovy
- implementation(name: 'DynamsoftCameraEnhancerAndroid', ext: 'aar')
- ```
-
-2. Add a new text view for the camera module. In the text view, there will be decode results if the project is running successfully.
-
- ```xml
-
-
-
-
- ```
-
-3. Add the following code to the project in the main activity:
-
- Java:
-
- ```java
- import com.dynamsoft.dbr.BarcodeReader;
- import com.dynamsoft.dbr.BarcodeReaderException;
- import com.dynamsoft.dbr.DBRLTSLicenseVerificationListener;
- import com.dynamsoft.dbr.DCESettingParameters;
- import com.dynamsoft.dbr.TextResultCallback;
- import com.dynamsoft.dbr.TextResult;
- import com.dynamsoft.dce.CameraEnhancer;
- import com.dynamsoft.dce.CameraLTSLicenseVerificationListener;
- import com.dynamsoft.dce.CameraView;
-
- public class MainActivity extends AppCompatActivity {
- CameraView cameraView;
- CameraEnhancer mCameraEnhancer;
- //************Newly added code***************
- TextResultCallback mTextResultCallback;
- BarcodeReader reader;
- TextView tvRes;
- //*******************************************
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
-
- //**This line is newly added**
- tvRes = findViewById(R.id.tv_res);
- //****************************
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- //Initialize DCE from License Tracking Server
- com.dynamsoft.dce.DMLTSConnectionParameters info = new com.dynamsoft.dce.DMLTSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromLTS(info,new CameraLTSLicenseVerificationListener() {
- @Override
- public void LTSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){ error.printStackTrace(); }
- }
- });
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- mCameraEnhancer.startScanning();
-
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- int level = mCameraEnhancer.getDeviceLevel();
- boolean frame_filter = true;
- boolean auto_focus = true;
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false;
- auto_focus = false;
- }else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false;
- }
- mCameraEnhancer.enableDCEAutoFocus(auto_focus);
- mCameraEnhancer.enableFrameFilter(frame_filter);
- //Enable sensor control & fast mode
- mCameraEnhancer.enableSensorControl(true);
- mCameraEnhancer.enableFastMode(true);
-
- //******************The following parts are newly added******************************
- //Initialize Dynamsoft Barcode Reader from License Tracking Server
- try {
- reader = new BarcodeReader();
- com.dynamsoft.dbr.DMLTSConnectionParameters parameters = new com.dynamsoft.dbr.DMLTSConnectionParameters();
- parameters.organizationID = "Put your organizationID here.";
- reader.initLicenseFromLTS(parameters, new DBRLTSLicenseVerificationListener() {
- @Override
- public void LTSLicenseVerificationCallback(boolean b, Exception e) {
- if (!b) { e.printStackTrace(); }
- }
- });
- } catch (BarcodeReaderException e) {
- e.printStackTrace();
- }
- //Get the text result from Dynamsoft Barcode Reader
- mTextResultCallback = new TextResultCallback() {
- @Override
- public void textResultCallback(int i, TextResult[] textResults, Object o) {
- showResult(textResults);
- }
- };
- //Set DCE setting parameters in Dynamsoft Barcode Reader
- DCESettingParameters dceSettingParameters = new DCESettingParameters();
- dceSettingParameters._cameraInstance = mCameraEnhancer;
- dceSettingParameters._textResultCallback = mTextResultCallback;
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- reader.SetCameraEnhancerParam(dceSettingParameters);
- }
- //Start DCE on resume
- @Override
- public void onResume() {
- reader.StartCameraEnhancer();
- super.onResume();
- }
- //Stop DCE on pause
- @Override
- public void onPause() {
- reader.StopCameraEnhancer();
- super.onPause();
- }
- //This is the function for displaying decode result on the screen
- private void showResult(TextResult[] results) {
- if (results != null && results.length > 0) {
- String strRes = "";
- for (int i = 0; i < results.length; i++)
- strRes += results[i].barcodeText + "\n\n";
- tvRes.setText(strRes);
- }
- }
- }
- ```
-
- Kotlin:
-
- ```kotlin
- import com.dynamsoft.dbr.TextResultCallback
- import com.dynamsoft.dbr.BarcodeReader
- import com.dynamsoft.dcesimplesample.R
- import com.dynamsoft.dbr.DBRLTSLicenseVerificationListener
- import com.dynamsoft.dbr.BarcodeReaderException
- import com.dynamsoft.dbr.TextResult
- import com.dynamsoft.dbr.DCESettingParameters
- import com.dynamsoft.dbr.DMLTSConnectionParameters
-
- class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
-
- //************Newly added code***************
- var mTextResultCallback: TextResultCallback? = null
- var reader: BarcodeReader? = null
- var tvRes: TextView? = null
-
- //*******************************************
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
-
- //**This line is newly added**
- tvRes = findViewById(R.id.tv_res)
- //****************************
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from License Tracking Server
- val info = com.dynamsoft.dce.DMLTSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromLTS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
-
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- val level = mCameraEnhancer!!.deviceLevel
- var frame_filter = true
- var auto_focus = true
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false
- auto_focus = false
- } else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false
- }
- mCameraEnhancer!!.enableDCEAutoFocus(auto_focus)
- mCameraEnhancer!!.enableFrameFilter(frame_filter)
- //Enable sensor control & fast mode
- mCameraEnhancer!!.enableSensorControl(true)
- mCameraEnhancer!!.enableFastMode(true)
-
- //******************The following parts are newly added******************************
- //Initialize Dynamsoft Barcode Reader from License Tracking Server
- try {
- reader = BarcodeReader()
- val parameters = DMLTSConnectionParameters()
- parameters.organizationID = "Put your organizationID here."
- reader!!.initLicenseFromLTS(parameters) { b, e ->
- if (!b) {
- e.printStackTrace()
- }
- }
- } catch (e: BarcodeReaderException) {
- e.printStackTrace()
- }
- //Get the text result from Dynamsoft Barcode Reader
- mTextResultCallback = TextResultCallback { i, textResults, o -> showResult(textResults) }
- //Set DCE setting parameters in Dynamsoft Barcode Reader
- val dceSettingParameters = DCESettingParameters()
- dceSettingParameters._cameraInstance = mCameraEnhancer
- dceSettingParameters._textResultCallback = mTextResultCallback
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- reader!!.SetCameraEnhancerParam(dceSettingParameters)
- }
-
- //Start DCE on resume
- public override fun onResume() {
- reader!!.StartCameraEnhancer()
- super.onResume()
- }
-
- //Stop DCE on pause
- public override fun onPause() {
- reader!!.StopCameraEnhancer()
- super.onPause()
- }
-
- //This is the function for displaying decode result on the screen
- private fun showResult(results: Array?) {
- if (results != null && results.size > 0) {
- var strRes = ""
- for (i in results.indices) strRes += """
- ${results[i].barcodeText}
-
-
- """.trimIndent()
- tvRes!!.text = strRes
- }
- }
- }
- ```
-
-4. Run the project, now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
diff --git a/programming-old/android/guide/guide-v1.0.3.md b/programming-old/android/guide/guide-v1.0.3.md
deleted file mode 100644
index c70391e2..00000000
--- a/programming-old/android/guide/guide-v1.0.3.md
+++ /dev/null
@@ -1,499 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v1.0.3.html
----
-
-# User Guide on Android (Java & Kotlin)
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-## Installation
-
-1. Download Dynamsoft Camera Enhancer to get `dce-android-{version-number}.zip`. Unzip the package to find `DynamsoftCameraEnhancerAndroid.aar`.
-
-2. Create a new Android project in Android Studio.
-
-3. Put the `.aar` file under the dictionary `/app/libs` in your project.
-
-4. Add the following code into `build.gradle(Module: app)`.
-
- ```groovy
- repositories {
- flatDir {
- dirs 'libs'
- }
- }
- ```
-
-5. Also in `build.gradle(Module: app)` add the reference in dependencies:
-
- ```groovy
- implementation(name: 'DynamsoftCameraEnhancerAndroid', ext: 'aar')
- ```
-
-6. Sync the project with Gradle, then, `DynamsoftCameraEnhancerAndroid.aar` is added to your project.
-
-## Create a Camera Module
-
-This section is a guide on using Dynamsoft Camera Enhancer to create a simple camera app after installation.
-
-1. Keep working on the project that you have installed DCE. In the project, create a CameraView section in activity_main.xml.
-
- ```xml
-
- ```
-
-2. Set up for your camera in the `cameraView` section. Please add the following code in your activity for the camera. The following code is an example of setting camera view in `MainActivity`
-
- Java:
-
- ```java
- import com.dynamsoft.dce.CameraEnhancer;
- import com.dynamsoft.dce.CameraState;
- import com.dynamsoft.dce.CameraView;
- public class MainActivity extends AppCompatActivity {
- CameraEnhancer mCameraEnhancer;
- CameraView cameraView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- //Initialize your license
- com.dynamsoft.dce.DMDLSConnectionParameters info = new com.dynamsoft.dce.DMDLSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromDLS(info,new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
- });
- //Turn on the camera
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- //Start scanning
- mCameraEnhancer.startScanning();
- }
- }
- ```
-
- Kotlin:
-
- ```kotlin
- import com.dynamsoft.dce.CameraEnhancer
- import com.dynamsoft.dce.CameraState
- import com.dynamsoft.dce.CameraView
-
- class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from Dynamsoft License Server
- val info = com.dynamsoft.dce.DMDLSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromDLS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
- }
- }
- ```
-
-3. Run the project. Now your camera module is running. If you have any questions about the program, you can view the `samples` we provided in the package you download to get a better understanding of how it works. Also, you can get help from our online customer service.
-
-## Extend the camera module with DCE functions
-
-This is a template for users to add DCE camera settings into the newly built camera module.
-
-Java:
-
-```java
-import com.dynamsoft.dce.CameraEnhancer;
-import com.dynamsoft.dce.CameraState;
-import com.dynamsoft.dce.CameraView;
-public class MainActivity extends AppCompatActivity {
- CameraEnhancer mCameraEnhancer;
- CameraView cameraView;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- com.dynamsoft.dce.DMDLSConnectionParameters info = new com.dynamsoft.dce.DMDLSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromDLS(info,new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
- });
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- mCameraEnhancer.startScanning();
- //**************The Following parts are newly added*******************
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- int level = mCameraEnhancer.getDeviceLevel();
- boolean frame_filter = true;
- boolean auto_focus = true;
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false;
- auto_focus = false;
- }else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false;
- }
- mCameraEnhancer.enableDCEAutoFocus(auto_focus);
- mCameraEnhancer.enableFrameFilter(frame_filter);
- //Enable sensor control & fast mode
- mCameraEnhancer.enableSensorControl(true);
- mCameraEnhancer.enableFastMode(true);
- }
-}
-```
-
-Kotlin:
-
-```kotlin
-import com.dynamsoft.dce.CameraEnhancer
-import com.dynamsoft.dce.CameraState
-import com.dynamsoft.dce.CameraView
-
-class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from Dynamsoft License Server
- val info = com.dynamsoft.dce.DMDLSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromDLS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
- //**************The Following parts are newly added*******************
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- val level = mCameraEnhancer!!.deviceLevel
- var frame_filter = true
- var auto_focus = true
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false
- auto_focus = false
- } else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false
- }
- mCameraEnhancer!!.enableDCEAutoFocus(auto_focus)
- mCameraEnhancer!!.enableFrameFilter(frame_filter)
- //Enable sensor control & fast mode
- mCameraEnhancer!!.enableSensorControl(true)
- mCameraEnhancer!!.enableFastMode(true)
- }
-}
-```
-
-Run the project. Now some DCE functions have been added to the camera module.
-
-## Add decoder to the camera module
-
-This section is the guide for users to add a video stream decoder in the camera module. In this section, Dynamsoft Barcode Reader (DBR) will handle the decoding.
-
-1. Remember to add `DynamsoftBarcodeReaderAndroid.aar` to your project. Put the `aar` file under the dictionary `/app/libs` and add the following code to the `build.gradle(Module: app)`.
-
- ```groovy
- implementation(name: 'DynamsoftCameraEnhancerAndroid', ext: 'aar')
- ```
-
-2. Add a new text view for the camera module. In the text view, there will be decode results if the project is running successfully.
-
- ```xml
-
-
-
-
- ```
-
-3. Add the following code to the project in the main activity:
-
- Java:
-
- ```java
- import com.dynamsoft.dbr.BarcodeReader;
- import com.dynamsoft.dbr.BarcodeReaderException;
- import com.dynamsoft.dbr.DBRDLSLicenseVerificationListener;
- import com.dynamsoft.dbr.DCESettingParameters;
- import com.dynamsoft.dbr.TextResultCallback;
- import com.dynamsoft.dbr.TextResult;
- import com.dynamsoft.dce.CameraEnhancer;
- import com.dynamsoft.dce.CameraDLSLicenseVerificationListener;
- import com.dynamsoft.dce.CameraView;
-
- public class MainActivity extends AppCompatActivity {
- CameraView cameraView;
- CameraEnhancer mCameraEnhancer;
- //************Newly added code***************
- TextResultCallback mTextResultCallback;
- BarcodeReader reader;
- TextView tvRes;
- //*******************************************
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- cameraView = findViewById(R.id.cameraView);
-
- //**This line is newly added**
- tvRes = findViewById(R.id.tv_res);
- //****************************
- mCameraEnhancer = new CameraEnhancer(MainActivity.this);
- mCameraEnhancer.addCameraView(cameraView);
- //Initialize DCE from Dynamsoft License Server
- com.dynamsoft.dce.DMDLSConnectionParameters info = new com.dynamsoft.dce.DMDLSConnectionParameters();
- info.organizationID = "Put your organizationID here.";
- mCameraEnhancer.initLicenseFromDLS(info,new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){ error.printStackTrace(); }
- }
- });
- mCameraEnhancer.setCameraDesiredState(CameraState.CAMERA_STATE_ON);
- mCameraEnhancer.startScanning();
-
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- int level = mCameraEnhancer.getDeviceLevel();
- boolean frame_filter = true;
- boolean auto_focus = true;
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false;
- auto_focus = false;
- }else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false;
- }
- mCameraEnhancer.enableDCEAutoFocus(auto_focus);
- mCameraEnhancer.enableFrameFilter(frame_filter);
- //Enable sensor control & fast mode
- mCameraEnhancer.enableSensorControl(true);
- mCameraEnhancer.enableFastMode(true);
-
- //******************The following parts are newly added******************************
- //Initialize Dynamsoft Barcode Reader from Dynamsoft License Server
- try {
- reader = new BarcodeReader();
- com.dynamsoft.dbr.DMDLSConnectionParameters parameters = new com.dynamsoft.dbr.DMDLSConnectionParameters();
- parameters.organizationID = "Put your organizationID here.";
- reader.initLicenseFromDLS(parameters, new DBRDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean b, Exception e) {
- if (!b) { e.printStackTrace(); }
- }
- });
- } catch (BarcodeReaderException e) {
- e.printStackTrace();
- }
- //Get the text result from Dynamsoft Barcode Reader
- mTextResultCallback = new TextResultCallback() {
- @Override
- public void textResultCallback(int i, TextResult[] textResults, Object o) {
- showResult(textResults);
- }
- };
- //Set DCE setting parameters in Dynamsoft Barcode Reader
- DCESettingParameters dceSettingParameters = new DCESettingParameters();
- dceSettingParameters._cameraInstance = mCameraEnhancer;
- dceSettingParameters._textResultCallback = mTextResultCallback;
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- reader.SetCameraEnhancerParam(dceSettingParameters);
- }
- //Start DCE on resume
- @Override
- public void onResume() {
- reader.StartCameraEnhancer();
- super.onResume();
- }
- //Stop DCE on pause
- @Override
- public void onPause() {
- reader.StopCameraEnhancer();
- super.onPause();
- }
- //This is the function for displaying decode result on the screen
- private void showResult(TextResult[] results) {
- if (results != null && results.length > 0) {
- String strRes = "";
- for (int i = 0; i < results.length; i++)
- strRes += results[i].barcodeText + "\n\n";
- tvRes.setText(strRes);
- }
- }
- }
- ```
-
- Kotlin:
-
- ```kotlin
- import com.dynamsoft.dbr.BarcodeReader
- import com.dynamsoft.dbr.BarcodeReaderException
- import com.dynamsoft.dbr.DBRDLSLicenseVerificationListener
- import com.dynamsoft.dbr.DCESettingParameters
- import com.dynamsoft.dbr.TextResultCallback
- import com.dynamsoft.dbr.TextResult
- import com.dynamsoft.dce.CameraEnhancer
- import com.dynamsoft.dce.CameraDLSLicenseVerificationListener
- import com.dynamsoft.dce.CameraView
-
- class MainActivity : AppCompatActivity() {
- var cameraView: CameraView? = null
- var mCameraEnhancer: CameraEnhancer? = null
-
- //************Newly added code***************
- var mTextResultCallback: TextResultCallback? = null
- var reader: BarcodeReader? = null
- var tvRes: TextView? = null
-
- //*******************************************
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_main)
- cameraView = findViewById(R.id.cameraView)
-
- //**This line is newly added**
- tvRes = findViewById(R.id.tv_res)
- //****************************
- mCameraEnhancer = CameraEnhancer(this@MainActivity)
- mCameraEnhancer!!.addCameraView(cameraView)
- //Initialize DCE from Dynamsoft License Server
- val info = com.dynamsoft.dce.DMDLSConnectionParameters()
- info.organizationID = "Put your organizationID here."
- mCameraEnhancer!!.initLicenseFromDLS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
- }
- mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
- mCameraEnhancer!!.startScanning()
-
- //Make device level evaluation on the current device
- //User can set parameters for device level evaluation via API `setAutoModeLevelParam`
- val level = mCameraEnhancer!!.deviceLevel
- var frame_filter = true
- var auto_focus = true
- if (level == 2) {
- //Disable both autofocus and frame filter on high-level device
- frame_filter = false
- auto_focus = false
- } else if (level == 1) {
- //Disable autofocus on mid-level devices
- auto_focus = false
- }
- mCameraEnhancer!!.enableDCEAutoFocus(auto_focus)
- mCameraEnhancer!!.enableFrameFilter(frame_filter)
- //Enable sensor control & fast mode
- mCameraEnhancer!!.enableSensorControl(true)
- mCameraEnhancer!!.enableFastMode(true)
-
- //******************The following parts are newly added******************************
- //Initialize Dynamsoft Barcode Reader from Dynamsoft License Server
- try {
- reader = BarcodeReader()
- val parameters = DMDLSConnectionParameters()
- parameters.organizationID = "Put your organizationID here."
- reader!!.initLicenseFromDLS(parameters) { b, e ->
- if (!b) {
- e.printStackTrace()
- }
- }
- } catch (e: BarcodeReaderException) {
- e.printStackTrace()
- }
- //Get the text result from Dynamsoft Barcode Reader
- mTextResultCallback = TextResultCallback { i, textResults, o -> showResult(textResults) }
- //Set DCE setting parameters in Dynamsoft Barcode Reader
- val dceSettingParameters = DCESettingParameters()
- dceSettingParameters._cameraInstance = mCameraEnhancer
- dceSettingParameters._textResultCallback = mTextResultCallback
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- reader!!.SetCameraEnhancerParam(dceSettingParameters)
- }
-
- //Start DCE on resume
- public override fun onResume() {
- reader!!.StartCameraEnhancer()
- super.onResume()
- }
-
- //Stop DCE on pause
- public override fun onPause() {
- reader!!.StopCameraEnhancer()
- super.onPause()
- }
-
- //This is the function for displaying decode result on the screen
- private fun showResult(results: Array?) {
- if (results != null && results.size > 0) {
- var strRes = ""
- for (i in results.indices) strRes += """
- ${results[i].barcodeText}
-
-
- """.trimIndent()
- tvRes!!.text = strRes
- }
- }
- }
- ```
-
-4. Run the project, now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
diff --git a/programming-old/android/guide/guide-v2.3.10.md b/programming-old/android/guide/guide-v2.3.10.md
deleted file mode 100644
index efbf69dd..00000000
--- a/programming-old/android/guide/guide-v2.3.10.md
+++ /dev/null
@@ -1,298 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v2.3.10.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
- ```
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
- ```
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
- ```
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:2.3.10@aar'
- }
- ```
- >Note:Please replace {version-number} with the correct version number.
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.html#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-Use the following code to activate the license:
-
-```java
-CameraEnhancer.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
-});
-```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Initialize Dynamsoft Camera Enhancer
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-### Create Camera View And Control Camera
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- DCECameraView mCameraView;
-
- mCameraView = findViewById(R.id.cameraView);
- mCameraEnhancer.setCameraView(mCameraView);
- ```
-
-3. Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
- ```java
- @Override
- protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- try {
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
- ```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- // Click to capture a frame
- private Button btnCapture;
-
- btnCapture =(Button)findViewById(R.id.btnCapture);
-
- btnCapture.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- }
- });
-
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static DCEFrame mFrame;
-
- mCameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long nowTime) {
- if(needCapture){
- needCapture = false;
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- ImageView ivPicture;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- DCEFrame frame = MainActivity.mFrame;
-
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = frame.toBitmap();
-
- // Rotate it to the nature device orientation.
- bitmap = rotateBitmap(bitmap, frame.getOrientation());
-
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- private Bitmap rotateBitmap(Bitmap origin, float degree) {
- if (origin == null) {
- return null;
- }
- int width = origin.getWidth();
- int height = origin.getHeight();
- Matrix matrix = new Matrix();
- matrix.setRotate(degree);
- Bitmap newBM = Bitmap.createBitmap(origin, 0, 0, width, height, matrix, false);
- origin.recycle();
- return newBM;
- }
- }
- ```
-
-
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming-old/android/guide/guide-v2.3.12.md b/programming-old/android/guide/guide-v2.3.12.md
deleted file mode 100644
index 23205566..00000000
--- a/programming-old/android/guide/guide-v2.3.12.md
+++ /dev/null
@@ -1,298 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v2.3.12.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
- ```
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
- ```
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
- ```
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:2.3.10@aar'
- }
- ```
- >Note:Please replace {version-number} with the correct version number.
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.html#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-Use the following code to activate the license:
-
-```java
-CameraEnhancer.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
-});
-```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Initialize Dynamsoft Camera Enhancer
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-### Create Camera View And Control Camera
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- DCECameraView mCameraView;
-
- mCameraView = findViewById(R.id.cameraView);
- mCameraEnhancer.setCameraView(mCameraView);
- ```
-
-3. Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
- ```java
- @Override
- protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- try {
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
- ```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- // Click to capture a frame
- private Button btnCapture;
-
- btnCapture =(Button)findViewById(R.id.btnCapture);
-
- btnCapture.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- }
- });
-
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static DCEFrame mFrame;
-
- mCameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long nowTime) {
- if(needCapture){
- needCapture = false;
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- ImageView ivPicture;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- DCEFrame frame = MainActivity.mFrame;
-
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = frame.toBitmap();
-
- // Rotate it to the nature device orientation.
- bitmap = rotateBitmap(bitmap, frame.getOrientation());
-
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- private Bitmap rotateBitmap(Bitmap origin, float degree) {
- if (origin == null) {
- return null;
- }
- int width = origin.getWidth();
- int height = origin.getHeight();
- Matrix matrix = new Matrix();
- matrix.setRotate(degree);
- Bitmap newBM = Bitmap.createBitmap(origin, 0, 0, width, height, matrix, false);
- origin.recycle();
- return newBM;
- }
- }
- ```
-
-
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming-old/android/guide/guide-v3.0.3.md b/programming-old/android/guide/guide-v3.0.3.md
deleted file mode 100644
index 81e2b2f5..00000000
--- a/programming-old/android/guide/guide-v3.0.3.md
+++ /dev/null
@@ -1,298 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v3.0.3.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
- ```
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
- ```
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
- ```
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:2.3.10@aar'
- }
- ```
- >Note:Please replace {version-number} with the correct version number.
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.html#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-Use the following code to activate the license:
-
-```java
-CameraEnhancer.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
-});
-```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Initialize Dynamsoft Camera Enhancer
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-### Create Camera View And Control Camera
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- DCECameraView mCameraView;
-
- mCameraView = findViewById(R.id.cameraView);
- mCameraEnhancer.setCameraView(mCameraView);
- ```
-
-3. Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
- ```java
- @Override
- protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
-
- @Override
- protected void onPause() {
- super.onPause();
- try {
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
- }
- ```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- // Click to capture a frame
- private Button btnCapture;
-
- btnCapture =(Button)findViewById(R.id.btnCapture);
-
- btnCapture.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- }
- });
-
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static DCEFrame mFrame;
-
- mCameraEnhancer.addListener(new DCEFrameListener() {
- @Override
- public void frameOutputCallback(DCEFrame frame, long nowTime) {
- if(needCapture){
- needCapture = false;
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- ImageView ivPicture;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- DCEFrame frame = MainActivity.mFrame;
-
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = frame.toBitmap();
-
- // Rotate it to the nature device orientation.
- bitmap = rotateBitmap(bitmap, frame.getOrientation());
-
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- private Bitmap rotateBitmap(Bitmap origin, float degree) {
- if (origin == null) {
- return null;
- }
- int width = origin.getWidth();
- int height = origin.getHeight();
- Matrix matrix = new Matrix();
- matrix.setRotate(degree);
- Bitmap newBM = Bitmap.createBitmap(origin, 0, 0, width, height, matrix, false);
- origin.recycle();
- return newBM;
- }
- }
- ```
-
-
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming-old/android/guide/zoom-and-focus-settings.md b/programming-old/android/guide/zoom-and-focus-settings.md
deleted file mode 100644
index 5fdf3fe9..00000000
--- a/programming-old/android/guide/zoom-and-focus-settings.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: default-layout
-title: Configure Zoom & Focus Settings - Exploring Features of Dynamsoft Camera Enhancer Android Edition.
-description: This page introduce how to configure zoom & focus settings with Dynamsoft Camera Enhancer Android Edition.
-keywords: Camera Enhancer, Zoom, Focus
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Zoom & Focus
-permalink: /programming/android/guide/zoom-and-focus-settings.html
----
-
-# How to Config Zoom & Focus Settings with DynamsoftCameraEnhancer
-
-## Zoom
-
-### Set Zoom Factor
-
-### Auto Zoom
-
-## Focus
-
-- Auto Focus: Trigger a focus with an interest point. Your device will calculate the focal length autometically.
-- Continuous Auto Focus: Trigger an "auto-focus". After that, enable the device to trigger the "auto-focus" continuously.
-- Tap to Focus: Tap the screen to trigger an "auto-focus". This feature is enabled by default.
-- Enhanced Focus: Continuous "auto-focus" that controlled by DCE algorithm.
-- Set Focal Length: Directly set the focal length. Much faster than the "auto-focus".
-
-### Trigger an "Auto-Focus"
-
-`setFocus` is a method for you to trigger an auto-focus at a point of interest.
-
-To trigger a one-off "auto-focus", you have to set the focus mode to locked after the focus.
-
-```java
-mCameraEnhancer.setFocus(new PointF(0.5f,0.5f), EnumFocusMode.FM_LOCKED);
-```
-
-Also, you can trigger a auto-focus and keep the "continuous auto focus" enabled:
-
-```java
-mCameraEnhancer.setFocus(new PointF(0.5f,0.5f), EnumFocusMode.FM_CONTINUOUS_AUTO);
-```
-
-### Enable Enhanced Focus
-
-```java
-```
-
-> Note: A valid license is required to enable the enhanced focus feature.
-
-### Set the Focal Length
diff --git a/programming-old/android/primary-api/camera-enhancer-v1.0.3.md b/programming-old/android/primary-api/camera-enhancer-v1.0.3.md
deleted file mode 100644
index 8743c2c1..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v1.0.3.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v1.0.3.html
----
-
-# Android CameraEnhancer Class
-
-`CameraEnhancer` is the class that provides multifunctional APIs on frame preprocessing and camera controlling.
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## [Initialization Methods]({{site.android-api}}initialization.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`]({{site.android-api}}initialization.html#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-## [Frame preprocessing methods]({{site.android-api}}preprocess.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`AcquireListFrame`]({{site.android-api}}preprocess.html#acquirelistframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`]({{site.android-api}}preprocess.html#enablefastmode) | Set true/false to turn on/off DCE fast mode. |
-| [`getEnabledFastModeStatus`]({{site.android-api}}preprocess.html#getenabledfastmodestatus) | Get the current status of fast mode (on/off). |
-| [`enableFrameFilter`]({{site.android-api}}preprocess.html#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`getEnabledFrameFilterStatus`]({{site.android-api}}preprocess.html#getenabledframefilterstatus) | Get the status (on/off) of DCE frame filter mode. |
-| [`enableSensorControl`]({{site.android-api}}preprocess.html#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`getEnabledSensorControlStatus`]({{site.android-api}}preprocess.html#getenabledsensorcontrolstatus) | Get the status (on/off) of DCE sensor control mode. |
-| [`setSensorControlThreshold`]({{site.android-api}}preprocess.html#setsensorcontrolthreshold) | Enable user to change sensor sensitivity (default value is 50). |
-
-## [Regular camera methods]({{site.android-api}}camera.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDeviceLevel`]({{site.android-api}}camera.html#getdevicelevel)| Make an evaluation on the current device and define its level for further use. |
-| [`setAutoModeLevelParam`]({{site.android-api}}camera.html#setautomodelevelparam) | Set auto mode level parameter. |
-| [`updateCameraSetting`]({{site.android-api}}camera.html#updatecamerasetting) | Update camera, filter and focus settings from Json. |
-| [`getVersion`]({{site.android-api}}camera.html#getversion) | Check current DCE version |
-| [`getCameraCurrentState`]({{site.android-api}}camera.html#getcameracurrentstate) | Get camera current state. |
-| [`getCameraDesiredState`]({{site.android-api}}camera.html#getcameradesiredstate) | Get camera desired state. |
-| [`setCameraDesiredState`]({{site.android-api}}camera.html#setcameradesiredstate) | Set Camera on/off. |
-| [`pauseCamera`]({{site.android-api}}camera.html#pausecamera-and-resumecamera) | Pause Camera. |
-| [`resumeCamera`]({{site.android-api}}camera.html#pausecamera-and-resumecamera) | Resume Camera. |
-| [`startScanning`]({{site.android-api}}camera.html#stopscanning-and-startscanning) | Start scanning. |
-| [`stopScanning`]({{site.android-api}}camera.html#stopscanning-and-startscanning) | Stop scanning. |
-| [`addCameraListener`]({{site.android-api}}camera.html#addcameralistener) | Add camera listener (on preview original, filtered or fast frames). |
-| [`removeCameraListener`]({{site.android-api}}camera.html#removecameralistener) | Remove camera listener. |
-| [`getTorchCurrentState`]({{site.android-api}}camera.html#gettorchcurrentstate) | Get torch current state. |
-| [`getTorchDesiredState`]({{site.android-api}}camera.html#gettorchdesiredstate) | Get torch desired state. |
-| [`setTorchDesiredState`]({{site.android-api}}camera.html#settorchdesiredstate) | Set torch state. |
-| [`addTorchListener`]({{site.android-api}}camera.html#addtorchlistener) | Add torch listener. |
-| [`getCameraPosition`]({{site.android-api}}camera.html#getcameraposition) | Get current camera position. |
-| [`switchCameraPosition`]({{site.android-api}}camera.html#switchcameraposition) | Switch camera position front/back. |
-| [`getResolution`]({{site.android-api}}camera.html#getresolution) | Get current resolution setting. |
-| [`setResolution`]({{site.android-api}}camera.html#setresolution) | Set resolution. |
-| [`getResolutionList`]({{site.android-api}}camera.html#getresolutionlist) | Get all available resolutions |
-| [`setMaxFrameRate`]({{site.android-api}}preprocess.html#setmaxframerate) | Set max frame rate. |
-
-## [Focus & zoom methods]({{site.android-api}}zoom-focus.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`setAutoFocusPosition`]({{site.android-api}}zoom-focus.html#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`]({{site.android-api}}zoom-focus.html#setmanualfocusposition) | Set manual focus position (This focus position is only effected once for each time the API is called). |
-| [`setFocalLength`]({{site.android-api}}zoom-focus.html#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`]({{site.android-api}}zoom-focus.html#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`getEnabledDCEAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenableddceautofocusstatus) | Get the status (on/off) of DCE auto focus. |
-| [`enableDefaultAutoFocus`]({{site.android-api}}zoom-focus.html#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`getEnabledDefaultAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenableddefaultautofocusstatus) | Get the status (on/off) of camera default auto focus. |
-| [`enableRegularAutoFocus`]({{site.android-api}}zoom-focus.html#enableregularautofocus) | If this is true, camera will auto focus every 3 seconds. This focus mode will start automatically if DCE auto focus is enabled. Users can manually quit this focus mode when DCE auto focus is activated. |
-| [`getEnabledRegularAutoFocusStatus`]({{site.android-api}}zoom-focus.html#getenabledregularautofocusstatus) | Get the current status (on/off) of this auto focus mode. |
-| [`setRegularAutoFocusParam`]({{site.android-api}}zoom-focus.html#setregularautofocusparam) | Set the time interval and terminate time for the regular auto focus |
-| [`enableAutoFocusOnSharpnessChange`]({{site.android-api}}zoom-focus.html#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. This focus mode will start automatically if DCE autofocus is enabled. Users can manually quit this focus mode when DCE autofocus is activated. |
-| [`getEnabledAutoFocusOnSharpnessChangeStatus`]({{site.android-api}}zoom-focus.html#getenabledautofocusonsharpnesschangestatus) | Get the current status (on/off) of this auto focus mode. |
-| [`enableAutoZoom`]({{site.android-api}}zoom-focus.html#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`getEnabledAutoZoomStatus`]({{site.android-api}}zoom-focus.html#getenabledautozoomstatus) | Get the status (on/off) of auto zoom mode. |
-| [`setZoomFactor`]({{site.android-api}}zoom-focus.html#setzoomfactor) | Set zoom factor. |
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.0.0.md b/programming-old/android/primary-api/camera-enhancer-v2.0.0.md
deleted file mode 100644
index 40b0d060..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.0.0.md
+++ /dev/null
@@ -1,899 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.0.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.1.0.md b/programming-old/android/primary-api/camera-enhancer-v2.1.0.md
deleted file mode 100644
index 0fd6f1e4..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.1.0.md
+++ /dev/null
@@ -1,1059 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.1.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html) class.
-
-
-
-
How to set scan region
-
-
-**Exception**
-
-An exception thrown to indicate the region parameter is invalid.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`FrameOutputCallback`]({{site.android-api-auxiliary}}interface-dceframelistener.html) and cropped [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.1.3.md b/programming-old/android/primary-api/camera-enhancer-v2.1.3.md
deleted file mode 100644
index 1fc48bce..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.1.3.md
+++ /dev/null
@@ -1,1061 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.1.3.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html) class.
-
-
-
-
How to set scan region
-
-
-**Exception**
-
-An exception thrown to indicate the region parameter is invalid.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`FrameOutputCallback`]({{site.android-api-auxiliary}}interface-dceframelistener.html) and cropped [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-| `EF_SMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.1.4.md b/programming-old/android/primary-api/camera-enhancer-v2.1.4.md
deleted file mode 100644
index 59dc897b..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.1.4.md
+++ /dev/null
@@ -1,1075 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.1.4.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html) class.
-
-
-
-
How to set scan region
-
-
-**Exception**
-
-An exception thrown to indicate the region parameter is invalid.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`FrameOutputCallback`]({{site.android-api-auxiliary}}interface-dceframelistener.html) and cropped [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-| `EF_SMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- "androidExposureTime": 2,
- "iso":30
-}
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.3.0.md b/programming-old/android/primary-api/camera-enhancer-v2.3.0.md
deleted file mode 100644
index be6b9f40..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.3.0.md
+++ /dev/null
@@ -1,1122 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.3.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-```java
-float getMaxZoomFactor()
-```
-
-**Return Value**
-
-A float value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-```java
-float maxZoomFactor = cameraEnhancer.getMaxZoomFactor();
-```
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html) class.
-
-
-
-
How to set scan region
-
-
-**Exception**
-
-An exception thrown to indicate the region parameter is invalid.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`FrameOutputCallback`]({{site.android-api-auxiliary}}interface-dceframelistener.html) and cropped [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](../auxiliary-api/interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](../auxiliary-api/interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-| `EF_SMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- "androidExposureTime": 2,
- "iso":30
-}
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.3.11.md b/programming-old/android/primary-api/camera-enhancer-v2.3.11.md
deleted file mode 100644
index f272db58..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.3.11.md
+++ /dev/null
@@ -1,960 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.3.11.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer`. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`](#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setAutoZoomRange`](#setautozoomrange) | Set the range of auto zoom. |
-| [`getAutoZoomRange`](#getautozoomrange) | Get the range of auto zoom. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setCameraStateListener`](#setcamerastatelistener ) | Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Bind a instance of `DCECameraView` to the `CameraEnhancer`. |
-| [`getCameraView`](#getcameraview) | Get the object of `DCECameraView` that is binded to the `CameraEnhancer`. |
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(android.app.Activity activity)
-```
-
-**Parameters**
-
-`activity`: The target activity.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-static String getVersion()
-```
-
-**Return Value**
-
-A string value that indicates the version of `CameraEnhancer` SDK.
-
-**Code Snippet**
-
-```java
-String version = CameraEnhancer.getVersion();
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(EnumCameraPosition)
-
-Select the camera position (front-facing or back-facing).
-
-```java
-void selectCamera(EnumCameraPosition cameraPosition) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera(EnumCameraPosition.CP_BACK);
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```java
-EnumCameraPosition getCameraPosition()
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-EnumCameraPosition camera = mCameraEnhancer.getCameraPosition();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setAutoZoomRange
-
-Set the range of auto zoom.
-
-```java
-void setAutoZoomRange(android.util.Range zoomRange)
-```
-
-**Parameters**
-
-`[in] zoomRange`: A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setAutoZoomRange(new Range(1.5,4));
-```
-
-
-
-### getAutoZoomRange
-
-Get the range of auto zoom.
-
-```java
-Range getAutoZoomRange()
-```
-
-**Return Value**
-
-A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-Range range = cameraEnhancer.getAutoZoomRange();
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setFocus(subsequentFocusMode)
-
-Trigger a focus at the targeting point and set the subsequent focus mode after focused.
-
-```java
-void setFocus(android.graphics.PointF focusPoint, EnumFocusMode subsequentFocusMode) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`[in] focusPosition`: An `android.graphics.PointF` object indicates the interest area.
-`[in] subsequentFocusMode`: Specify a focus mode via [EnumFocusMode]({{ site.dce-enums }}focus-mode.html). If you set the focus mode to `FM_LOCKED`, the focallength will be lock after the focus. Otherwise, the continuous auto focus that control by the hardware is still enabled.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(new PointF(0.5f,0.5f), EnumFocusMode.FM_LOCKED);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`](region-definition.html) class.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-regionDefinition.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](interface-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setCameraStateListener
-
-Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes.
-
-```java
-void setCameraStateListener (DCECameraStateListener listener)
-```
-
-**Parameters**
-
-`[in] listener`: A [`DCECameraStateListener`](interface-dcecamerastatelistener.html) object.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener(){
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes.
- }
-});
-```
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`](dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`](dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.3.12.md b/programming-old/android/primary-api/camera-enhancer-v2.3.12.md
deleted file mode 100644
index 68b20596..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.3.12.md
+++ /dev/null
@@ -1,960 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.3.12.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer`. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`](#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setAutoZoomRange`](#setautozoomrange) | Set the range of auto zoom. |
-| [`getAutoZoomRange`](#getautozoomrange) | Get the range of auto zoom. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setCameraStateListener`](#setcamerastatelistener ) | Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Bind a instance of `DCECameraView` to the `CameraEnhancer`. |
-| [`getCameraView`](#getcameraview) | Get the object of `DCECameraView` that is binded to the `CameraEnhancer`. |
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(android.app.Activity activity)
-```
-
-**Parameters**
-
-`activity`: The target activity.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-static String getVersion()
-```
-
-**Return Value**
-
-A string value that indicates the version of `CameraEnhancer` SDK.
-
-**Code Snippet**
-
-```java
-String version = CameraEnhancer.getVersion();
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(EnumCameraPosition)
-
-Select the camera position (front-facing or back-facing).
-
-```java
-void selectCamera(EnumCameraPosition cameraPosition) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera(EnumCameraPosition.CP_BACK);
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```java
-EnumCameraPosition getCameraPosition()
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-EnumCameraPosition camera = mCameraEnhancer.getCameraPosition();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setAutoZoomRange
-
-Set the range of auto zoom.
-
-```java
-void setAutoZoomRange(android.util.Range zoomRange)
-```
-
-**Parameters**
-
-`[in] zoomRange`: A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setAutoZoomRange(new Range(1.5,4));
-```
-
-
-
-### getAutoZoomRange
-
-Get the range of auto zoom.
-
-```java
-Range getAutoZoomRange()
-```
-
-**Return Value**
-
-A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-Range range = cameraEnhancer.getAutoZoomRange();
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setFocus(subsequentFocusMode)
-
-Trigger a focus at the targeting point and set the subsequent focus mode after focused.
-
-```java
-void setFocus(android.graphics.PointF focusPoint, EnumFocusMode subsequentFocusMode) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`[in] focusPosition`: An `android.graphics.PointF` object indicates the interest area.
-`[in] subsequentFocusMode`: Specify a focus mode via [EnumFocusMode]({{ site.dce-enums }}focus-mode.html). If you set the focus mode to `FM_LOCKED`, the focallength will be lock after the focus. Otherwise, the continuous auto focus that control by the hardware is still enabled.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(new PointF(0.5f,0.5f), EnumFocusMode.FM_LOCKED);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`](region-definition.html) class.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-regionDefinition.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](interface-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setCameraStateListener
-
-Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes.
-
-```java
-void setCameraStateListener (DCECameraStateListener listener)
-```
-
-**Parameters**
-
-`[in] listener`: A [`DCECameraStateListener`](interface-dcecamerastatelistener.html) object.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener(){
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes.
- }
-});
-```
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`](dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`](dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v2.3.5.md b/programming-old/android/primary-api/camera-enhancer-v2.3.5.md
deleted file mode 100644
index 53454f45..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v2.3.5.md
+++ /dev/null
@@ -1,1169 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v2.3.5.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer` object. |
-| [`initLicense`](#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`](#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Set the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-| [`getCameraView`](#getcameraview) | Get the object of [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(Activity activity)
-```
-
-**Parameters**
-
-`activity`: An instance of `android.app.Activity`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK.
-
-```java
-static void initLicense(String license, DCELicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`license`: The product key.
-`listener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer.initLicense("Put your license here", new DCELicenseVerificationListener(){
- @Override
- public void DCELicenseVerificationCallback(boolean b, Exception e) {
- if (!b && e != null) {
- e.printStackTrace();
- }
- }
-});
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-String getVersion()
-```
-
-**Return Value**
-
-A string value that stands for the camera enhancer SDK version.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String DCEVersion = cameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(EnumCameraPosition)
-
-Select the camera position (front-facing or back-facing).
-
-```java
-void selectCamera(EnumCameraPosition cameraPosition) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera(EnumCameraPosition.CP_BACK);
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```java
-EnumCameraPosition getCameraPosition()
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-EnumCameraPosition camera = mCameraEnhancer.getCameraPosition();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when switching the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is opening the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is closing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is pausing the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is resuming the camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning on the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when the device is turning off the torch.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to change the resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to zoom-in or zoom-out.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-```java
-float getMaxZoomFactor()
-```
-
-**Return Value**
-
-A float value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-```java
-float maxZoomFactor = cameraEnhancer.getMaxZoomFactor();
-```
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html) class.
-
-
-
-
How to set scan region
-
-
-**Exception**
-
-An exception thrown to indicate the region parameter is invalid.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`FrameOutputCallback`]({{site.android-api-auxiliary}}interface-dceframelistener.html) and cropped [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Camera Enhancer will try to set the frame rate around the input value.
-
-```java
-void setFrameRate(int frameRate) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`frameRate`: An int value that refers to the target frame rate.
-
-**Exception**
-
-An exception thrown to indicate the an error has occurred when trying to change the frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFrameRate(25);
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](../auxiliary-api/interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](../auxiliary-api/interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to access the sensor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EF_FRAME_FILTER` | 0x01 |
-| `EF_SENSOR_CONTROL` | 0x02 |
-| `EF_ENHANCED_FOCUS` | 0x04 |
-| `EF_FAST_MODE` | 0x08 |
-| `EF_AUTO_ZOOM` | 0x10 |
-| `EF_SMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=android).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`]({{ site.android-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Exception**
-
-An exception thrown to indicate the JSON data is invalid.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,10] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- "androidExposureTime": 2,
- "iso":30
-}
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v3.0.0.md b/programming-old/android/primary-api/camera-enhancer-v3.0.0.md
deleted file mode 100644
index a40546c1..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v3.0.0.md
+++ /dev/null
@@ -1,846 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v3.0.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer`. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(android.app.Activity activity)
-```
-
-**Parameters**
-
-`activity`: The target activity.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-static String getVersion()
-```
-
-**Return Value**
-
-A string value that indicates the version of `CameraEnhancer` SDK.
-
-**Code Snippet**
-
-```java
-String version = CameraEnhancer.getVersion();
-```
-
-
-
-## Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-
-
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-
-
-## Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-## Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeature) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeature) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`](region-definition.html) class.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-regionDefinition.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](interface-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-
-
-## Camera UI Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Bind a instance of `DCECameraView` to the `CameraEnhancer`. |
-| [`getCameraView`](#getcameraview) | Get the object of DCECameraView that is binded to the `CameraEnhancer`. |
-
-
-
-### setCameraView
-
-Set a [`DCECameraView`](dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`](dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v3.0.1.md b/programming-old/android/primary-api/camera-enhancer-v3.0.1.md
deleted file mode 100644
index de3eec14..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v3.0.1.md
+++ /dev/null
@@ -1,909 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v3.0.1.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer`. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`](#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Bind a instance of `DCECameraView` to the `CameraEnhancer`. |
-| [`getCameraView`](#getcameraview) | Get the object of `DCECameraView` that is binded to the `CameraEnhancer`. |
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(android.app.Activity activity)
-```
-
-**Parameters**
-
-`activity`: The target activity.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-static String getVersion()
-```
-
-**Return Value**
-
-A string value that indicates the version of `CameraEnhancer` SDK.
-
-**Code Snippet**
-
-```java
-String version = CameraEnhancer.getVersion();
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(EnumCameraPosition)
-
-Select the camera position (front-facing or back-facing).
-
-```java
-void selectCamera(EnumCameraPosition cameraPosition) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera(EnumCameraPosition.CP_BACK);
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```java
-EnumCameraPosition getCameraPosition()
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-EnumCameraPosition camera = mCameraEnhancer.getCameraPosition();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```java
-void pause() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.pause();
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last captured frame before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```java
-void resume() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.resume();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`](region-definition.html) class.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-regionDefinition.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](interface-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`](dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`](dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
diff --git a/programming-old/android/primary-api/camera-enhancer-v3.0.3.md b/programming-old/android/primary-api/camera-enhancer-v3.0.3.md
deleted file mode 100644
index 92764b41..00000000
--- a/programming-old/android/primary-api/camera-enhancer-v3.0.3.md
+++ /dev/null
@@ -1,960 +0,0 @@
----
-layout: default-layout
-title: Android CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Android API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android CameraEnhancer Class
-permalink: /programming/android/primary-api/camera-enhancer-v3.0.3.html
----
-
-# CameraEnhancer Class
-
-The main class of `CameraEnhancer` library. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```java
-class com.dynamsoft.dce.CameraEnhancer
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`CameraEnhancer`](#cameraenhancer) | Initialize the `CameraEnhancer`. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera(EnumCameraPosition)`](#selectcameraenumcameraposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera(String)`](#selectcamerastring) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setAutoZoomRange`](#setautozoomrange) | Set the range of auto zoom. |
-| [`getAutoZoomRange`](#getautozoomrange) | Get the range of auto zoom. |
-| [`setFocus`](#setfocus) | Focus once at the input position. |
-| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`](#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`setScanRegionVisible`](#setscanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`getScanRegionVisible`](#getscanregionvisible) | Get whether the **scanRegion** will be displayed on the UI. |
-| [`setCameraStateListener`](#setcamerastatelistener ) | Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Camera UI Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`setCameraView`](#setcameraview) | Bind a instance of `DCECameraView` to the `CameraEnhancer`. |
-| [`getCameraView`](#getcameraview) | Get the object of `DCECameraView` that is binded to the `CameraEnhancer`. |
-
-## Initialization Methods Details
-
-### CameraEnhancer
-
-Initialize the `CameraEnhancer` Object.
-
-```java
-CameraEnhancer(android.app.Activity activity)
-```
-
-**Parameters**
-
-`activity`: The target activity.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```java
-static String getVersion()
-```
-
-**Return Value**
-
-A string value that indicates the version of `CameraEnhancer` SDK.
-
-**Code Snippet**
-
-```java
-String version = CameraEnhancer.getVersion();
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras()
-```
-
-**Return Value**
-
-An array list that inclueds all available cameras. Users can clearly read whether the camera is front-facing, back-facing or external from the cameraID.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String[] cameraIds = cameraEnhancer.getAllCameras();
-```
-
-
-
-### selectCamera(EnumCameraPosition)
-
-Select the camera position (front-facing or back-facing).
-
-```java
-void selectCamera(EnumCameraPosition cameraPosition) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera(EnumCameraPosition.CP_BACK);
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```java
-EnumCameraPosition getCameraPosition()
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-```java
-EnumCameraPosition camera = mCameraEnhancer.getCameraPosition();
-```
-
-
-
-### selectCamera(String)
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed by selecting another camera via this method, the settings applied to this camera will be inherited by the newly selected camera.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.selectCamera("BACK_FACING_CAMERA_0");
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```java
-String getSelectedCamera()
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**CodeSnippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-String selectedCameraID = cameraEnhancer.getSelectedCamera();
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```java
-EnumCameraState getCameraState()
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-int cameraState = cameraEnhancer.getCameraState();
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```java
-void open() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.open();
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```java
-void close() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.close();
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```java
-void turnOnTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOnTorch();
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```java
-void turnOffTorch() throws CameraEnhancerException
-```
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.turnOffTorch();
-```
-
-### getFrameRate
-
-Get the current frame rate.
-
-```java
-int getFrameRate()
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-int frameRate = cameraEnhancer.getFrameRate();
-```
-
-
-
-### getResolutionList
-
-Check the available resolutions of the current device.
-
-```java
-List getResolutionList()
-```
-
-**Return Value**
-
-A list that contains all available resolutions.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-List resolutionList = cameraEnhancer.getResolutionList();
-```
-
-
-
-### setResolution
-
-Input a preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```java
-void setResolution(EnumResolution resolution) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setResolution(EnumResolution.RESOLUTION_2K);
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```java
-Size getResolution()
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-Size currentResolution = cameraEnhancer.getResolution();
-```
-
-
-
-### setZoom
-
-Set the zoom factor. The camera will zoom in/out immediately after this method is triggered.
-
-```java
-void setZoom(float factor) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setZoom(2.5)
-```
-
-
-
-### setAutoZoomRange
-
-Set the range of auto zoom.
-
-```java
-void setAutoZoomRange(android.util.Range zoomRange)
-```
-
-**Parameters**
-
-`[in] zoomRange`: A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-cameraEnhancer.setAutoZoomRange(new Range(1.5,4));
-```
-
-
-
-### getAutoZoomRange
-
-Get the range of auto zoom.
-
-```java
-Range getAutoZoomRange()
-```
-
-**Return Value**
-
-A `UIFloatRange` value that defines the range of auto zoom.
-
-**Code Snippet**
-
-```java
-Range range = cameraEnhancer.getAutoZoomRange();
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```java
-void setFocus(float x, float y) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`x`: The x-coordinate of the targeting focus position.
-`y`: The y-coordinate of the targeting focus position.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(0.5,0.4);
-```
-
-
-
-### setFocus(subsequentFocusMode)
-
-Trigger a focus at the targeting point and set the subsequent focus mode after focused.
-
-```java
-void setFocus(android.graphics.PointF focusPoint, EnumFocusMode subsequentFocusMode) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`[in] focusPosition`: An `android.graphics.PointF` object indicates the interest area.
-`[in] subsequentFocusMode`: Specify a focus mode via [EnumFocusMode]({{ site.dce-enums }}focus-mode.html). If you set the focus mode to `FM_LOCKED`, the focallength will be lock after the focus. Otherwise, the continuous auto focus that control by the hardware is still enabled.
-
-**Exception**
-
-An exception thrown to indicate an error has occurred when trying to trigger a focus.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setFocus(new PointF(0.5f,0.5f), EnumFocusMode.FM_LOCKED);
-```
-
-
-
-### setScanRegion
-
-Specify the scan region. The DCEFrames will be cropped according to the scan region before they are stored in the video buffer.
-
-```java
-void setScanRegion(RegionDefinition scanRegion) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`scanRegion`: Use a RegionDefinition value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`RegionDefinition`](region-definition.html) class.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition scanRegion = new RegionDefinition();
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-regionDefinition.regionMeasuredByPercentage = 1;
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-try {
- cameraEnhancer.setScanRegion(scanRegion);;
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`RegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](interface-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the `scanRegion` when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the **scanRegion** will be displayed on the UI automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the scan region configurations. You will get a null value if the scan region is not set.
-
-```java
-RegionDefinition getScanRegion()
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-```java
-com.dynamsoft.dce.RegionDefinition myScanRegion = new RegionDefinition();
-
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-myScanRegion = cameraEnhancer.getScanRegion(scanRegion);
-```
-
-
-
-### setScanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value is false. When the value is set to true, the scan region will be displayed on the UI. The **scanRegion** will not be displayed if the **scanRegion** value is null.
-
-```java
-void setScanRegionVisible(boolean scanRegionVisible)
-```
-
-**Parameters**
-
-`scanRegionVisible`: When the value is set to true, the **scanRegion** will be displayed on the UI. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setScanRegionVisible(true);
-```
-
-
-
-### getScanRegionVisible
-
-Get whether the **scanRegion** will be displayed on the UI.
-
-```java
-boolean getScanRegionVisible()
-```
-
-**Return Value**
-
-When the return value is true, the **scanRegion** will be displayed. Otherwise, the **scanRegion** will not be displayed.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean scanRegionVisible = cameraEnhancer.getScanRegionVisible();
-```
-
-
-
-### setCameraStateListener
-
-Add a [`DCECameraStateListener`](interface-dcecamerastatelistener.html) to receive notification when the camera state changes.
-
-```java
-void setCameraStateListener (DCECameraStateListener listener)
-```
-
-**Parameters**
-
-`[in] listener`: A [`DCECameraStateListener`](interface-dcecamerastatelistener.html) object.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.setCameraStateListener(new DCECameraStateListener(){
- @Override
- public void stateChangeCallback(EnumCameraState currentState) {
- // Add your code to do when camera state changes.
- }
-});
-```
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the video buffer.
-
-```java
-DCEFrame getFrameFromBuffer(boolean isKeep)
-```
-
-**Parameters**
-
-`isKeep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCEFrame frame = cameraEnhancer.getFrameFromBuffer(false);
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```java
-void addListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```java
-void removeListener(DCEFrameListener listener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCEFrameListener listener = new DCEFrameListener(){
- @Override
- public void frameOutputCallback(DCEFrame frame, long timeStamp) {
- //perform custom action on generated frame
- }
-};
-cameraEnhancer.addListener(listener);
-// ......
-cameraEnhancer.removeListener(listener);
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](interface-dcephotolistener.html#photooutputcallback).
-
-```java
-void takePhoto(DCEPhotoListener listener)
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](interface-dcephotolistener.html).
-
-**Code Snippet**
-
-```java
-// Create an instance of DCEPhotoListener
-DCEPhotoListener photoListener = new DCEPhotoListener() {
- @Override
- public void photoOutputCallback(byte[] bytes) {
- // Add your code to execute when photo is captured.
- }
-};
-mCameraEnhancer.takePhoto(photoListener);
-```
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```java
-void enableFeatures(int enhancerFeatures) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-cameraEnhancer.enableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```java
-void disableFeatures(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.disableFeatures(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Returns a boolean value that means whether the feature(s) you input is (are) enabled.
-
-```java
-boolean isFeatureEnabled(int enhancerFeatures)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-`True`: All the features you input are enabled.
-`False`: There is at least one feature that is not enabled among your input values.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-boolean isEnabled = cameraEnhancer.isFeatureEnabled(EnumEnhancerFeatures.FRAME_FILTER | EnumEnhancerFeatures.SENSOR_CONTROL);
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enable you to update settings via a JSON file from the storage.
-
-```java
-void updateAdvancedSettingsFromFile(String filePath) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-// Replace the filePath with your target filePath
-cameraEnhancer.updateAdvancedSettingsFromFile("/storage/emulated/0/1.json")
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```java
-void updateAdvancedSettingsFromString(String jsonString) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-cameraEnhancer.updateAdvancedSettingsFromString("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}");
-```
-
-## Camera UI Methods Details
-
-### setCameraView
-
-Set a [`DCECameraView`](dcecameraview.html) object as the main UI view.
-
-```java
-void setCameraView(DCECameraView cameraView)
-```
-
-**Parameters**
-
-`cameraView`: The main UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-
-DCECameraView cameraView = findViewById(R.id.cameraView);
-cameraEnhancer.setCameraView(cameraView);
-```
-
-
-
-### getCameraView
-
-Get the [`DCECameraView`](dcecameraview.html) object of the current UI view.
-
-```java
-DCECameraView getCameraView()
-```
-
-**Return Value**
-
-The current UI view. See also [`DCECameraView`](dcecameraview.html).
-
-**Code Snippet**
-
-```java
-CameraEnhancer cameraEnhancer = new CameraEnhancer(MainActivity.this);
-DCECameraView cameraView = cameraEnhancer.getCameraView();
-```
diff --git a/programming-old/android/primary-api/camera-v1.0.3.md b/programming-old/android/primary-api/camera-v1.0.3.md
deleted file mode 100644
index 28bfce9d..00000000
--- a/programming-old/android/primary-api/camera-v1.0.3.md
+++ /dev/null
@@ -1,663 +0,0 @@
----
-layout: default-layout
-title: Regular Camera Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Basic Settings page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Regular Camera Methods
-needAutoGenerateSidebar: true
-breadcrumbText: Android Regular Camera Methods
-noTitleIndex: true
-permalink: /programming/android/primary-api/camera-v1.0.3.html
----
-
-# Regular Camera Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDeviceLevel`](#getdevicelevel)| Make an evaluation on the current device and define its level for further use. |
-| [`setAutoModeLevelParam`](#setautomodelevelparam) | Set auto mode level parameter. |
-| [`updateCameraSetting`](#updatecamerasetting) | Update camera, filter and focus settings from Json. |
-| [`getVersion`](#getversion) | Check current DCE version |
-| [`getCameraCurrentState`](#getcameracurrentstate) | Get camera current state. |
-| [`getCameraDesiredState`](#getcameradesiredstate) | Get camera desired state. |
-| [`setCameraDesiredState`](#setcameradesiredstate) | Set Camera on/off. |
-| [`pauseCamera`](#pausecamera-and-resumecamera) | Pause Camera. |
-| [`resumeCamera`](#pausecamera-and-resumecamera) | Resume Camera. |
-| [`startScanning`](#stopscanning-and-startscanning) | Start scanning. |
-| [`stopScanning`](#stopscanning-and-startscanning) | Stop scanning. |
-| [`addCameraListener`](#addcameralistener) | Add camera listener (on preview original, filtered or fast frames). |
-| [`removeCameraListener`](#removecameralistener) | Remove camera listener. |
-| [`getTorchCurrentState`](#gettorchcurrentstate) | Get torch current state. |
-| [`getTorchDesiredState`](#gettorchdesiredstate) | Get torch desired state. |
-| [`setTorchDesiredState`](#settorchdesiredstate) | Set torch state. |
-| [`addTorchListener`](#addtorchlistener) | Add torch listener. |
-| [`getCameraPosition`](#getcameraposition) | Get current camera position. |
-| [`switchCameraPosition`](#switchcameraposition) | Switch camera position front/back. |
-| [`getResolution`](#getresolution) | Get current resolution setting. |
-| [`setResolution`](#setresolution) | Set resolution. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions |
-
----
-
-## getDeviceLevel
-
-This API can help you make an evaluation on your mobile device. It will be helpful to automatically turn off DCE on high-level mobile devices.
-
-```java
-getDeviceLevel()
-```
-
-**Return Value**
-
-`int`: Returns the device level. Read more in parameter reference [`HardwareUtil`]({{site.parameter-reference}}index.html#hardwareutil).
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getDeviceLevel();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.deviceLevel
-```
-
-## setAutoModeLevelParam
-
-Set auto mode level parameter - cpuMHz1, cpuMHz2, ramMB1, ramMB2. These are settings for device-level.
-
-```java
-setAutoModeLevelParam(int, int, int, int)
-```
-
-**Parameters**
-
-We are defining the devices level by their CPU and RAM performance. You can define the ranges for CPU and RAM performance throw this API.
-
-`int (cpuMHz1)`: The smallest value for CPU processing speed.
-`int (cpuMHz2)`: The greatest value for CPU processing speed.
-`int (ramMB1)`: The smallest value for RAM size.
-`int (ramMB2)`: The greatest value for RAM size.
-
-| CPU & RAM | If device CPUMHz > cpuMHz2 | If device CPUMHz1 < CPUMHz < cpuMHz2 | If device CPUMHz < CPUMHz1 |
-|--|--|--|--|
-| If device ramMB > ramMB2 | Device-level is high | Device-level is mid | Device-level is mid |
-| If ramMB1 < device ramMB < ramMB2 | Device-level is mid | Device-level is mid | Device-level is mid |
-| If device ramMB < ramMB1 | Device-level is mid | Device-level is mid | Device-level is low |
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setAutoModeLevelParam(cpuMHz1,cpuMHz2,ramMB1,ramMB2);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setAutoModeLevelParam(cpuMHz1,cpuMHz2,ramMB1,ramMB2)
-```
-
-## updateCameraSetting
-
-There are some detailed settings that can be updated from JSON.
-
-### Update Settings from JSON Object
-
-```java
-updateCameraSetting(JSONObject json) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`JSONObject`: The camera setting JSON object.
-
-**Code Snippet**
-
-Java:
-
-```java
-mJson = new JSONObject();
-try {
- mJson.put("graydiffthreshold", 30);//auto zoom
- mJson.put("conversioncountthreshold", 30);//auto zoom
- mJson.put("sensorvalue", 5);//filter by sensor
- mJson.put("sharpnessthreshold", 0.2);//filter by sharpness
- mJson.put("sharpnessthresholdlarge", 0.4);//filter by sharpness
- mJson.put("abssharpnessthreshold", 200);//filter by sharpness
- mJson.put("absgraythreshold", 35);//filter by sharpness
- mJson.put("claritythreshold", 0.1);//focus by sharpness
- mJson.put("ternimatefocusbysharpness", 0.02);//focus by sharpness
-} catch (JSONException e) {
- e.printStackTrace();
-}
-try {
- mCameraEnhancer.updateCameraSetting(mJson);
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.updateCameraSetting("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}")
-```
-
-### Update Settings from JSON file
-
-```java
-updateCameraSetting(String path) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`String`: A string that refers to the file path.
-
-Java:
-
-```java
-mCameraEnhancer.updateCameraSetting("Your file path here.");
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.updateCameraSetting("Your file path here.")
-```
-
-JSON file template:
-
-```json
-{
- //Absolute sharpness value, A threshold value for controlling filter
- "abssharpnessthreshold":200,
- //Sensor value, A threshold value for controlling filter
- "sensorvalue":3,
- //A threshold value for gray scale analysis
- "graydiffthreshold":30,
- //A threshold for judging whether the device is shaking
- "sharpnessthreshold":0.2,
- //A threshold for judging whether the device is shaking violently
- "sharpnessthresholdlarge":0.4,
- //A threshold value for calculating sharpness
- "absgraythreshold":35,
- //A threshold value for controlling auto zoom
- "conversioncountthreshold":30,
- //A threshold value that controlling auto focus
- "claritythreshold":0.1
-}
-```
-
-## getVersion
-
-Users can check the current DCE version by using this API.
-
-```java
-getVersion()
-```
-
-**Return Value**
-
-`String`: The version number.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getVersion();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.version
-```
-
-## getCameraCurrentState
-
-Get the current camera status.
-
-```java
-getCameraCurrentState()
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-```java
-mCameraEnhancer.getCameraCurrentState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraCurrentState
-```
-
-## getCameraDesiredState
-
-Get the camera desired status.
-
-```java
-getCameraDesiredState()
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getCameraDesiredState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraDesiredState
-```
-
-## setCameraDesiredState
-
-Set the camera status.
-
-```java
-setCameraDesiredState(CameraState)
-```
-
-**Parameters**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setCameraDesireState(CameraState.CAMERA_STATE_OFF);
-// Or
-mCameraEnhancer.setCameraDesireState(CameraState.CAMERA_STATE_ON);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
-// Or
-mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_OFF)
-```
-
-## pauseCamera and resumeCamera
-
-Note: these APIs are created for pausing & resuming the camera but the camera module will still be working when paused. If you want to shut down the camera module please use `stopScanning`.
-
-```java
-void pauseCamera()
-void resumeCamera()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.pauseCamera();
-mCameraEnhancer.resumeCamera();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.pauseCamera()
-mCameraEnhancer!!.resumeCamera()
-```
-
-## stopScanning and startScanning
-
-Control the stopping & starting of the camera module.
-
-```java
-void stopScanning()
-void startScanning()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.startScanning();
-mCameraEnhancer.stopScanning();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.startScanning()
-mCameraEnhancer!!.stopScanning()
-```
-
-## addCameraListener
-
-Add the Camera Listener. From the camera listener, you can get three different kinds of frames for further usage.
-
-```java
-addCameraListener(CameraListener)
-```
-
-**Parameters**
-
-`CameraListener`: The interface [`CameraListener`]({{site.android-api-auxiliary}}interface-dceframelistener.html).
-
-**Return Value**
-
-`Frame`: The video frame captured by camera. View in class [`Frame`]({{site.android-api-auxiliary}}dceframe.html).
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.addCameraListener(new CameraListener() {
- @Override
- public void onPreviewOriginalFrame(Frame frame) {}
- @Override
- public void onPreviewFilterFrame(Frame frame) {}
- @Override
- public void onPreviewFastFrame(Frame frame) {}
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.addCameraListener(object : CameraListener {
- override fun onPreviewOriginalFrame(frame: Frame) {}
- override fun onPreviewFilterFrame(frame: Frame) {}
- override fun onPreviewFastFrame(frame: Frame) {}
-})
-```
-
-## removeCameraListener
-
-Remove the camera listener.
-
-```java
-removeCameraListener()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.removeCameraListener();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.removeCameraListener()
-```
-
-## getTorchCurrentState
-
-Get the current torch state.
-
-```java
-getTorchCurrentState()
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getTorchCurrentState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.torchCurrentState()
-```
-
-## getTorchDesiredState
-
-Get the desired torch state.
-
-```java
-getTorchDesiredState()
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getTorchDesiredState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.torchDesiredState
-```
-
-## setTorchDesiredState
-
-Set the desired torch state.
-
-```java
-setTorchDesiredState(TorchState)
-```
-
-**Parameters**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_AUTO);
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_ON);
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_OFF);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_AUTO)
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_ON)
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_OFF)
-```
-
-## addTorchListener
-
-Add the torch listener.
-
-```java
-addTorchListener(TorchListener)
-```
-
-**Parameters**
-
-`TorchListener`: The interface [`TorchListener`]({{site.android-api-auxiliary}}interface-torchlistener.html)
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.addTorchListener(new TorchListener() {
- @Override
- public void onTorchStateChanged(TorchState torchState) {
-
- }
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.addTorchListener(object : TorchListener {
- override fun onTorchStateChanged(TorchState: torchState) {}
-})
-```
-
-## getCameraPosition
-
-DCE will use the back camera of your mobile device by default. You can use `getCameraPosition` to check which camera is activated and use `switchCameraPosition` to change the setting.
-
-```java
-getCameraPosition()
-```
-
-**Return Value**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getCameraPosition();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraPosition
-```
-
-## switchCameraPosition
-
-Change the camera position. Switch between the front or back camera.
-
-```java
-switchCameraPosition(CameraPosition)
-```
-
-**Parameters**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.switchCameraPosition(CameraPosition.CAMERA_POSITION_USER);
-mCameraEnhancer.switchCameraPosition(CameraPosition.CAMERA_POSITION_WORLD);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.switchCameraPosition(CameraPosition.CAMERA_POSITION_USER)
-mCameraEnhancer!!.switchCameraPosition(CameraPosition.CAMERA_POSITION_WORLD)
-```
-
-## getResolution
-
-Get the current resolution settings.
-
-```java
-getResolution()
-```
-
-**Return Value**
-
-`Resolution`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getResolution();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.resolution
-```
-
-## setResolution
-
-Set the resolution.
-
-```java
-setResolution(Resolution)
-```
-
-**Parameters**
-
-`Resolution`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setResolution(Resolution.RESOLUTION_1080P);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setResolution(Resolution.RESOLUTION_1080P)
-```
-
-## getResolutionList
-
-Get all the available resolution value of the device.
-
-```java
-getResolutionList()
-```
-
-**Return Value**
-
-`List`: The device available Resolution: The device available resolution list. This resolution list might be different from the value of parameter `Resolution`.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getResolutionList();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.resolutionList
-```
-
-**Remarks**
-
-If the pre-set resolution is unavailable for the current device, the SDK will select the highest available resolution below the pre-set value.
diff --git a/programming-old/android/primary-api/camera.md b/programming-old/android/primary-api/camera.md
deleted file mode 100644
index d2b17074..00000000
--- a/programming-old/android/primary-api/camera.md
+++ /dev/null
@@ -1,666 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Regular Camera Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Basic Settings page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Regular Camera Methods
-needAutoGenerateSidebar: true
-breadcrumbText: Android Regular Camera Methods
-noTitleIndex: true
-permalink: /programming/android/primary-api/camera.html
----
-
-# Regular Camera Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDeviceLevel`](#getdevicelevel)| Make an evaluation on the current device and define its level for further use. |
-| [`setAutoModeLevelParam`](#setautomodelevelparam) | Set auto mode level parameter. |
-| [`updateCameraSetting`](#updatecamerasetting) | Update camera, filter and focus settings from Json. |
-| [`getVersion`](#getversion) | Check current DCE version |
-| [`getCameraCurrentState`](#getcameracurrentstate) | Get camera current state. |
-| [`getCameraDesiredState`](#getcameradesiredstate) | Get camera desired state. |
-| [`setCameraDesiredState`](#setcameradesiredstate) | Set Camera on/off. |
-| [`pauseCamera`](#pausecamera-and-resumecamera) | Pause Camera. |
-| [`resumeCamera`](#pausecamera-and-resumecamera) | Resume Camera. |
-| [`startScanning`](#stopscanning-and-startscanning) | Start scanning. |
-| [`stopScanning`](#stopscanning-and-startscanning) | Stop scanning. |
-| [`addCameraListener`](#addcameralistener) | Add camera listener (on preview original, filtered or fast frames). |
-| [`removeCameraListener`](#removecameralistener) | Remove camera listener. |
-| [`getTorchCurrentState`](#gettorchcurrentstate) | Get torch current state. |
-| [`getTorchDesiredState`](#gettorchdesiredstate) | Get torch desired state. |
-| [`setTorchDesiredState`](#settorchdesiredstate) | Set torch state. |
-| [`addTorchListener`](#addtorchlistener) | Add torch listener. |
-| [`getCameraPosition`](#getcameraposition) | Get current camera position. |
-| [`switchCameraPosition`](#switchcameraposition) | Switch camera position front/back. |
-| [`getResolution`](#getresolution) | Get current resolution setting. |
-| [`setResolution`](#setresolution) | Set resolution. |
-| [`getResolutionList`](#getresolutionlist) | Get all available resolutions |
-
----
-
-## getDeviceLevel
-
-This API can help you make an evaluation on your mobile device. It will be helpful to automatically turn off DCE on high-level mobile devices.
-
-```java
-getDeviceLevel()
-```
-
-**Return Value**
-
-`int`: Returns the device level. Read more in parameter reference [`HardwareUtil`]({{site.parameter-reference}}index.html#hardwareutil).
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getDeviceLevel();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.deviceLevel
-```
-
-## setAutoModeLevelParam
-
-Set auto mode level parameter - cpuMHz1, cpuMHz2, ramMB1, ramMB2. These are settings for device-level.
-
-```java
-setAutoModeLevelParam(int, int, int, int)
-```
-
-**Parameters**
-
-We are defining the devices level by their CPU and RAM performance. You can define the ranges for CPU and RAM performance throw this API.
-
-`int (cpuMHz1)`: The smallest value for CPU processing speed.
-`int (cpuMHz2)`: The greatest value for CPU processing speed.
-`int (ramMB1)`: The smallest value for RAM size.
-`int (ramMB2)`: The greatest value for RAM size.
-
-| CPU & RAM | If device CPUMHz > cpuMHz2 | If device CPUMHz1 < CPUMHz < cpuMHz2 | If device CPUMHz < CPUMHz1 |
-|--|--|--|--|
-| If device ramMB > ramMB2 | Device-level is high | Device-level is mid | Device-level is mid |
-| If ramMB1 < device ramMB < ramMB2 | Device-level is mid | Device-level is mid | Device-level is mid |
-| If device ramMB < ramMB1 | Device-level is mid | Device-level is mid | Device-level is low |
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setAutoModeLevelParam(cpuMHz1,cpuMHz2,ramMB1,ramMB2);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setAutoModeLevelParam(cpuMHz1,cpuMHz2,ramMB1,ramMB2)
-```
-
-## updateCameraSetting
-
-There are some detailed settings that can be updated from JSON.
-
-### Update Settings from JSON Object
-
-```java
-updateCameraSetting(JSONObject json) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`JSONObject`: The camera setting JSON object.
-
-**Code Snippet**
-
-Java:
-
-```java
-mJson = new JSONObject();
-try {
- mJson.put("graydiffthreshold", 30);//auto zoom
- mJson.put("conversioncountthreshold", 30);//auto zoom
- mJson.put("sensorvalue", 5);//filter by sensor
- mJson.put("sharpnessthreshold", 0.2);//filter by sharpness
- mJson.put("sharpnessthresholdlarge", 0.4);//filter by sharpness
- mJson.put("abssharpnessthreshold", 200);//filter by sharpness
- mJson.put("absgraythreshold", 35);//filter by sharpness
- mJson.put("claritythreshold", 0.1);//focus by sharpness
- mJson.put("ternimatefocusbysharpness", 0.02);//focus by sharpness
-} catch (JSONException e) {
- e.printStackTrace();
-}
-try {
- mCameraEnhancer.updateCameraSetting(mJson);
-} catch (CameraEnhancerException e) {
- e.printStackTrace();
-}
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.updateCameraSetting("{'sensorvalue':3,'graydiffthreshold':30,'conversioncountthreshold':30,'sharpnessthreshold':0.2,'sharpnessthresholdlarge':0.4,'abssharpnessthreshold':200,'absgraythreshold':35,'claritythreshold':0.1}")
-```
-
-### Update Settings from JSON file
-
-```java
-updateCameraSetting(String path) throws CameraEnhancerException
-```
-
-**Parameters**
-
-`String`: A string that refers to the file path.
-
-Java:
-
-```java
-mCameraEnhancer.updateCameraSetting("Your file path here.");
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.updateCameraSetting("Your file path here.")
-```
-
-JSON file template:
-
-```json
-{
- //Absolute sharpness value, A threshold value for controlling filter
- "abssharpnessthreshold":200,
- //Sensor value, A threshold value for controlling filter
- "sensorvalue":3,
- //A threshold value for gray scale analysis
- "graydiffthreshold":30,
- //A threshold for judging whether the device is shaking
- "sharpnessthreshold":0.2,
- //A threshold for judging whether the device is shaking violently
- "sharpnessthresholdlarge":0.4,
- //A threshold value for calculating sharpness
- "absgraythreshold":35,
- //A threshold value for controlling auto zoom
- "conversioncountthreshold":30,
- //A threshold value that controlling auto focus
- "claritythreshold":0.1
-}
-```
-
-## getVersion
-
-Users can check the current DCE version by using this API.
-
-```java
-getVersion()
-```
-
-**Return Value**
-
-`String`: The version number.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getVersion();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.version
-```
-
-## getCameraCurrentState
-
-Get the current camera status.
-
-```java
-getCameraCurrentState()
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-```java
-mCameraEnhancer.getCameraCurrentState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraCurrentState
-```
-
-## getCameraDesiredState
-
-Get the camera desired status.
-
-```java
-getCameraDesiredState()
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getCameraDesiredState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraDesiredState
-```
-
-## setCameraDesiredState
-
-Set the camera status.
-
-```java
-setCameraDesiredState(CameraState)
-```
-
-**Parameters**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setCameraDesireState(CameraState.CAMERA_STATE_OFF);
-// Or
-mCameraEnhancer.setCameraDesireState(CameraState.CAMERA_STATE_ON);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_ON)
-// Or
-mCameraEnhancer!!.setCameraDesiredState(CameraState.CAMERA_STATE_OFF)
-```
-
-## pauseCamera and resumeCamera
-
-Note: these APIs are created for pausing & resuming the camera but the camera module will still be working when paused. If you want to shut down the camera module please use `stopScanning`.
-
-```java
-void pauseCamera()
-void resumeCamera()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.pauseCamera();
-mCameraEnhancer.resumeCamera();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.pauseCamera()
-mCameraEnhancer!!.resumeCamera()
-```
-
-## stopScanning and startScanning
-
-Control the stopping & starting of the camera module.
-
-```java
-void stopScanning()
-void startScanning()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.startScanning();
-mCameraEnhancer.stopScanning();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.startScanning()
-mCameraEnhancer!!.stopScanning()
-```
-
-## addCameraListener
-
-Add the Camera Listener. From the camera listener, you can get three different kinds of frames for further usage.
-
-```java
-addCameraListener(CameraListener)
-```
-
-**Parameters**
-
-`CameraListener`: The interface [`CameraListener`]({{site.android-api-auxiliary}}interface-dceframelistener.html).
-
-**Return Value**
-
-`Frame`: The video frame captured by camera. View in class [`Frame`]({{site.android-api-auxiliary}}dceframe.html).
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.addCameraListener(new CameraListener() {
- @Override
- public void onPreviewOriginalFrame(Frame frame) {}
- @Override
- public void onPreviewFilterFrame(Frame frame) {}
- @Override
- public void onPreviewFastFrame(Frame frame) {}
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.addCameraListener(object : CameraListener {
- override fun onPreviewOriginalFrame(frame: Frame) {}
- override fun onPreviewFilterFrame(frame: Frame) {}
- override fun onPreviewFastFrame(frame: Frame) {}
-})
-```
-
-## removeCameraListener
-
-Remove the camera listener.
-
-```java
-removeCameraListener()
-```
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.removeCameraListener();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.removeCameraListener()
-```
-
-## getTorchCurrentState
-
-Get the current torch state.
-
-```java
-getTorchCurrentState()
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getTorchCurrentState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.torchCurrentState()
-```
-
-## getTorchDesiredState
-
-Get the desired torch state.
-
-```java
-getTorchDesiredState()
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getTorchDesiredState();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.torchDesiredState
-```
-
-## setTorchDesiredState
-
-Set the desired torch state.
-
-```java
-setTorchDesiredState(TorchState)
-```
-
-**Parameters**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_AUTO);
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_ON);
-mCameraEnhancer.setTorchDesiredState(TorchState.TORCH_STATE_OFF);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_AUTO)
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_ON)
-mCameraEnhancer!!.setTorchDesiredState(TorchState.TORCH_STATE_OFF)
-```
-
-## addTorchListener
-
-Add the torch listener.
-
-```java
-addTorchListener(TorchListener)
-```
-
-**Parameters**
-
-`TorchListener`: The interface [`TorchListener`]({{site.android-api-auxiliary}}interface-torchlistener.html)
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.addTorchListener(new TorchListener() {
- @Override
- public void onTorchStateChanged(TorchState torchState) {
-
- }
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.addTorchListener(object : TorchListener {
- override fun onTorchStateChanged(TorchState: torchState) {}
-})
-```
-
-## getCameraPosition
-
-DCE will use the back camera of your mobile device by default. You can use `getCameraPosition` to check which camera is activated and use `switchCameraPosition` to change the setting.
-
-```java
-getCameraPosition()
-```
-
-**Return Value**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getCameraPosition();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.cameraPosition
-```
-
-## switchCameraPosition
-
-Change the camera position. Switch between the front or back camera.
-
-```java
-switchCameraPosition(CameraPosition)
-```
-
-**Parameters**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.switchCameraPosition(CameraPosition.CAMERA_POSITION_USER);
-mCameraEnhancer.switchCameraPosition(CameraPosition.CAMERA_POSITION_WORLD);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.switchCameraPosition(CameraPosition.CAMERA_POSITION_USER)
-mCameraEnhancer!!.switchCameraPosition(CameraPosition.CAMERA_POSITION_WORLD)
-```
-
-## getResolution
-
-Get the current resolution settings.
-
-```java
-getResolution()
-```
-
-**Return Value**
-
-`Resolution`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getResolution();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.resolution
-```
-
-## setResolution
-
-Set the resolution.
-
-```java
-setResolution(Resolution)
-```
-
-**Parameters**
-
-`Resolution`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setResolution(Resolution.RESOLUTION_1080P);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setResolution(Resolution.RESOLUTION_1080P)
-```
-
-## getResolutionList
-
-Get all the available resolution value of the device.
-
-```java
-getResolutionList()
-```
-
-**Return Value**
-
-`List`: The device available Resolution: The device available resolution list. This resolution list might be different from the value of parameter `Resolution`.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.getResolutionList();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.resolutionList
-```
-
-**Remarks**
-
-If the pre-set resolution is unavailable for the current device, the SDK will select the highest available resolution below the pre-set value.
diff --git a/programming-old/android/primary-api/initialization-v1.0.3.md b/programming-old/android/primary-api/initialization-v1.0.3.md
deleted file mode 100644
index 311d2879..00000000
--- a/programming-old/android/primary-api/initialization-v1.0.3.md
+++ /dev/null
@@ -1,60 +0,0 @@
----
-layout: default-layout
-title: Initialization Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Initialization Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Initialization Methods
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Initialization Methods
-permalink: /programming/android/primary-api/initialization-v1.0.3.html
----
-
-# Initialization Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`](#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-## initLicenseFromDLS
-
-Initialize the `CameraEnhancer` from the license server.
-
-```java
-void initLicenseFromDLS(CameraDLSLicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`CameraDLSLicenseVerificationListener`: The interface [`CameraDLSLicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener-v1.0.3.html).
-
-**Code Snippet**
-
-Java:
-
-```java
-CameraEnhancer mCameraEnhancer = new CameraEnhancer(MainActivity.this);
-mCameraEnhancer.addCameraView(cameraView);
-com.dynamsoft.dce.DMDLSConnectionParameters info = new com.dynamsoft.dce.DMDLSConnectionParameters();
-info.organizationID = "Put your organizationID here.";
-mCameraEnhancer.initLicenseFromDLS(info,new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){ error.printStackTrace(); }
- }
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer = CameraEnhancer(this@MainActivity)
-mCameraEnhancer!!.addCameraView(cameraView)
-val info = com.dynamsoft.dce.DMDLSConnectionParameters()
-info.organizationID = "Put your organizationID here."
-mCameraEnhancer!!.initLicenseFromDLS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
-}
-```
diff --git a/programming-old/android/primary-api/initialization.md b/programming-old/android/primary-api/initialization.md
deleted file mode 100644
index f81ae667..00000000
--- a/programming-old/android/primary-api/initialization.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Initialization Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Initialization Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Initialization Methods
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Initialization Methods
-permalink: /programming/android/primary-api/initialization.html
----
-
-# Initialization Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`](#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-## initLicenseFromDLS
-
-Initialize the `CameraEnhancer` from the license server.
-
-```java
-void initLicenseFromDLS(CameraDLSLicenseVerificationListener listener)
-```
-
-**Parameters**
-
-`CameraDLSLicenseVerificationListener`: The interface [`CameraDLSLicenseVerificationListener`]({{ site.android-api-auxiliary }}interface-licenselistener-v1.0.3.html).
-
-**Code Snippet**
-
-Java:
-
-```java
-CameraEnhancer mCameraEnhancer = new CameraEnhancer(MainActivity.this);
-mCameraEnhancer.addCameraView(cameraView);
-com.dynamsoft.dce.DMDLSConnectionParameters info = new com.dynamsoft.dce.DMDLSConnectionParameters();
-info.organizationID = "Put your organizationID here.";
-mCameraEnhancer.initLicenseFromDLS(info,new CameraDLSLicenseVerificationListener() {
- @Override
- public void DLSLicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){ error.printStackTrace(); }
- }
-});
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer = CameraEnhancer(this@MainActivity)
-mCameraEnhancer!!.addCameraView(cameraView)
-val info = com.dynamsoft.dce.DMDLSConnectionParameters()
-info.organizationID = "Put your organizationID here."
-mCameraEnhancer!!.initLicenseFromDLS(info) { isSuccess, error ->
- if (!isSuccess) {
- error.printStackTrace()
- }
-}
-```
diff --git a/programming-old/android/primary-api/preprocess-v1.0.3.md b/programming-old/android/primary-api/preprocess-v1.0.3.md
deleted file mode 100644
index ac59fc51..00000000
--- a/programming-old/android/primary-api/preprocess-v1.0.3.md
+++ /dev/null
@@ -1,269 +0,0 @@
----
-layout: default-layout
-title: Filter Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Filter Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Filter
-needAutoGenerateSidebar: true
-breadcrumbText: Android Filter Methods
-noTitleIndex: true
-permalink: /programming/android/primary-api/preprocess-v1.0.3.html
----
-
-# Frame Preprocessing Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`AcquireListFrame`](#AcquireListFrame) | Fetch a frame from the video buffer. |
-| [`enableFastMode`](#enablefastmode) | Set true/false to turn on/off DCE fast mode. |
-| [`getEnabledFastModeStatus`](#getenabledfastmodestatus) | Get the current status of fast mode (on/off). |
-| [`enableFrameFilter`](#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`getEnabledFrameFilterStatus`](#getenabledframefilterstatus) | Get the status (on/off) of DCE frame filter mode. |
-| [`setMaxFrameRate`](#setmaxframerate) | Set max frame rate. |
-| [`enableSensorControl`](#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`getEnabledSensorControlStatus`](#getenabledsensorcontrolstatus) | Get the status (on/off) of DCE sensor control mode. |
-| [`setSensorControlThreshold`](#setsensorcontrolthreshold) | Enable user to change sensor sensitivity (default value is 50). |
-
-## AcquireListFrame
-
-Fetch a single buffered frame from the video buffer.
-
-```java
-AcquireListFrame(boolean);
-```
-
-**Parameters**
-
-`true`: If the video buffer is empty, the method will wait for the next added frame.
-`false`: If the video buffer is empty, the method will return an empty value.
-
-**Return Value**
-
-[`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html): This method returns the buffered frame data. The frame data includes the image data, width, height, strides and other frame information.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.AcquireListFrame();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.AcquireListFrame
-```
-
-## enableFastMode
-
-This API is designed for users to set up DCE fast mode. DCE fast mode will cut frames into small images that contain barcode areas to improve decoding efficiency. It is recommended to be enabled when decoding single barcodes.
-
-```java
-enableFastMode(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the fast-mode.
-`false`: Disable the fast-mode.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableFastMode(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableFastMode(true)
-```
-
-## getEnabledFastModeStatus
-
-Get the status of the fast mode.
-
-```java
-getEnabledFastModeStatus()
-```
-
-**Return Value**
-
-`true`: The fast-mode is enabled.
-`false`: The fast-mode is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledFastModeStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledFastModeStatus
-```
-
-## enableFrameFilter
-
-Use `enableFrameFilter` to turn on/off frame filter.
-
-```java
-enableFrameFilter(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the frame filter.
-`false`: Disable the frame filter.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableFrameFilter(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableFrameFilter(true)
-```
-
-## getEnabledFrameFilterStatus
-
-Get the frame filter status.
-
-```java
-getEnabledFrameFilterStatus()
-```
-
-**Return Value**
-
-`true`: The frame filter is enabled.
-`false`: The frame filter is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledFrameFilterStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledFrameFilterStatus
-```
-
-## setMaxFrameRate
-
-Set max frame rate.
-
-```java
-setMaxFrameRate(int)
-```
-
-**Parameters**
-
-`int`: A int value that stands for the max frame rate.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setMaxFrameRate(24);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setMaxFrameRate(24)
-```
-
-## enableSensorControl
-
-Use `enableSensorControl` to turn on/off sensor control mode.
-
-```java
-enableSensorControl(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the sensor filter.
-`false`: Disable the sensor filter.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableSensorControl(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableSensorControl(true)
-```
-
-## getEnabledSensorControlStatus
-
-Get the status of sensor control mode.
-
-```java
-getEnabledSensorControlStatus()
-```
-
-**Return Value**
-
-`true`: The sensor filter is enabled.
-`false`: The sensor filter is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledSensorControlStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledSensorControlStatus
-```
-
-## setSensorControlThreshold
-
-This API is designed for developers to apply different sensor sensitivity settings on different devices. The default value is 50.
-
-```java
-setSensorControlThreshold(int)
-```
-
-**Parameters**
-
-`int`: A int value that stands for the sensor filter threshold.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setSensorControlThreshold(55);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setSensorControlThreshold(55)
-```
diff --git a/programming-old/android/primary-api/preprocess.md b/programming-old/android/primary-api/preprocess.md
deleted file mode 100644
index 72482480..00000000
--- a/programming-old/android/primary-api/preprocess.md
+++ /dev/null
@@ -1,272 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Filter Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Filter Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android API references, Filter
-needAutoGenerateSidebar: true
-breadcrumbText: Android Filter Methods
-noTitleIndex: true
-permalink: /programming/android/primary-api/preprocess.html
----
-
-# Frame Preprocessing Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-| ------ | ----------- |
-| [`AcquireListFrame`](#acquirelistframe) | Fetch a frame from the video buffer. |
-| [`enableFastMode`](#enablefastmode) | Set true/false to turn on/off DCE fast mode. |
-| [`getEnabledFastModeStatus`](#getenabledfastmodestatus) | Get the current status of fast mode (on/off). |
-| [`enableFrameFilter`](#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`getEnabledFrameFilterStatus`](#getenabledframefilterstatus) | Get the status (on/off) of DCE frame filter mode. |
-| [`setMaxFrameRate`](#setmaxframerate) | Set max frame rate. |
-| [`enableSensorControl`](#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`getEnabledSensorControlStatus`](#getenabledsensorcontrolstatus) | Get the status (on/off) of DCE sensor control mode. |
-| [`setSensorControlThreshold`](#setsensorcontrolthreshold) | Enable user to change sensor sensitivity (default value is 50). |
-
-## AcquireListFrame
-
-Fetch a single buffered frame from the video buffer.
-
-```java
-AcquireListFrame(boolean);
-```
-
-**Parameters**
-
-`true`: If the video buffer is empty, the method will wait for the next added frame.
-`false`: If the video buffer is empty, the method will return an empty value.
-
-**Return Value**
-
-[`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html): This method returns the buffered frame data. The frame data includes the image data, width, height, strides and other frame information.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.AcquireListFrame();
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.AcquireListFrame
-```
-
-## enableFastMode
-
-This API is designed for users to set up DCE fast mode. DCE fast mode will cut frames into small images that contain barcode areas to improve decoding efficiency. It is recommended to be enabled when decoding single barcodes.
-
-```java
-enableFastMode(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the fast-mode.
-`false`: Disable the fast-mode.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableFastMode(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableFastMode(true)
-```
-
-## getEnabledFastModeStatus
-
-Get the status of the fast mode.
-
-```java
-getEnabledFastModeStatus()
-```
-
-**Return Value**
-
-`true`: The fast-mode is enabled.
-`false`: The fast-mode is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledFastModeStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledFastModeStatus
-```
-
-## enableFrameFilter
-
-Use `enableFrameFilter` to turn on/off frame filter.
-
-```java
-enableFrameFilter(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the frame filter.
-`false`: Disable the frame filter.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableFrameFilter(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableFrameFilter(true)
-```
-
-## getEnabledFrameFilterStatus
-
-Get the frame filter status.
-
-```java
-getEnabledFrameFilterStatus()
-```
-
-**Return Value**
-
-`true`: The frame filter is enabled.
-`false`: The frame filter is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledFrameFilterStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledFrameFilterStatus
-```
-
-## setMaxFrameRate
-
-Set max frame rate.
-
-```java
-setMaxFrameRate(int)
-```
-
-**Parameters**
-
-`int`: A int value that stands for the max frame rate.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setMaxFrameRate(24);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setMaxFrameRate(24)
-```
-
-## enableSensorControl
-
-Use `enableSensorControl` to turn on/off sensor control mode.
-
-```java
-enableSensorControl(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the sensor filter.
-`false`: Disable the sensor filter.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableSensorControl(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableSensorControl(true)
-```
-
-## getEnabledSensorControlStatus
-
-Get the status of sensor control mode.
-
-```java
-getEnabledSensorControlStatus()
-```
-
-**Return Value**
-
-`true`: The sensor filter is enabled.
-`false`: The sensor filter is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledSensorControlStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledSensorControlStatus
-```
-
-## setSensorControlThreshold
-
-This API is designed for developers to apply different sensor sensitivity settings on different devices. The default value is 50.
-
-```java
-setSensorControlThreshold(int)
-```
-
-**Parameters**
-
-`int`: A int value that stands for the sensor filter threshold.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setSensorControlThreshold(55);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setSensorControlThreshold(55)
-```
diff --git a/programming-old/android/primary-api/zoom-focus-v1.0.3.md b/programming-old/android/primary-api/zoom-focus-v1.0.3.md
deleted file mode 100644
index 460d9da9..00000000
--- a/programming-old/android/primary-api/zoom-focus-v1.0.3.md
+++ /dev/null
@@ -1,449 +0,0 @@
----
-layout: default-layout
-title: Focus & Zoom Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Focus & Zoom Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Focus, Zoom, Android API Reference
-needAutoGenerateSidebar: true
-breadcrumbText: Android Zoom and Focus
-noTitleIndex: true
-permalink: /programming/android/primary-api/zoom-focus-v1.0.3.html
----
-
-# Focus & Zoom Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`setAutoFocusPosition`](#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`](#setmanualfocusposition) | Set manual focus position (This focus position is only effected once for each time the API is called). |
-| [`setFocalLength`](#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`](#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`getEnabledDCEAutoFocusStatus`](#getenableddceautofocusstatus) | Get the status (on/off) of DCE auto focus. |
-| [`enableDefaultAutoFocus`](#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`getEnabledDefaultAutoFocusStatus`](#getenableddefaultautofocusstatus) | Get the status (on/off) of camera default auto focus. |
-| [`enableRegularAutoFocus`](#enableregularautofocus) | If this is true, camera will auto focus every 3 seconds. This focus mode will start automatically if DCE auto focus is enabled. Users can manually quit this focus mode when DCE auto focus is activated. |
-| [`getEnabledRegularAutoFocusStatus`](#getenabledregularautofocusstatus) | Get the current status (on/off) of this auto focus mode. |
-| [`setRegularAutoFocusParam`](#setregularautofocusparam) | Set the time interval and terminate time for the regular auto focus |
-| [`enableAutoFocusOnSharpnessChange`](#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. This focus mode will start automatically if DCE autofocus is enabled. Users can manually quit this focus mode when DCE autofocus is activated. |
-| [`getEnabledAutoFocusOnSharpnessChangeStatus`](#getenabledautofocusonsharpnesschangestatus) | Get the current status (on/off) of this auto focus mode. |
-| [`enableAutoZoom`](#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`getEnabledAutoZoomStatus`](#getenabledautozoomstatus) | Get the status (on/off) of auto zoom mode. |
-| [`setZoomFactor`](#setzoomfactor) | Set zoom factor. |
-
-## setAutoFocusPosition
-
-Set the position that you want to auto focus at. This setting will replace the default focus value and always focus on the set point.
-
-```java
-setAutoFocusPosition(float, float)
-```
-
-**Parameters**
-
-`X`: A float value that stands for the X coordinate of the focus position.
-`Y`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setAutoFocusPosition(0.5f,0.6f);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setAutoFocusPosition(0.5f,0.6f)
-```
-
-## setManualFocusPosition
-
-Set the manual focus position. This position only takes effect once when this API is called.
-
-```java
-setAutoFocusPosition(int, int)
-```
-
-**Parameters**
-
-`X`: The int pixel value that stands for the X coordinate of the focus position.
-`Y`: The int pixel value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-Java:
-
-```java
-//The focus position will be 200 pixel from left and 300 pixel from top.
-mCameraEnhancer.setManualFocusPosition(200, 300);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setManualFocusPosition(200,300)
-```
-
-## setFocalLength
-
-Set the focal length (float). The range of focal length is from 0 to 10. The value is a precentage. If user sets `setFocalLength(5);` it means the focal length will be 50% of the maxium focal length of the camera. Please note, If this API is called to set a focal length, the focal length will be fixed and all other auto focus mode will be disabled. To quit this fixed focal length mode, please set the focal length into -1.
-
-```java
-setFocalLength(float)
-```
-
-**Parameters**
-
-`float`: A float value between 0 to 10 that stands for the focal length. You can input -1 to quit the fixed focal length mode.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setFocalLength(8.5);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setFocalLength(8.5)
-```
-
-To quit:
-
-Java:
-
-```java
-mCameraEnhancer.setFocalLength(-1);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setFocalLength(-1)
-```
-
-## enableDCEAutoFocus
-
-This API is designed to turn on DCE auto focus mode which is specially designed and is separate from the systems default auto focus mode. DCE auto focus and the default auto focus can work together at the same time without any conflict. The above focus settings are also available for controlling system default auto focus.
-
-```java
-enableDCEAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the DCE auto focus.
-`false`: Disable the DCE auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableDCEAutoFocus(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableDCEAutoFocus(true)
-```
-
-## getEnabledDCEAutoFocusStatus
-
-Get the status (on/off) of DCE autofocus mode:
-
-```java
-getEnabledDCEAutoFocusStatus()
-```
-
-**Return Value**
-
-`true`: The DCE auto focus is enabled.
-`false`: The DCE auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledDCEAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledDCEAutoFocusStatus
-```
-
-## enableDefaultAutoFocus
-
-This API is designed for controlling the system default autofocus.
-
-```java
-enableDefaultAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the default auto focus.
-`false`: Disable the default auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableDefaultAutoFocus(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableDefaultAutoFocus(false)
-```
-
-## getEnabledDefaultAutoFocusStatus
-
-To get status (on/off) of Default autofocus mode:
-
-```java
-getEnabledDefaultAutoFocusStatus()
-```
-
-**Return Value**
-
-`true`: The default auto focus is enabled.
-`false`: The default auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledDefaultAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledDefaultAutoFocusStatus
-```
-
-## enableRegularAutoFocus
-
-Regular auto focus is an advanced setting that enables the camera to auto focus every 3 seconds. It is contained in DCE auto focus. When DCE auto focus is enabled, regular auto focus is enabled as well. To turn off regular auto focus mode:
-
-```java
-enableRegularAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the regular auto focus.
-`false`: Disable the regular auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableRegularAutoFocus(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableRegularAutoFocus(false)
-```
-
-## getEnabledRegularAutoFocusStatus
-
-Get status (on/off) of regular autofocus mode:
-
-```java
-getEnabledRegularAutoFocusStatus()
-```
-
-**Parameters**
-
-`true`: The regular auto focus is enabled.
-`false`: The regular auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledRegularAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledRegularAutoFocusStatus
-```
-
-## setRegularAutoFocusParam
-
-You can set the focus interval time and focus terminate time in regular auto focus mode. Please use `setregularautofocusparam` to make these settings.
-
-```java
-setRegularAutoFocusParam(int, int)
-```
-
-**Parameters**
-
-`int`: Focus interval, Default value is 3000 (millisecond), which means the camera will auto focus for every 3000 milliseconds.
-`int`: Terminate time, Default value is 500 (millisecond), which means the camera will not focus once again within 500 milliseconds.
-
-**Code Snippet**
-
-Java:
-
-```java
-// Set focus interval = 3000 and focus terminate time = 500.
-mCameraEnhancer.setRegularAutoFocusParam(3000, 500);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setRegularAutoFocusParam(3000,500)
-```
-
-## enableAutoFocusOnSharpnessChange
-
-This API is another advanced setting that enabled the camera to autofocus when sharpness change is detected between contiguous frames. The same with regular autofocus, this focus mode is also enabled by default when DCE autofocus is enabled. To turn off camera autofocus when sharpness changes:
-
-```java
-enableAutoFocusOnSharpnessChange(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the sharpness auto focus.
-`false`: Disable the sharpness auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableAutoFocusOnSharpnessChange(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableAutoFocusOnSharpnessChange(false)
-```
-
-## getEnabledAutoFocusOnSharpnessChangeStatus
-
-Get the status (on/off) of the sharpness autofocus mode:
-
-```java
-getEnabledAutoFocusOnSharpnessChangeStatus()
-```
-
-**Return Value**
-
-`true`: The sharpness auto focus is enabled.
-`false`: The sharpness auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledAutoFocusOnSharpnessChangeStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledAutoFocusOnSharpnessChangeStatus
-```
-
-## enableAutoZoom
-
-This auto zoom mode is specially designed for Dynamsoft Barcode Reader users. The barcode reader can always get a localization result even if it fails on decoding. DCE auto zoom will enable the camera to approach the localized barcode area if the barcode reader got a localization result but failed to get a barcode result.
-
-```java
-enableAutoZoom(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the auto zoom.
-`false`: Disable the auto zoom.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableAutoZoom(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableAutoZoom(true)
-```
-
-## getEnabledAutoZoomStatus
-
-Get the status (on/off) of autozoom mode:
-
-```java
-getEnabledAutoZoomStatus()
-```
-
-**Return Value**
-
-`true`: The auto zoom is enabled.
-`false`: The auto zoom is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledAutoZoomStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledAutoZoomStatus
-```
-
-## setZoomFactor
-
-Set the zoom factor (float).
-
-```java
-setZoomFactor(float)
-```
-
-**Parameters**
-
-`float`: A float value that stands for the zoom factor.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setZoomFactor(1.5f);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setZoomFactor(1.5f)
-```
diff --git a/programming-old/android/primary-api/zoom-focus.md b/programming-old/android/primary-api/zoom-focus.md
deleted file mode 100644
index a3b9e85f..00000000
--- a/programming-old/android/primary-api/zoom-focus.md
+++ /dev/null
@@ -1,452 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Focus & Zoom Methods - Dynamsoft Camera Enhancer Android API references
-description: This is the documentation - Android API references - Focus & Zoom Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Focus, Zoom, Android API Reference
-needAutoGenerateSidebar: true
-breadcrumbText: Android Zoom and Focus
-noTitleIndex: true
-permalink: /programming/android/primary-api/zoom-focus.html
----
-
-# Focus & Zoom Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-| ------ | ----------- |
-| [`setAutoFocusPosition`](#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`](#setmanualfocusposition) | Set manual focus position (This focus position is only effected once for each time the API is called). |
-| [`setFocalLength`](#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`](#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`getEnabledDCEAutoFocusStatus`](#getenableddceautofocusstatus) | Get the status (on/off) of DCE auto focus. |
-| [`enableDefaultAutoFocus`](#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`getEnabledDefaultAutoFocusStatus`](#getenableddefaultautofocusstatus) | Get the status (on/off) of camera default auto focus. |
-| [`enableRegularAutoFocus`](#enableregularautofocus) | If this is true, camera will auto focus every 3 seconds. This focus mode will start automatically if DCE auto focus is enabled. Users can manually quit this focus mode when DCE auto focus is activated. |
-| [`getEnabledRegularAutoFocusStatus`](#getenabledregularautofocusstatus) | Get the current status (on/off) of this auto focus mode. |
-| [`setRegularAutoFocusParam`](#setregularautofocusparam) | Set the time interval and terminate time for the regular auto focus |
-| [`enableAutoFocusOnSharpnessChange`](#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. This focus mode will start automatically if DCE autofocus is enabled. Users can manually quit this focus mode when DCE autofocus is activated. |
-| [`getEnabledAutoFocusOnSharpnessChangeStatus`](#getenabledautofocusonsharpnesschangestatus) | Get the current status (on/off) of this auto focus mode. |
-| [`enableAutoZoom`](#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`getEnabledAutoZoomStatus`](#getenabledautozoomstatus) | Get the status (on/off) of auto zoom mode. |
-| [`setZoomFactor`](#setzoomfactor) | Set zoom factor. |
-
-## setAutoFocusPosition
-
-Set the position that you want to auto focus at. This setting will replace the default focus value and always focus on the set point.
-
-```java
-setAutoFocusPosition(float, float)
-```
-
-**Parameters**
-
-`X`: A float value that stands for the X coordinate of the focus position.
-`Y`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setAutoFocusPosition(0.5f,0.6f);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setAutoFocusPosition(0.5f,0.6f)
-```
-
-## setManualFocusPosition
-
-Set the manual focus position. This position only takes effect once when this API is called.
-
-```java
-setAutoFocusPosition(int, int)
-```
-
-**Parameters**
-
-`X`: The int pixel value that stands for the X coordinate of the focus position.
-`Y`: The int pixel value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-Java:
-
-```java
-//The focus position will be 200 pixel from left and 300 pixel from top.
-mCameraEnhancer.setManualFocusPosition(200, 300);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setManualFocusPosition(200,300)
-```
-
-## setFocalLength
-
-Set the focal length (float). The range of focal length is from 0 to 10. The value is a precentage. If user sets `setFocalLength(5);` it means the focal length will be 50% of the maxium focal length of the camera. Please note, If this API is called to set a focal length, the focal length will be fixed and all other auto focus mode will be disabled. To quit this fixed focal length mode, please set the focal length into -1.
-
-```java
-setFocalLength(float)
-```
-
-**Parameters**
-
-`float`: A float value between 0 to 10 that stands for the focal length. You can input -1 to quit the fixed focal length mode.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setFocalLength(8.5);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setFocalLength(8.5)
-```
-
-To quit:
-
-Java:
-
-```java
-mCameraEnhancer.setFocalLength(-1);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setFocalLength(-1)
-```
-
-## enableDCEAutoFocus
-
-This API is designed to turn on DCE auto focus mode which is specially designed and is separate from the systems default auto focus mode. DCE auto focus and the default auto focus can work together at the same time without any conflict. The above focus settings are also available for controlling system default auto focus.
-
-```java
-enableDCEAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the DCE auto focus.
-`false`: Disable the DCE auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableDCEAutoFocus(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableDCEAutoFocus(true)
-```
-
-## getEnabledDCEAutoFocusStatus
-
-Get the status (on/off) of DCE autofocus mode:
-
-```java
-getEnabledDCEAutoFocusStatus()
-```
-
-**Return Value**
-
-`true`: The DCE auto focus is enabled.
-`false`: The DCE auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledDCEAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledDCEAutoFocusStatus
-```
-
-## enableDefaultAutoFocus
-
-This API is designed for controlling the system default autofocus.
-
-```java
-enableDefaultAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the default auto focus.
-`false`: Disable the default auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableDefaultAutoFocus(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableDefaultAutoFocus(false)
-```
-
-## getEnabledDefaultAutoFocusStatus
-
-To get status (on/off) of Default autofocus mode:
-
-```java
-getEnabledDefaultAutoFocusStatus()
-```
-
-**Return Value**
-
-`true`: The default auto focus is enabled.
-`false`: The default auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledDefaultAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledDefaultAutoFocusStatus
-```
-
-## enableRegularAutoFocus
-
-Regular auto focus is an advanced setting that enables the camera to auto focus every 3 seconds. It is contained in DCE auto focus. When DCE auto focus is enabled, regular auto focus is enabled as well. To turn off regular auto focus mode:
-
-```java
-enableRegularAutoFocus(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the regular auto focus.
-`false`: Disable the regular auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableRegularAutoFocus(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableRegularAutoFocus(false)
-```
-
-## getEnabledRegularAutoFocusStatus
-
-Get status (on/off) of regular autofocus mode:
-
-```java
-getEnabledRegularAutoFocusStatus()
-```
-
-**Parameters**
-
-`true`: The regular auto focus is enabled.
-`false`: The regular auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledRegularAutoFocusStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledRegularAutoFocusStatus
-```
-
-## setRegularAutoFocusParam
-
-You can set the focus interval time and focus terminate time in regular auto focus mode. Please use `setregularautofocusparam` to make these settings.
-
-```java
-setRegularAutoFocusParam(int, int)
-```
-
-**Parameters**
-
-`int`: Focus interval, Default value is 3000 (millisecond), which means the camera will auto focus for every 3000 milliseconds.
-`int`: Terminate time, Default value is 500 (millisecond), which means the camera will not focus once again within 500 milliseconds.
-
-**Code Snippet**
-
-Java:
-
-```java
-// Set focus interval = 3000 and focus terminate time = 500.
-mCameraEnhancer.setRegularAutoFocusParam(3000, 500);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setRegularAutoFocusParam(3000,500)
-```
-
-## enableAutoFocusOnSharpnessChange
-
-This API is another advanced setting that enabled the camera to autofocus when sharpness change is detected between contiguous frames. The same with regular autofocus, this focus mode is also enabled by default when DCE autofocus is enabled. To turn off camera autofocus when sharpness changes:
-
-```java
-enableAutoFocusOnSharpnessChange(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the sharpness auto focus.
-`false`: Disable the sharpness auto focus.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableAutoFocusOnSharpnessChange(false);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableAutoFocusOnSharpnessChange(false)
-```
-
-## getEnabledAutoFocusOnSharpnessChangeStatus
-
-Get the status (on/off) of the sharpness autofocus mode:
-
-```java
-getEnabledAutoFocusOnSharpnessChangeStatus()
-```
-
-**Return Value**
-
-`true`: The sharpness auto focus is enabled.
-`false`: The sharpness auto focus is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledAutoFocusOnSharpnessChangeStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledAutoFocusOnSharpnessChangeStatus
-```
-
-## enableAutoZoom
-
-This auto zoom mode is specially designed for Dynamsoft Barcode Reader users. The barcode reader can always get a localization result even if it fails on decoding. DCE auto zoom will enable the camera to approach the localized barcode area if the barcode reader got a localization result but failed to get a barcode result.
-
-```java
-enableAutoZoom(boolean)
-```
-
-**Parameters**
-
-`true`: Enable the auto zoom.
-`false`: Disable the auto zoom.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.enableAutoZoom(true);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.enableAutoZoom(true)
-```
-
-## getEnabledAutoZoomStatus
-
-Get the status (on/off) of autozoom mode:
-
-```java
-getEnabledAutoZoomStatus()
-```
-
-**Return Value**
-
-`true`: The auto zoom is enabled.
-`false`: The auto zoom is disabled.
-
-**Code Snippet**
-
-Java:
-
-```java
-boolean x = mCameraEnhancer.getEnabledAutoZoomStatus();
-```
-
-Kotlin:
-
-```kotlin
-var x:boolean? = mCameraEnhancer!!.enabledAutoZoomStatus
-```
-
-## setZoomFactor
-
-Set the zoom factor (float).
-
-```java
-setZoomFactor(float)
-```
-
-**Parameters**
-
-`float`: A float value that stands for the zoom factor.
-
-**Code Snippet**
-
-Java:
-
-```java
-mCameraEnhancer.setZoomFactor(1.5f);
-```
-
-Kotlin:
-
-```kotlin
-mCameraEnhancer!!.setZoomFactor(1.5f)
-```
diff --git a/programming-old/android/release-note/release-notes-1.x.md b/programming-old/android/release-note/release-notes-1.x.md
deleted file mode 100644
index 31d99025..00000000
--- a/programming-old/android/release-note/release-notes-1.x.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: default-layout
-title: Android 1.x Release Note - Dynamsoft Camera Enhancer
-description: This is the documentation - Android 1.x Release Note page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android 1.x Release Note
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android 1.x Release Note
-permalink: /programming/android/release-note/release-notes-1.x.html
----
-
-# Release Notes - Android 1.x
-
-## 1.0.3 (07/20/2021)
-
-### New
-
-- Add Interface `CameraDLSLicenseVerificationListener` and callback `DLSLicenseVerificationCallback` to replace `CameraLTSLicenseVerificationListener` and `LTSLicenseVerificationCallback`.
-- Added class `DMDLSConnectionParameters` to replace class `DMLTSConnectionParameters`.
-- Added method `initLicenseFromDLS` in `CameraEnhancer` class to replace `initLicenseFromLTS`.
-
-## 1.0.1 (06/10/2021)
-
-### New
-
-- Added a new property [`products`]({{ site.android-api-auxiliary }}dlsconnection.html#products) in class `DMLTSConnectionParameters`.
-- Added a new enumeration [`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct){:target="_blank"}.
-
-## 1.0.0 (04/29/2021)
-
-- Video frame queue is available.
-- Supports frame cropping mode.
-- Supports regular camera control.
-- Supports autofocus mode.
-- Supports sensor control mode.
-- Supports frame sharpness filter mode.
-- Supports autozoom mode.
diff --git a/programming-old/android/release-note/release-notes-2.x.md b/programming-old/android/release-note/release-notes-2.x.md
deleted file mode 100644
index eeb38a55..00000000
--- a/programming-old/android/release-note/release-notes-2.x.md
+++ /dev/null
@@ -1,184 +0,0 @@
----
-layout: default-layout
-title: Android 2.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - Android 2.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android 2.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android 2.x Release Notes
-permalink: /programming/android/release-note/release-notes-2.x.html
----
-
-# Release Notes - Android 2.x
-
-## 2.3.20 (03/21/2024)
-
-### Changed
-
-- Internal changes on the torch controlling logics.
-
-## 2.3.12 (12/19/2023)
-
-### Fixed
-
-- Added internal changes to prevent crashes on cross-platform apps.
-
-## 2.3.11 (02/14/2023)
-
-### Fixed
-
-- Fixed a crash bug on the devices that do not support 16:9 size resolution.
-
-## 2.3.10 (12/13/2022)
-
-### New
-
-- Override method [`setFocus`](../primary-api/camera-enhancer.html#setfocussubsequentfocusmode) in `CameraEnhancer` class for users to specify the subsequent focus mode after triggering a focus. Enumeration [`EnumFocusMode`]({{ site.dce-enums }}focus-mode.html?lang=android) is added to specify the focus mode.
-- Added a new method [`setAutoZoomRange`](../primary-api/camera-enhancer.html#setautozoomrange) in `CameraEnhancer` for users to specify a range for the auto-zoom feature of the library.
-- Added an interface [`DCECameraStateListener`](../auxiliary-api/interface-dcecamerastatelistener.html) to receive a callback when the camera state changes. You can add the protocol via a new method [`setCameraStateListener`](../primary-api/camera-enhancer.html#setcamerastatelistener).
-- Added a new method [`getVisibleRegionOfVideo`](../auxiliary-api/dcecameraview.html#getvisibleregionofvideo) in `DCECameraView` class
-
-### Deprecated
-
-- Deprecated method `pause` and `resume` in `CameraEnhancer` class.
-
-### Fixed
-
-- Fixed a bug that might cause thread blocking when using an offline license.
-- Fixed a bug that UI might be blocked when the screen is locked and reopened.
-- Fixed a bug that might cause memory churn when the instance/thread was created frequently.
-
-## 2.3.5 (11/04/2022)
-
-- Fixed a bug that might throws exception when triggering `CameraEnhancer.close` after triggering `CameraEnhancer.pause`.
-
-## 2.3.4 (09/22/2022)
-
-- Fixed a bug that camera might not be opened after camera permission is allowed.
-
-## 2.3.3 (08/18/2022)
-
-### Fixed
-
-- Fixed a bug that might cause camera crash when the `DCECameraView` is quit without destroying.
-
-- Fixed a deformation bug of `DCECameraView` when the screen rotated.
-
-## 2.3.2 (08/02/2022)
-
-### New
-
-- Added methods [`selectCamera(EnumCameraPosition)`](../primary-api/camera-enhancer.html#selectcameraenumcameraposition) and [`getCameraPosition`](../primary-api/camera-enhancer.html#getcameraposition) for users to switch between the front-facing camera and the back-facing camera.
-- Added enumeration [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android).
-
-### Fixed
-
-- Fixed a null pointer bug that might occur when rotating the `DCECameraView`.
-- Fixed a crash bug when some methods are called in child thread.
-
-## 2.3.0 (06/28/2022)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.3.0.md -%}
-
-
-
-### Changelog
-
-- Added the following APIs for capturing photos:
- - [`DCEPhotoListener`]({{site.android-api-auxiliary}}interface-dcephotolistener.html): The interface that includes method [`photoOutputCallback`]({{site.android-api-auxiliary}}interface-dcephotolistener.html#photooutputcallback) which is triggered when a photo is captured. JPEG-encoded photo can be received via the method [`photoOutputCallback`]({{site.android-api-auxiliary}}interface-dcephotolistener.html#photooutputcallback).
- - [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto): Triggers photo capturing.
-- Added a new class [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html). The following APIs are available in the class:
- - [`vibrate`]({{site.android-api-auxiliary}}dcefeedback.html#vibrate): Triggers a vibration.
- - [`Beep`]({{site.android-api-auxiliary}}dcefeedback.html#beep): Triggers a beep sound.
-- Added a new method [`getMaxZoomFactor`]({{site.android-api}}camera-enhancer.html#getmaxzoomfactor) which returns the maximum available zoom factor of the device.
-
-## 2.1.4 (05/26/2022)
-
-### New
-
-- Added support for [ISO and exposure time settings]({{ site.reference }}).
-
-### Fixed
-
-- Fixed the memory leaks caused by the misuse of the Context instance.
-- Fixed a bug where some delay might happen in initiating licenses when using along with Dynamsoft Barcode Reader Mobile Edition.
-
-### Deprecated
-
-- `CameraEnhancer.setFrameRate`
-
-## 2.1.3 (03/02/2022)
-
-### Fixed
-
-- Fixed a bug that might cause a crash on Android emulator when used together with `DynamsoftBarcodeReader`.
-
-## 2.1.1 (12/28/2021)
-
-### New
-
-- Added a new feature `SMART_TORCH`. Users can enable this feature via the method [`enableFeatures`]({{site.android-api}}camera-enhancer.html#enablefeatures) by specifying `EF_SMART_TORCH`. When `SMART_TORCH` is enabled, a torch button will be displayed automatically when the environment light level is low. Users can click on the torch button to turn on/off the torchlight.
-- Overwrite `DCECameraView` method [`setTorchButton`]({{site.android-api-auxiliary}}dcecameraview.html#settorchbutton). Users can set the position, size and image of the torch button. The previous `setTorchButton` method is deprecated.
-
-### Fixed
-
-- Fixed a bug that might affect the processing speed.
-- Fixed a bug that `enableFeatures` might not have effects.
-
-## 2.1.0 (12/16/2021)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.1.0.md -%}
-
-
-
-### Changelog
-
-#### Added
-
-- Added method [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion) and [`getScanRegion`]({{site.android-api}}camera-enhancer.html#getscanregion) to [`CameraEnhancer`]({{site.android-api}}camera-enhancer.html) class for users to set or get the region of interest. The scan region will determine how frames will be cropped.
-- Added class [`RegionDefinition`]({{site.android-api-auxiliary}}region-definition.html). The class will be used to define the parameters for method [`setScanRegion`]({{site.android-api}}camera-enhancer.html#setscanregion).
-- Added method [`setScanRegionVisible`]({{site.android-api}}camera-enhancer.html#setscanregionvisible) and [`getScanRegionVisible`]({{site.android-api}}camera-enhancer.html#getscanregionvisible) to control and check the visibility of the scan region.
-- Added method [`setTorchButton`]({{site.android-api-auxiliary}}dcecameraview.html#settorchbutton) to [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html) class for users to set the position of the torch button. Methods [`setTorchButtonVisible`]({{site.android-api-auxiliary}}dcecameraview.html#settorchbuttonvisible) and [`getTorchButtonVisible`]({{site.android-api-auxiliary}}dcecameraview.html#gettorchbuttonvisible) are added to set and check the visibility of the torch button.
-- Extended the JSON template of [`updateAdvancedSettingsFromFile`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromfile) and [`updateAdvancedSettingsFromString`]({{site.android-api}}camera-enhancer.html#updateadvancedsettingsfromstring). Added fast mode configuration parameters to the template.
-
-## 2.0.0 (10/19/2021)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.0.0.md -%}
-
-
-
-### Changelog
-
-#### Improved
-
-- Updated the mechanism of the video buffer. The capability of real-time frame processing and transferring is improved.
-
-#### Fixed
-
-- Fixed a bug that might cause incorrect device count.
-
-#### Breaking Change(s)
-
-- Added method [`initLicense`]({{site.android-api}}camera-enhancer.html#initlicense) to replace `initLicenseFromDLS`.
-- Upgraded the [`basic camera-control APIs`]({{site.android-api}}camera-enhancer.html#basic-camera-control-methods).
-- Upgraded the usage of [`camera enhancer features`]({{site.android-api}}camera-enhancer.html#enhanced-features).
-- Renamed class `CameraView` to [`DCECameraView`]({{site.android-api-auxiliary}}dcecameraview.html). The features of the class are extended as well.
-- Renamed class `Frame` to [`DCEFrame`]({{site.android-api-auxiliary}}dceframe.html). The features of the class are extended as well.
diff --git a/programming-old/android/release-note/release-notes-3.x.md b/programming-old/android/release-note/release-notes-3.x.md
deleted file mode 100644
index 0202ca2a..00000000
--- a/programming-old/android/release-note/release-notes-3.x.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: default-layout
-title: Android 3.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - Android 3.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android 3.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android 3.x Release Notes
-permalink: /programming/android/release-note/release-notes-3.x.html
----
-
-# Release Notes - Android 3.x
-
-## 3.0.3 (02/15/2023)
-
-* Fixed a crash bug on the devices that do not support 16:9 size resolution.
-
-## 3.0.2 (02/02/2023)
-
-* Override method [`setFocus`](../primary-api/camera-enhancer.html#setfocussubsequentfocusmode) in `CameraEnhancer` class for users to specify the subsequent focus mode after triggering a focus. Enumeration [`EnumFocusMode`]({{ site.dce-enums }}focus-mode.html?lang=android) is added to specify the focus mode.
-* Added a new method [`setAutoZoomRange`](../primary-api/camera-enhancer.html#setautozoomrange) in `CameraEnhancer` for users to specify a range for the auto-zoom feature of the library.
-* Added an interface [`DCECameraStateListener`](../auxiliary-api/interface-dcecamerastatelistener.html) to receive a callback when the camera state changes. You can add the interface via a new method [`setCameraStateListener`](../primary-api/camera-enhancer.html#setcamerastatelistener).
-* Added a new method [`getVisibleRegionOfVideo`](../auxiliary-api/dcecameraview.html#getvisibleregionofvideo) in `DCECameraView` class
-* Deprecated method `pause` and `resume` in `CameraEnhancer` class.
-* Fixed a bug that might cause thread blocking when using an offline license.
-* Fixed a bug that UI might be blocked when the screen is locked and reopened.
-* Fixed a bug that might cause memory churn when the instance/thread was created frequently.
-* Fixed a bug that might throws exception when triggering `CameraEnhancer.close` after triggering `CameraEnhancer.pause`.
-* Fixed a bug that camera might not be opened after camera permission is allowed.
-* Fixed a bug that might cause camera crash when the `DCECameraView` is quit without destroying.
-* Fixed a deformation bug of `DCECameraView` when the screen rotated.
-
-## 3.0.1 (09/29/2022)
-
-* Added methods [`selectCamera(EnumCameraPosition)`](../primary-api/camera-enhancer.html#selectcameraenumcameraposition) and [`getCameraPosition`](../primary-api/camera-enhancer.html#getcameraposition) for users to switch between the front-facing camera and the back-facing camera.
-* Added enumeration [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android).
-* Added a new class [`DCEFeedback`]({{site.android-api-auxiliary}}dcefeedback.html). The following APIs are available in the class:
- * [`vibrate`]({{site.android-api-auxiliary}}dcefeedback.html#vibrate): Triggers a vibration.
- * [`Beep`]({{site.android-api-auxiliary}}dcefeedback.html#beep): Triggers a beep sound.
-* Added the following APIs for capturing photos:
- * [`DCEPhotoListener`]({{site.android-api-auxiliary}}interface-dcephotolistener.html): The interface that includes method [`photoOutputCallback`]({{site.android-api-auxiliary}}interface-dcephotolistener.html#photooutputcallback) which is triggered when a photo is captured. JPEG-encoded photo can be received via the method [`photoOutputCallback`]({{site.android-api-auxiliary}}interface-dcephotolistener.html#photooutputcallback).
- * [`takePhoto`]({{site.android-api}}camera-enhancer.html#takephoto): Triggers photo capturing.
-* Fixed a null pointer bug that might occur when rotating the `DCECameraView`.
-* Fixed a crash bug when some methods are called in child thread.
-
-## 3.0.0 (06/21/2022)
-
-* Updated UI configuration APIs.
- * Added [`DCEImageEditorView`](../auxiliary-api/dceimageeditorview.html)
- * Added [`DCEDrawingLayer`](../auxiliary-api/dcedrawinglayer.html)
- * Added DrawingItem Classes
- * [`DrawingItem`](../auxiliary-api/drawingitem.html)
- * [`QuadDrawingItem`](../auxiliary-api/drawingitem-quad.html)
- * [`RectDrawingItem`](../auxiliary-api/drawingitem-rect.html)
- * [`TextDrawingItem`](../auxiliary-api/drawingitem-text.html)
- * Added [`DrawingStyle`]
- * Added [`DrawingStyleManager`]
diff --git a/programming-old/android/upgrade-instructions-v2.3.10.md b/programming-old/android/upgrade-instructions-v2.3.10.md
deleted file mode 100644
index f2c5d4e8..00000000
--- a/programming-old/android/upgrade-instructions-v2.3.10.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: default-layout
-title: Android Upgrade Instructions - Dynamsoft Camera Enhancer
-description: This is the upgrade instructions for Dynamsoft Camera Enhancer Android edition.
-keywords: Camera Enhancer, upgrade
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Upgrade Instructions
-permalink: /programming/android/upgrade-instructions-v2.3.10.html
----
-
-# How to Upgrade
-
-## From Version 1.x to 2.x
-
-License initialization method and the license item are updated for 2.x versions. Please contact us for the new license key and use the following code to initialize the Camera Enhancer license.
-
-```java
-CameraEnhancer.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
-});
-```
-
-For API changes, it is recommended to check the [APIs reference](api-reference.html) for the new APIs.
diff --git a/programming-old/android/upgrade-instructions-v2.3.12.md b/programming-old/android/upgrade-instructions-v2.3.12.md
deleted file mode 100644
index 94cbb557..00000000
--- a/programming-old/android/upgrade-instructions-v2.3.12.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-layout: default-layout
-title: Android Upgrade Instructions - Dynamsoft Camera Enhancer
-description: This is the upgrade instructions for Dynamsoft Camera Enhancer Android edition.
-keywords: Camera Enhancer, upgrade
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Upgrade Instructions
-permalink: /programming/android/upgrade-instructions-v2.3.12.html
----
-
-# How to Upgrade
-
-## From Version 1.x to 2.x
-
-License initialization method and the license item are updated for 2.x versions. Please contact us for the new license key and use the following code to initialize the Camera Enhancer license.
-
-```java
-CameraEnhancer.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", new DCELicenseVerificationListener() {
- @Override
- public void DCELicenseVerificationCallback(boolean isSuccess, Exception error) {
- if(!isSuccess){
- error.printStackTrace();
- }
- }
-});
-```
-
-For API changes, it is recommended to check the [APIs reference](api-reference.html) for the new APIs.
diff --git a/programming-old/assets/set-scan-region.png b/programming-old/assets/set-scan-region.png
deleted file mode 100644
index ccd894ac..00000000
Binary files a/programming-old/assets/set-scan-region.png and /dev/null differ
diff --git a/programming-old/assets/visible-region.png b/programming-old/assets/visible-region.png
deleted file mode 100644
index 6211b394..00000000
Binary files a/programming-old/assets/visible-region.png and /dev/null differ
diff --git a/programming-old/enumerations/errorcode-android.md b/programming-old/enumerations/errorcode-android.md
deleted file mode 100644
index 8907d70e..00000000
--- a/programming-old/enumerations/errorcode-android.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: default-layout
-title: Enumerations Error code - Dynamsoft Camera Enhancer
-description: This is the documentation - Enumerations Error code page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Enumerations Error code
-needAutoGenerateSidebar: true
-breadcrumbText: Enumerations Error code
-permalink: /programming/enumerations/errorcode-android.html
----
-
-# Enumerations Error code
-
-The error code returned by the library.
-
-| Error Code | Value | Description |
-|------------|-------|-------------|
-| `DCE_OK` | 0 | Successful. |
-| `DCE_UNKNOWN` | -10000 | Unknown error. |
-| `DCE_LICENSE_INVALID` | -10001 | The licence is invalid. |
-| `DCE_LICENSE_EXPIRED` | -10002 | The licence has expired. |
-| `DCE_CAMERA_MODULE_NOT_EXIST` | -10003 | Camera module does not exist. |
-| `DCE_FILE_NOT_FOUND` | -10004 | Failed to access the file path. |
-| `DCE_JSON_PARSE_FAILED` | -10005 | Failed to parse the JSON data. |
-| `DCE_CAMERA_ID_NOT_EXIST` | -10006 | The input value does not exist in the camera ID list. |
-| `DCE_PARAMETER_VALUE_INVALID` | -10038 | The input parameter is invalid. |
-| `DCE_LICENSEKEY_NOT_MATCHED` | -10043 | The license key does not match the license content. |
-| `DCE_REQUESTED_FAILED` | -10044 | The license key does not match the license content. |
-| `DCE_NO_SENSOR` | -10045 | The mobile sensor is not available. |
-| `DM_NO_LICENSE` | -20000 | There is no license specified. |
-| `DM_HANDSHAKE_CODE_INVALID` | -20001 | Handshake code is invalid. |
-| `DM_LICENSE_BUFFER_FAILED` | -20002 | Failed to read or write license buffer. |
-| `DM_LICENSE_SYNC_FAILED` | -20003 | Failed to synchronize license info with Dynamsoft License Server. |
-| `DM_DEVICE_NOT_MATCH` | -20004 | Device does not match with license buffer. |
-| `DM_BIND_DEVICE_FAILED` | -20005 | Failed to bind device. |
-| `DM_LICENSE_INTERFACE_CONFLICT` | -20006 | Interface InitLicense can not be used together with other license initiation interfaces. |
-| `DM_LICENSE_CLIENT_DLL_MISSING` | -20007 | The license client dll is missing. |
-| `DM_INSTANCE_COUNT_OVER_LIMITED` | -20008 | The number of instances used has exceeded the limit. |
-| `DM_LICENSE_INIT_SEQUENCE_FAILED` | -20009 | Interface InitLicense has to be called before creating any SDK objects. |
-| `DM_TRIAL_LICENSE` | -20010 | Using a trial license. |
-| `DM_FAILED_TO_REACH_DLS` | -20200 | Fail to connect to Dynamsoft License Server. |
diff --git a/programming-old/enumerations/errorcode-ios.md b/programming-old/enumerations/errorcode-ios.md
deleted file mode 100644
index 7012e3d4..00000000
--- a/programming-old/enumerations/errorcode-ios.md
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: default-layout
-title: Enumerations Error code - Dynamsoft Camera Enhancer
-description: This is the documentation - Enumerations Error code page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Enumerations Error code
-needAutoGenerateSidebar: true
-breadcrumbText: Enumerations Error code
-permalink: /programming/enumerations/errorcode-ios.html
----
-
-# Enumerations Error code
-
-The error code returned by the library.
-
-| Error Code | Value | Description |
-|------------------|-------|-------------|
-| `EnumCameraErrorCode_OK` | 0 | Successful. |
-| `EnumCameraErrorCode_UNKNOWN` | -10000 | Unknown error. |
-| `EnumCameraErrorCode_LICENSE_INVALID` | -10001 | The licence is invalid. |
-| `EnumCameraErrorCode_LICENSE_EXPIRED` | -10002 | The licence has expired. |
-| `EnumCameraErrorCode_CAMERA_MODULE_NOT_EXIST` | -10003 | Camera module does not exist. |
-| `EnumCameraErrorCode_FILE_NOT_FOUND` | -10004 | Failed to access the file path. |
-| `EnumCameraErrorCode_JSON_PARSE_FAILED` | -10005 | Failed to parse the JSON data. |
-| `EnumCameraErrorCode_CAMERA_ID_NOT_EXIST` | -10006 | The input value does not exist in the camera ID list. |
-| `EnumCameraErrorCode_PARAMETER_VALUE_INVALID` | -10038 | The input parameter is invalid. |
-| `EnumCameraErrorCode_LICENSEKEY_NOT_MATCHED` | -10043 | The license key does not match the license content. |
-| `EnumCameraErrorCode_REQUESTED_FAILED` | -10044 | The license key does not match the license content. |
-| `EnumCameraErrorCode_NO_SENSOR` | -10045 | The mobile sensor is not available. |
-| `EnumCameraErrorCode_NO_LICENSE` | -20000 | There is no license specified. |
-| `EnumCameraErrorCode_HANDSHAKE_CODE_INVALID` | -20001 | Handshake code is invalid. |
-| `EnumCameraErrorCode_LICENSE_BUFFER_FAILED` | -20002 | Failed to read or write license buffer. |
-| `EnumCameraErrorCode_LICENSE_SYNC_FAILED` | -20003 | Failed to synchronize license info with Dynamsoft License Server. |
-| `EnumCameraErrorCode_DEVICE_NOT_MATCH` | -20004 | Device does not match with license buffer. |
-| `EnumCameraErrorCode_BIND_DEVICE_FAILED` | -20005 | Failed to bind device. |
-| `EnumCameraErrorCode_LICENSE_INTERFACE_CONFLICT` | -20006 | Interface InitLicense can not be used together with other license initiation interfaces. |
-| `EnumCameraErrorCode_LICENSE_CLIENT_DLL_MISSING` | -20007 | The license client dll is missing. |
-| `EnumCameraErrorCode_INSTANCE_COUNT_OVER_LIMITED` | -20008 | The number of instances used has exceeded the limit. |
-| `EnumCameraErrorCode_LICENSE_INIT_SEQUENCE_FAILED` | -20009 | Interface InitLicense has to be called before creating any SDK objects. |
-| `EnumCameraErrorCode_TRIAL_LICENSE` | -20010 | Using a trial license. |
-| `EnumCameraErrorCode_FAILED_TO_REACH_DLS` | -20200 | Fail to connect to Dynamsoft License Server. |
diff --git a/programming-old/ios/api-reference-v1.0.3.md b/programming-old/ios/api-reference-v1.0.3.md
deleted file mode 100644
index 12406128..00000000
--- a/programming-old/ios/api-reference-v1.0.3.md
+++ /dev/null
@@ -1,87 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v1.0.3.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### [Initialization Methods]({{site.ios-api}}initialization.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`]({{site.ios-api}}initialization.html#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-### [Frame preprocessing methods]({{site.ios-api}}preprocess.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`acquireListFrame`]({{site.ios-api}}preprocess.html#acquirebufferedframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`]({{site.ios-api}}preprocess.html#enablefastmode) | Set the value true/false to turn on/off DCE fast mode |
-| [`enableSensorControl`]({{site.ios-api}}preprocess.html#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-|[`setSensorControlThreshold`]({{site.ios-api}}preprocess.html#setsensorcontrolthreshold)| Make settings on sensor control threshold |
-| [`enableFrameFilter`]({{site.ios-api}}preprocess.html#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`setMaxFrameRate`]({{site.ios-api}}preprocess.html#setmaxframerate) | Set max frame rate |
-
-### [Regular camera methods]({{site.ios-api}}camera.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`updateCameraSettingFromJson`]({{site.ios-api}}camera.html#updatecamerasettingfromjson) | Update camera filter and focus settings from Json. |
-| [`updateCameraSettingFromFile`]({{site.ios-api}}camera.html#updatecamerasettingfromfile) | Update camera filter and focus settings from file. |
-| [`getVersion`]({{site.ios-api}}camera.html#getversion) | Check current DCE version |
-| [`getCameraCurrentState`]({{site.ios-api}}camera.html#getcameracurrentstate) | Get the current camera state. |
-| [`getCameraDesiredState`]({{site.ios-api}}camera.html#getcameradesiredstate) | Get the desired camera state. |
-| [`setCameraDesiredState`]({{site.ios-api}}camera.html#setcameradesiredstate) | Set Camera on/off. |
-| [`pauseCamera`]({{site.ios-api}}camera.html#pausecamera-and-resumecamera) | Pause Camera. |
-| [`resumeCamera`]({{site.ios-api}}camera.html#pausecamera-and-resumecamera) | Resume Camera. |
-| [`startScanning`]({{site.ios-api}}camera.html#stopscanning-and-startscanning) | Start scanning. |
-| [`stopScanning`]({{site.ios-api}}camera.html#stopscanning-and-startscanning) | Stop scanning. |
-| [`addCameraListener`]({{site.ios-api}}camera.html#addcameralistener) | Add camera listener (on preview original, filtered or fast frames). |
-| [`getTorchCurrentState`]({{site.ios-api}}camera.html#gettorchcurrentstate) | Get the current torch state. |
-| [`getTorchDesiredState`]({{site.ios-api}}camera.html#gettorchdesiredstate) | Get the desired torch state. |
-| [`setTorchDesiredState`]({{site.ios-api}}camera.html#settorchdesiredstate) | Set torch state |
-| [`addTorchListener`]({{site.ios-api}}camera.html#addtorchlistener) | Add torch listener |
-| [`getCameraPosition`]({{site.ios-api}}camera.html#getcameraposition) | Get current camera position |
-| [`switchCameraPosition`]({{site.ios-api}}camera.html#switchcameraposition) | Switch camera position front/back |
-| [`getResolution`]({{site.ios-api}}camera.html#getresolution) | Get current resolution setting |
-| [`setResolution`]({{site.ios-api}}camera.html#setresolution) | Set resolution |
-| [`getResolutionList`]({{site.ios-api}}camera.html#getresolutionlist) | Get all available resolutions |
-
-### [Focus & zoom methods]({{site.ios-api}}zoom-focus.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`setAutoFocusPosition`]({{site.ios-api}}zoom-focus.html#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`]({{site.ios-api}}zoom-focus.html#setmanualfocusposition) | Set manual focus position (This focus position only takes effect once for each time the API is called). |
-| [`setFocalLength`]({{site.ios-api}}zoom-focus.html#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`]({{site.ios-api}}zoom-focus.html#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`enableDefaultAutoFocus`]({{site.ios-api}}zoom-focus.html#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`enableRegularAutoFocus`]({{site.ios-api}}zoom-focus.html#enableregularautofocus) | If this is true, camera will auto focus for every 3 seconds. |
-| [`setRegularAutoFocusParam`]({{site.ios-api}}zoom-focus.html#setregularautofocusparam) | Set the focus interval and termination time for the regular autofocus. |
-| [`enableAutoFocusOnSharpnessChange`]({{site.ios-api}}zoom-focus.html#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. |
-| [`enableAutoZoom`]({{site.ios-api}}zoom-focus.html#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`setZoomFactor`]({{site.ios-api}}zoom-focus.html#setzoomfactor) | Set the zoom factor. |
-
-## Auxiliary Classes
-
-- [`FramePackage`]({{ site.ios-api-auxiliary }}dceframe.html)
-- [`DCECaptureView`]({{ site.ios-api-auxiliary }}dcecameraView.html)
-
-## Protocols
-
-- [`CameraEnhancerListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`CameraTorchListener`]({{ site.ios-api-auxiliary }}protocol-torchlistener.html)
-- [`DCEDLSLicenseVerificationDelegate`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [View all Enumerations]({{ site.dce-enums }}enum-1.html?lang=android)
diff --git a/programming-old/ios/api-reference-v2.0.0.md b/programming-old/ios/api-reference-v2.0.0.md
deleted file mode 100644
index 73c5c680..00000000
--- a/programming-old/ios/api-reference-v2.0.0.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.0.0.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | Set the frame rate to the input value (if the input value is available for the device). |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.1.3.md b/programming-old/ios/api-reference-v2.1.3.md
deleted file mode 100644
index c412eae6..00000000
--- a/programming-old/ios/api-reference-v2.1.3.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.1.3.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select and active a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | Set the frame rate to the input value (if the input value is available for the device). |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.1.4.md b/programming-old/ios/api-reference-v2.1.4.md
deleted file mode 100644
index 7492d810..00000000
--- a/programming-old/ios/api-reference-v2.1.4.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.1.4.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-| [`cameraView`]({{site.ios-api}}camera-enhancer.html#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`getCameraPosition`]({{site.ios-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.3.1.md b/programming-old/ios/api-reference-v2.3.1.md
deleted file mode 100644
index 0f8de85e..00000000
--- a/programming-old/ios/api-reference-v2.3.1.md
+++ /dev/null
@@ -1,95 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.3.1.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-| [`cameraView`]({{site.ios-api}}camera-enhancer.html#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`getCameraPosition`]({{site.ios-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.ios-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCEPhotoListener`]({{ site.ios-api-auxiliary }}protocol-dcephotolistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.3.10.md b/programming-old/ios/api-reference-v2.3.10.md
deleted file mode 100644
index f374c9ad..00000000
--- a/programming-old/ios/api-reference-v2.3.10.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.3.10.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-| [`cameraView`]({{site.ios-api}}camera-enhancer.html#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`]({{site.ios-api}}camera-enhancer.html#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.ios-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`autoZoomRange`]({{site.ios-api}}camera-enhancer.html#autozoomrange) | The property for getting/setting the range of auto zoom. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setFocus(subsequentFocusMode)`]({{site.ios-api}}camera-enhancer.html#setfocussubsequentFocusMode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setCameraStateListener`]({{site.ios-api}}camera-enhancer.html#setcamerastatelistener) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | **Deprecated, will be removed in v3.0**. Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | **Deprecated, will be removed in v3.0**. Resume the current selected camera. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.ios-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html)
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Protocol
-
-- [`DCECameraStateListener`]({{ site.ios-api-auxiliary }}protocol-camerastatelistener.html)
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-- [`DCEPhotoListener`]({{ site.ios-api-auxiliary }}protocol-dcephotolistener.html)
-
-## Enumerations
-
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.3.20.md b/programming-old/ios/api-reference-v2.3.20.md
deleted file mode 100644
index d151743a..00000000
--- a/programming-old/ios/api-reference-v2.3.20.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.3.20.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-| [`cameraView`]({{site.ios-api}}camera-enhancer.html#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`]({{site.ios-api}}camera-enhancer.html#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.ios-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`autoZoomRange`]({{site.ios-api}}camera-enhancer.html#autozoomrange) | The property for getting/setting the range of auto zoom. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setFocus(subsequentFocusMode)`]({{site.ios-api}}camera-enhancer.html#setfocussubsequentFocusMode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setCameraStateListener`]({{site.ios-api}}camera-enhancer.html#setcamerastatelistener) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | **Deprecated, will be removed in v3.0**. Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | **Deprecated, will be removed in v3.0**. Resume the current selected camera. |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.ios-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html)
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Protocol
-
-- [`DCECameraStateListener`]({{ site.ios-api-auxiliary }}protocol-camerastatelistener.html)
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-- [`DCEPhotoListener`]({{ site.ios-api-auxiliary }}protocol-dcephotolistener.html)
-
-## Enumerations
-
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
diff --git a/programming-old/ios/api-reference-v2.3.5.md b/programming-old/ios/api-reference-v2.3.5.md
deleted file mode 100644
index d0e6c425..00000000
--- a/programming-old/ios/api-reference-v2.3.5.md
+++ /dev/null
@@ -1,97 +0,0 @@
----
-layout: default-layout
-title: iOS API references - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS API references page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS API references
-permalink: /programming/ios/api-reference-v2.3.5.html
----
-
-# iOS API references
-
-## Primary Class - CameraEnhancer
-
-### Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`]({{site.ios-api}}camera-enhancer.html#initwithview) | Initialize the camera enhancer with the `DCECameraView`. |
-| [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) | Sets product key and activate the SDK. |
-| [`getVersion`]({{site.ios-api}}camera-enhancer.html#getversion) | Get the SDK version. |
-| [`cameraView`]({{site.ios-api}}camera-enhancer.html#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-### Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`]({{site.ios-api}}camera-enhancer.html#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`]({{site.ios-api}}camera-enhancer.html#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`]({{site.ios-api}}camera-enhancer.html#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`]({{site.ios-api}}camera-enhancer.html#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`]({{site.ios-api}}camera-enhancer.html#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`]({{site.ios-api}}camera-enhancer.html#getcamerastate) | Get the state of the currently selected camera. |
-| [`open`]({{site.ios-api}}camera-enhancer.html#open) | Turn on the current selected camera. |
-| [`close`]({{site.ios-api}}camera-enhancer.html#close) | Turn off the current selected camera. |
-| [`pause`]({{site.ios-api}}camera-enhancer.html#pause) | Pause the current selected camera. |
-| [`resume`]({{site.ios-api}}camera-enhancer.html#resume) | Resume the current selected camera. |
-| [`turnOnTorch`]({{site.ios-api}}camera-enhancer.html#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`]({{site.ios-api}}camera-enhancer.html#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`]({{site.ios-api}}camera-enhancer.html#getframerate) | Get the current frame rate. |
-| [`setResolution`]({{site.ios-api}}camera-enhancer.html#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`]({{site.ios-api}}camera-enhancer.html#getresolution) | Get the current resolution. |
-| [`setZoom`]({{site.ios-api}}camera-enhancer.html#setzoom) | Set the zoom factor. Once setZoom is triggered and approved, the zoom factor of the actived camera will immediately become the input value. |
-| [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`]({{site.ios-api}}camera-enhancer.html#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) | Set the scan region with a RegionDefinition value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`]({{site.ios-api}}camera-enhancer.html#setframerate) | **Deprecated**. Set the frame rate to the input value (if the input value is available for the device). |
-
-### Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) | Get the latest frame from the buffer. The input boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`]({{site.ios-api}}camera-enhancer.html#addlistener) | Add a listener to the Camera Enhancer instance. |
-| [`removeListener`]({{site.ios-api}}camera-enhancer.html#removelistener) | Remove a preciously added listener from the Camera Enhancer instance. |
-| [`takePhoto`]({{site.ios-api}}camera-enhancer.html#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-### Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`]({{site.ios-api}}camera-enhancer.html#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`]({{site.ios-api}}camera-enhancer.html#isfeatureenabled) | Check whether the input features are enabled. |
-
-### Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) | Update advanced parameter settings including filter, sensor and focus settings from a JSON file. |
-| [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring) | Update advanced parameter settings including filter, sensor and focus settings from a JSON string. |
-
-## Auxiliary Classes
-
-- [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html)
-- [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html)
-- [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html)
-- [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html)
-
-## Interfaces
-
-- [`DCEFrameListener`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html)
-- [`DCEPhotoListener`]({{ site.ios-api-auxiliary }}protocol-dcephotolistener.html)
-- [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html)
-
-## Enumerations
-
-- [`EnumDCEErrorCode`]({{ site.dce-enums }}error-code.html?lang=objc,swift)
-- [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html?lang=objc,swift)
-- [`EnumCameraState`]({{ site.dce-enums }}camera-state.html?lang=objc,swift)
-- [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift)
-- [`EnumResolution`]({{ site.dce-enums }}resolution.html?lang=objc,swift)
-- [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=objc,swift)
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v1.0.3.md b/programming-old/ios/auxiliary-api/dcecameraview-v1.0.3.md
deleted file mode 100644
index c2218965..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v1.0.3.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-layout: default-layout
-title: iOS DCECaptureView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCECaptureView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECaptureView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECaptureView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v1.0.3.html
----
-
-# DCECaptureView
-
-`DCECaptureView` is the class that enable user to add elements on camera view conveniently.
-
-```objc
-@interface DCECaptureView: UIView
-```
-
-| Method Name | Description |
-|------|------|
-| [`addTorch`](#addtorch) | Add torch controlling icon |
-| [`addOverlay`](#addoverlay) | Add overlay |
-| [`addListener`](#addlistener) | Add view listener |
-| [`removeListener`](#removelistener) | Remove view listener |
-
-## addTorch
-
-Add a torch controlling icon on the view.
-
-```objc
-- (void)addTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCECaptureView *dceView;
-//Add a default torch icon
-[_dceView addTorch];
-//Or add a personalized torch icon
-[_dceView addTorchWith:(nonnull UIImage *) TorchOffImg:(nonnull UIImage *) frame:(CGRect)];
-```
-2.
-```swift
-var dceView:DCECaptureView! = nil
-//Add a default torch icon
-dceView.addTorch()
-//Or add a personalized torch icon
-dceView.addTorch(with: UIImage, torchOffImg: UIImage, frame: CGRect)
-```
-
-## addOverlay
-
-Add overlay on the view.
-
-```objc
-- (void)addOverlay;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCECaptureView *dceView;
-//Add a default overlay
-[_dceView addOverlay];
-//Add a personalized overlay
-[_dceView addOverlay:(nonnull UIColor *) fill:(nonnull UIColor *)];
-```
-2.
-```swift
-var dceView:DCECaptureView! = nil
-//Add a default overlay
-dceView.addOverlay()
-//Add a personalized overlay
-dceView.addOverlay(stroke: UIColor, fill: UIColor)
-```
-
-## addListener
-
-Add view Listener.
-
-```objc
-- (void)addListener:(id)listener NS_SWIFT_NAME(addListener(_:));
-```
-
-**Parameters**
-
-`Listener`: DCECaptureViewListener.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCECaptureView *dceView;
-[_dceView addListener:(nonnull id)];
-```
-2.
-```swift
-var dceView:DCECaptureView! = nil
-dceView.addListener(listener: DCECaptureViewListener)
-```
-
-## removeListener
-
-Remove view listener.
-
-```objc
-- (void)removeListener;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCECaptureView *dceView;
-[_dceView removeListener];
-```
-2.
-```swift
-var dceView:DCECaptureView! = nil
-dceView.removeListener()
-```
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v2.0.0.md b/programming-old/ios/auxiliary-api/dcecameraview-v2.0.0.md
deleted file mode 100644
index 38ec36ea..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v2.0.0.md
+++ /dev/null
@@ -1,179 +0,0 @@
----
-layout: default-layout
-title: iOS DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECameraView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECameraView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v2.0.0.html
----
-
-# DCECameraView
-
-`DCECameraView` is the class that enables users to add elements on camera view conveniently.
-
-```objc
-@interface DCECameraView: UIView
-```
-
-| Method/Property Name | Description |
-| ----------- | ----------- |
-| [`initWithFrame`](#initwithframe) | Init the `DCECameraView`. |
-| [`cameraWithFrame`](#camerawithframe) | Init the `DCECameraView` with a static method. |
-| [`overlayVisible`](#overlayvisible) | The property stores the BOOL value that controls the visibility of the overlays. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill in colour of the overlay(s). |
-| [`viewfinderVisible`](#setoverlaycolour) | The property stores the BOOL value that controls the visibility of the viewfinder. |
-| [`setViewfinder`](#setoverlaycolour) | Set the attribute of the viewfinder. Currently only available for position and size setting. |
-
-## initWithFrame
-
-Init the DCECameraView.
-
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-## cameraWithFrame
-
-Statically init the DCECameraView.
-
-```objc
-+ (instancetype)cameraWithFrame:(CGRect)frame NS_SWIFT_NAME(init(frame:));
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [DCECameraView cameraWithFrame:self.view.bounds];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-## overlayVisible
-
-The property stores the BOOL value that controls the visibility of the overlays.
-
-```objc
-BOOL overlayVisible
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to draw and display overlays on the interest areas. Otherwise, the `cameraView` will not draw overlays.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setOverlayVisible:true];
-```
-2.
-```swift
-dceView.overlayVisible = true
-```
-
-## setOverlayColour
-
-Set the stroke and fill in colour of the overlay(s).
-
-```objc
-- (void)setOverlayColour:(UIColor*)stroke fill:(UIColor*)fill;
-```
-
-**Parameters**
-
-`stroke`: The stroke colour of the overlay.
-`fill`: The fill in colour of the overlay.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-UIColor* strokeColor = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:0.5];
-UIColor* fillColor = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:0.5];
-[_dceView setOverlayColour:strokeColor fill:fillColor];
-```
-2.
-```swift
-let strokeColour = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.5)
-let fillColour = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.5)
-_dceView = setOverlayColour(strokeColour, fill: fillcolour)
-```
-
-## viewfinderVisible
-
-The property stores the BOOL value that controls the visibility of the viewfinder.
-
-```objc
-BOOL viewfinderVisible
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to create and display a viewfinder. Otherwise, the `cameraView` will not create the viewfinder.
-
-## setViewfinder
-
-Set the attribute of the viewfinder. Currently only available for position and size setting.
-
-```objc
-- (void)setViewfinder:(CGFloat)left top:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom;
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setViewfinder:0.1 top: 0.3 right: 0.9 bottom: 0.7];
-```
-2.
-```swift
-_dceView = setViewfinder(0.1, top: 0.3, right: 0.9, bottom: 0.7)
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v2.1.0.md b/programming-old/ios/auxiliary-api/dcecameraview-v2.1.0.md
deleted file mode 100644
index e0a7ae4e..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v2.1.0.md
+++ /dev/null
@@ -1,241 +0,0 @@
----
-layout: default-layout
-title: iOS DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECameraView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECameraView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v2.1.0.html
----
-
-# DCECameraView
-
-`DCECameraView` is the class that enables users to add elements on camera view conveniently.
-
-```objc
-@interface DCECameraView: UIView
-```
-
-| Method/Property Name | Description |
-| ----------- | ----------- |
-| [`initWithFrame`](#initwithframe) | Init the `DCECameraView`. |
-| [`cameraWithFrame`](#camerawithframe) | Init the `DCECameraView` with a static method. |
-| [`overlayVisible`](#overlayvisible) | The property stores the BOOL value that controls the visibility of the overlays. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill in colour of the overlay(s). |
-| [`viewfinderVisible`](#viewfindervisible) | The property stores the BOOL value that controls the visibility of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the attribute of the viewfinder. Currently only available for position and size setting. |
-| [`setTorchButton`](#settorch) | Set the position of the torch button. The visibility of the torch button will be set to true as well. |
-| [`torchButtonVisible`](#torchvisible) | The property controls the visibility of the torch Button. |
-
-
-
-## initWithFrame
-
-Init the DCECameraView.
-
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## cameraWithFrame
-
-Statically init the DCECameraView.
-
-```objc
-+ (instancetype)cameraWithFrame:(CGRect)frame NS_SWIFT_NAME(init(frame:));
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [DCECameraView cameraWithFrame:self.view.bounds];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## overlayVisible
-
-The property stores the BOOL value that controls the visibility of the overlays.
-
-```objc
-@property (assign, nonatomic) BOOL overlayVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to draw and display overlays on the interest areas. Otherwise, the `cameraView` will not draw overlays.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setOverlayVisible:true];
-```
-2.
-```swift
-dceView.overlayVisible = true
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill in colour of the overlay(s).
-
-```objc
-- (void)setOverlayColour:(UIColor*)stroke fill:(UIColor*)fill;
-```
-
-**Parameters**
-
-`stroke`: The stroke colour of the overlay.
-`fill`: The fill in colour of the overlay.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-UIColor* strokeColor = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:0.5];
-UIColor* fillColor = [UIColor colorWithRed:0.1 green:0.2 blue:0.3 alpha:0.5];
-[_dceView setOverlayColour:strokeColor fill:fillColor];
-```
-2.
-```swift
-let strokeColour = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.5)
-let fillColour = UIColor(red: 0.1, green: 0.2, blue: 0.3, alpha: 0.5)
-_dceView = setOverlayColour(strokeColour, fill: fillcolour)
-```
-
-
-
-## viewfinderVisible
-
-The property stores the BOOL value that controls the visibility of the viewfinder.
-
-```objc
-@property (assign, nonatomic) BOOL viewfinderVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to create and display a viewfinder. Otherwise, the `cameraView` will not create the viewfinder.
-
-
-
-## setViewfinder
-
-Set the attribute of the viewfinder. Currently only available for position and size setting.
-
-```objc
-- (void)setViewfinder:(CGFloat)left top:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom;
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setViewfinder:0.1 top: 0.3 right: 0.9 bottom: 0.7];
-```
-2.
-```swift
-_dceView = setViewfinder(0.1, top: 0.3, right: 0.9, bottom: 0.7)
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the position of the torch button. The visibility of the torch button will be set to true as well.
-
-```objc
-- (void)setTorchButton:(CGPoint)torchButtonPosition;
-```
-
-**Parameters**
-
-`torchButtonPosition`: The `torchButtonPosition` illustrates the coordinate of the torch button. The x coordinate of the point stands for the pixel distance between the point and the left edge of the screen. The y coordinate of the point stands for the pixel distance between the point and the top edge of the screen.
-
-
-
-
torchButtonPosition is the position on the camera view
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setTorchButton:CGPointMake(100,100)];
-```
-2.
-```swift
-dceView.setTorchButton(torchButtonPosition: CGPoint(x: 100, y: 100))
-```
-
-
-
-## torchButtonVisible
-
-`torchButtonVisible` is a property that controls the visibility of the `torchButton`. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```objc
-@property (assign, nonatomic) BOOL torchVisible;
-```
-
-**Parameters**
-
-When the property value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v2.3.20.md b/programming-old/ios/auxiliary-api/dcecameraview-v2.3.20.md
deleted file mode 100644
index 2dc958c6..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v2.3.20.md
+++ /dev/null
@@ -1,282 +0,0 @@
----
-layout: default-layout
-title: iOS DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECameraView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECameraView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v2.3.20.html
----
-
-# DCECameraView
-
-`DCECameraView` is the class that enables users to add elements on camera view conveniently.
-
-```objc
-@interface DCECameraView: UIView
-```
-
-| Method/Property Name | Description |
-| ----------- | ----------- |
-| [`initWithFrame`](#initwithframe) | Init the `DCECameraView`. |
-| [`cameraWithFrame`](#camerawithframe) | Init the `DCECameraView` with a static method. |
-| [`overlayVisible`](#overlayvisible) | The property stores the BOOL value that controls the visibility of the overlays. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill in colour of the overlay(s). |
-| [`viewfinderVisible`](#viewfindervisible) | The property stores the BOOL value that controls the visibility of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the attribute of the viewfinder. Currently only available for position and size setting. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`torchButtonVisible`](#torchbuttonvisible) | The property controls the visibility of the torch Button. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the region of video that is visible on the camera. It help you to set the scan region when the shape of `DCECameraView` is quite different from the video streaming. |
-
-
-
-## initWithFrame
-
-Init the DCECameraView.
-
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## cameraWithFrame
-
-Statically init the DCECameraView.
-
-```objc
-+ (instancetype)cameraWithFrame:(CGRect)frame NS_SWIFT_NAME(init(frame:));
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [DCECameraView cameraWithFrame:self.view.bounds];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## overlayVisible
-
-The property stores the BOOL value that controls the visibility of the overlays.
-
-```objc
-@property (assign, nonatomic) BOOL overlayVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to draw and display overlays on the interest areas. Otherwise, the `cameraView` will not draw overlays.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setOverlayVisible:true];
-```
-2.
-```swift
-dceView.overlayVisible = true
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill in colour of the overlay(s).
-
-```objc
-- (void)setOverlayColour:(UIColor*)stroke fill:(UIColor*)fill;
-```
-
-**Parameters**
-
-`stroke`: The stroke colour of the overlay.
-`fill`: The fill in colour of the overlay.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// RGB 0 ~ 255, alpha 0 ~ 1
-UIColor* strokeColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-UIColor* fillColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-[_dceView setOverlayColour:strokeColor fill:fillColor];
-```
-2.
-```swift
-// RGB 0 ~ 255, alpha 0 ~ 1
-let strokeColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-let fillColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-_dceView.setOverlayColour(strokeColour, fill: fillcolour)
-```
-
-
-
-## viewfinderVisible
-
-The property stores the BOOL value that controls the visibility of the viewfinder.
-
-```objc
-@property (assign, nonatomic) BOOL viewfinderVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to create and display a viewfinder. Otherwise, the `cameraView` will not create the viewfinder.
-
-
-
-## setViewfinder
-
-Set the attribute of the viewfinder. Currently only available for position and size setting.
-
-```objc
-- (void)setViewfinder:(CGFloat)left top:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom;
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setViewfinder:0.1 top: 0.3 right: 0.9 bottom: 0.7];
-```
-2.
-```swift
-_dceView.setViewfinder(0.1, top: 0.3, right: 0.9, bottom: 0.7)
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the position, size and image for the torch button.
-
-```objc
-- (void)setTorchButton:(CGRect)torchButton torchOnImage:(UIImage*)torchOnImage torchOffImage:(UIImage*)torchOffImage;
-```
-
-**Parameters**
-
-`frame`: The frame of torch button. It includes the width, height and top-left corner coordinate of the torch button. You can input a nil value to apply no changes on the frame of button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGRect rect = {0, 0, 30, 30};
-[_dceView setTorchButton:(rect) torchOnImage: image torchOffImage: image];
-```
-2.
-```swift
-_dceView.setTorchButton(CGRect.init(x: 0, y: 0, width: 500, height: 500), torchOnImage: image, torchOffImage:image)
-```
-
-**Remarks**
-
-Method `- (void)setTorchButton:(CGPoint)torchButtonPosition` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## torchButtonVisible
-
-`torchButtonVisible` is a property that controls the visibility of the `torchButton`. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```objc
-@property (assign, nonatomic) BOOL torchVisible;
-```
-
-**Parameters**
-
-When the property value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-```objc
-- (iRegionDefinition*) getVisibleRegionOfVideo;
-```
-
-**Return Value**
-
-An object of `iRegionDefinition`. You can use this `iRegionDefinition` object to set the scan region.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition *region = [_dceView getVisibleRegionOfVideo];
-[_dce setScanRegion:region error:nil];
-```
-2.
-```swift
-let region = dceView.getVisibleRegionOfVideo()
-dce.setScanRegion(region, error: &error)
-```
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v2.3.5.md b/programming-old/ios/auxiliary-api/dcecameraview-v2.3.5.md
deleted file mode 100644
index 8edec550..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v2.3.5.md
+++ /dev/null
@@ -1,245 +0,0 @@
----
-layout: default-layout
-title: iOS DCECameraView Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECameraView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECameraView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v2.3.5.html
----
-
-# DCECameraView
-
-`DCECameraView` is the class that enables users to add elements on camera view conveniently.
-
-```objc
-@interface DCECameraView: UIView
-```
-
-| Method/Property Name | Description |
-| ----------- | ----------- |
-| [`initWithFrame`](#initwithframe) | Init the `DCECameraView`. |
-| [`cameraWithFrame`](#camerawithframe) | Init the `DCECameraView` with a static method. |
-| [`overlayVisible`](#overlayvisible) | The property stores the BOOL value that controls the visibility of the overlays. |
-| [`setOverlayColour`](#setoverlaycolour) | Set the stroke and fill in colour of the overlay(s). |
-| [`viewfinderVisible`](#viewfindervisible) | The property stores the BOOL value that controls the visibility of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | Set the attribute of the viewfinder. Currently only available for position and size setting. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`torchButtonVisible`](#torchbuttonvisible) | The property controls the visibility of the torch Button. |
-
-
-
-## initWithFrame
-
-Init the DCECameraView.
-
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## cameraWithFrame
-
-Statically init the DCECameraView.
-
-```objc
-+ (instancetype)cameraWithFrame:(CGRect)frame NS_SWIFT_NAME(init(frame:));
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [DCECameraView cameraWithFrame:self.view.bounds];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## overlayVisible
-
-The property stores the BOOL value that controls the visibility of the overlays.
-
-```objc
-@property (assign, nonatomic) BOOL overlayVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to draw and display overlays on the interest areas. Otherwise, the `cameraView` will not draw overlays.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setOverlayVisible:true];
-```
-2.
-```swift
-dceView.overlayVisible = true
-```
-
-
-
-## setOverlayColour
-
-Set the stroke and fill in colour of the overlay(s).
-
-```objc
-- (void)setOverlayColour:(UIColor*)stroke fill:(UIColor*)fill;
-```
-
-**Parameters**
-
-`stroke`: The stroke colour of the overlay.
-`fill`: The fill in colour of the overlay.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// RGB 0 ~ 255, alpha 0 ~ 1
-UIColor* strokeColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-UIColor* fillColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-[_dceView setOverlayColour:strokeColor fill:fillColor];
-```
-2.
-```swift
-// RGB 0 ~ 255, alpha 0 ~ 1
-let strokeColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-let fillColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-_dceView.setOverlayColour(strokeColour, fill: fillcolour)
-```
-
-
-
-## viewfinderVisible
-
-The property stores the BOOL value that controls the visibility of the viewfinder.
-
-```objc
-@property (assign, nonatomic) BOOL viewfinderVisible;
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to create and display a viewfinder. Otherwise, the `cameraView` will not create the viewfinder.
-
-
-
-## setViewfinder
-
-Set the attribute of the viewfinder. Currently only available for position and size setting.
-
-```objc
-- (void)setViewfinder:(CGFloat)left top:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom;
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setViewfinder:0.1 top: 0.3 right: 0.9 bottom: 0.7];
-```
-2.
-```swift
-_dceView.setViewfinder(0.1, top: 0.3, right: 0.9, bottom: 0.7)
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
-
-## setTorchButton
-
-Set the position, size and image for the torch button.
-
-```objc
-- (void)setTorchButton:(CGRect)torchButton torchOnImage:(UIImage*)torchOnImage torchOffImage:(UIImage*)torchOffImage;
-```
-
-**Parameters**
-
-`frame`: The frame of torch button. It includes the width, height and top-left corner coordinate of the torch button. You can input a nil value to apply no changes on the frame of button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGRect rect = {0, 0, 30, 30};
-[_dceView setTorchButton:(rect) torchOnImage: image torchOffImage: image];
-```
-2.
-```swift
-_dceView.setTorchButton(CGRect.init(x: 0, y: 0, width: 500, height: 500), torchOnImage: image, torchOffImage:image)
-```
-
-**Remarks**
-
-Method `- (void)setTorchButton:(CGPoint)torchButtonPosition` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## torchButtonVisible
-
-`torchButtonVisible` is a property that controls the visibility of the `torchButton`. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-```objc
-@property (assign, nonatomic) BOOL torchVisible;
-```
-
-**Parameters**
-
-When the property value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
diff --git a/programming-old/ios/auxiliary-api/dcecameraview-v3.0.3.md b/programming-old/ios/auxiliary-api/dcecameraview-v3.0.3.md
deleted file mode 100644
index cf347f82..00000000
--- a/programming-old/ios/auxiliary-api/dcecameraview-v3.0.3.md
+++ /dev/null
@@ -1,479 +0,0 @@
----
-layout: default-layout
-title: iOS DCECameraView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCECameraView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCECameraView Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCECameraView Class
-permalink: /programming/ios/auxiliary-api/dcecameraview-v3.0.3.html
----
-
-# DCECameraView
-
-`DCECameraView` is the class that enables users to add elements on camera view conveniently.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCECameraView: UIView
-```
-2.
-```swift
-class DCECameraView : UIView, CALayerDelegate
-```
-
-| Method/Property Name | Description |
-| ----------- | ----------- |
-| [`initWithFrame`](#initwithframe) | Init the `DCECameraView`. |
-| [`cameraWithFrame`](#camerawithframe) | Init the `DCECameraView` with a static method. |
-| [`setTorchButton`](#settorchbutton) | Set the position, size and image of the torch button. |
-| [`torchButtonVisible`](#torchbuttonvisible) | The property controls the visibility of the torch Button. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the region of video that is visible on the camera. It help you to set the scan region when the shape of `DCECameraView` is quite different from the video streaming. |
-| [`overlayVisible`](#overlayvisible) | **Deprecated**. The property stores the BOOL value that controls the visibility of the overlays. |
-| [`setOverlayColour`](#setoverlaycolour) | **Deprecated**. Set the stroke and fill in colour of the overlay(s). |
-| [`viewfinderVisible`](#viewfindervisible) | **Deprecated**. The property stores the BOOL value that controls the visibility of the viewfinder. |
-| [`setViewfinder`](#setviewfinder) | **Deprecated**. Set the attribute of the viewfinder. Currently only available for position and size setting. |
-
-
-
-## initWithFrame
-
-Init the DCECameraView.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-2.
-```swift
-init(frame: CGRect)
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## cameraWithFrame
-
-Statically init the DCECameraView.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+ (instancetype)cameraWithFrame:(CGRect)frame NS_SWIFT_NAME(init(frame:));
-```
-2.
-```swift
-init(frame: CGRect)
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [DCECameraView cameraWithFrame:self.view.bounds];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-```
-
-
-
-## setTorchButton
-
-Set the position, size and image for the torch button.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setTorchButton:(CGRect)torchButton torchOnImage:(UIImage*)torchOnImage torchOffImage:(UIImage*)torchOffImage;
-```
-2.
-```swift
-func setTorchButton(frame: CGRect, torchOnImage: UIImage?, torchOffImage: UIImage?)
-```
-
-**Parameters**
-
-`frame`: The frame of torch button. It includes the width, height and top-left corner coordinate of the torch button. You can input a nil value to apply no changes on the frame of button.
-`torchOnImage`: Display this image when the torch is on. You can input a null value to apply no changes to the image of the torch button when the torch is on.
-`torchOffImage`: Display this image when the torch is off. You can input a null value to apply no changes to the image of the torch button when the torch is off.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGRect rect = {0, 0, 30, 30};
-[_dceView setTorchButton:(rect) torchOnImage: image torchOffImage: image];
-```
-2.
-```swift
-_dceView.setTorchButton(CGRect.init(x: 0, y: 0, width: 500, height: 500), torchOnImage: image, torchOffImage:image)
-```
-
-**Remarks**
-
-Method `- (void)setTorchButton:(CGPoint)torchButtonPosition` is deprecated. Please use the new `setTorchButton` method.
-
-
-
-## torchButtonVisible
-
-`torchButtonVisible` is a property that controls the visibility of the `torchButton`. The torch button icon is preset in the SDK. If the `torchButtonPosition` has never been configured, the `torchButton` will be displayed on the default position. Currently, the icon and the size of the button are not available for setting.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL torchVisible;
-```
-2.
-```swift
-var torchButtonVisible: Bool { get set }
-```
-
-**Parameters**
-
-When the property value is true, the torch button should be displayed. Otherwise, the torch button should be hidden.
-
-
-
-## getDrawingLayer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEDrawingLayer*) getDrawingLayer:(NSInteger)id;
-```
-2.
-```swift
-func getDrawingLayer(_ layerId: Int) -> DCEDrawingLayer
-```
-
-**Parameters**
-
-`id`: The id of the drawing layer.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Return Value**
-
-The targeting instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer *drawingLayer = [_dceView getDrawingLayer:DBR_LAYER_ID];
-```
-2.
-```swift
-do{
- let drawingLayer = try dceView.getDrawingLayer(DBR_LAYER_ID)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-
-
-## createDrawingLayer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEDrawingLayer*) createDrawingLayer;
-```
-2.
-```swift
-func createDrawingLayer() -> DCEDrawingLayer
-```
-
-**Return Value**
-
-A user-defined drawing layer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer *drawingLayer = [_dceView createDrawingLayer:1];
-```
-2.
-```swift
-do{
- let drawingLayer = try dceView.createDrawingLayer(1)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-
-
-## getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-When the shape of your camera view is quite different from the shape of the video streaming, there might exist a large area that is invisible. You can use this method to get the region of this invisible area.
-
-
-
-
What's Visible Region
-
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (iRegionDefinition*) getVisibleRegionOfVideo;
-```
-2.
-```swift
-func getVisbleRegionOfVideo() -> iRegionDefinition
-```
-
-**Return Value**
-
-An object of `iRegionDefinition`. You can use this `iRegionDefinition` object to set the scan region.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition *region = [_dceView getVisibleRegionOfVideo];
-[_dce setScanRegion:region error:nil];
-```
-2.
-```swift
-let region = dceView.getVisibleRegionOfVideo()
-dce.setScanRegion(region, error: &error)
-```
-
-
-
-## overlayVisible
-
-> The method is deprecated
-
-The property stores the BOOL value that controls the visibility of the overlays.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL overlayVisible;
-```
-2.
-```swift
-var overlayVisible: Bool { get set }
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to draw and display overlays on the interest areas. Otherwise, the `cameraView` will not draw overlays.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setOverlayVisible:true];
-```
-2.
-```swift
-dceView.overlayVisible = true
-```
-
-
-
-## setOverlayColour
-
-> The method is deprecated
-
-Set the stroke and fill in colour of the overlay(s).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setOverlayColour:(UIColor*)stroke fill:(UIColor*)fill;
-```
-2.
-```swift
-func setOverlayColour(_ stroke: UIColor, fill: UIColor)
-```
-
-**Parameters**
-
-`stroke`: The stroke colour of the overlay.
-`fill`: The fill in colour of the overlay.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// RGB 0 ~ 255, alpha 0 ~ 1
-UIColor* strokeColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-UIColor* fillColor = [UIColor colorWithRed:0 green:245 blue:255 alpha:0.5];
-[_dceView setOverlayColour:strokeColor fill:fillColor];
-```
-2.
-```swift
-// RGB 0 ~ 255, alpha 0 ~ 1
-let strokeColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-let fillColour = UIColor(red: 0, green: 245, blue: 255, alpha: 0.5)
-_dceView.setOverlayColour(strokeColour, fill: fillcolour)
-```
-
-
-
-## viewfinderVisible
-
-> The method is deprecated
-
-The property stores the BOOL value that controls the visibility of the viewfinder.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL viewfinderVisible;
-```
-2.
-```swift
-var viewfinderVisible: Bool { get set }
-```
-
-**Remarks**
-
-If the property value is `true`, the `cameraView` will try to create and display a viewfinder. Otherwise, the `cameraView` will not create the viewfinder.
-
-
-
-## setViewfinder
-
-> The method is deprecated
-
-Set the attribute of the viewfinder. Currently only available for position and size setting.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setViewfinder:(CGFloat)left top:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func setViewFinder(_ left: CGFloat, top: CGFloat, right: CGFloat, bottom: CGFloat, error: NSErrorPointer)
-```
-
-**Parameters**
-
-`left`: The distance (by percentage) between the left border of the viewfinder and the left side of the screen. The default value is 0.15.
-`top`: The distance (by percentage) between the top border of the viewfinder and the top side of the screen. The default value is 0.3.
-`right`: The distance (by percentage) between the right border of the viewfinder and the left side of the screen. The default value is 0.85.
-`bottom`: The distance (by percentage) between the bottom border of the viewfinder and the top side of the screen. The default value is 0.7.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dceView setViewfinder:0.1 top: 0.3 right: 0.9 bottom: 0.7];
-```
-2.
-```swift
-_dceView.setViewfinder(0.1, top: 0.3, right: 0.9, bottom: 0.7)
-```
-
-**Remarks**
-
-The viewfinder is built based on the screen coordinate system. The origin of the coordinate is the left-top point of the mobile device. The `left border` of the viewfinder always means the closest border that parallels to the left side of the mobile device no matter how the mobile device is rotated.
-
-
diff --git a/programming-old/ios/auxiliary-api/dcedrawinglayer-v3.0.3.md b/programming-old/ios/auxiliary-api/dcedrawinglayer-v3.0.3.md
deleted file mode 100644
index ea5f7a7d..00000000
--- a/programming-old/ios/auxiliary-api/dcedrawinglayer-v3.0.3.md
+++ /dev/null
@@ -1,312 +0,0 @@
----
-layout: default-layout
-title: iOS DCEDrawingLayer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCEDrawingLayer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DCEDrawingLayer
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEDrawingLayer Class
-permalink: /programming/ios/auxiliary-api/dcedrawinglayer-v3.0.3.html
----
-
-# DCEDrawingLayer
-
-The layers that contains `DrawingItems`. Users can add configurations for the `DrawingItems` via `DCEDrawingLayer`
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCEDrawingLayer
-```
-2.
-```swift
-class DCEDrawingLayer : NSObject
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`initWithId`](#dcedrawinglayer) | The constructor of the `DCEDrawingLayer` class. |
-| [`id`](#id) | Get the `DrawingLayer` ID of the `DrawingLayer`. |
-| [`drawingItems`](#drawingitems) | A list of `DrawingItems`. |
-| [`addDrawingItems`](#adddrawingitems) | Add a list of `DrawingItems` to the `DrawingLayer`. These `DrawingItems` will be appended to the `DrawingItem` list of the current `DrawingLayer`. |
-| [`setDrawingStyleId`](#setdrawingstyleid) | Set the `DrawingStyle` of the `DrawingLayer` by ID. |
-| [`setDrawingStyleId:state:`](#setdrawingstyleidstate) | Set the `DrawingStyle` of the `DrawingLayer` by ID. |
-| [`setDrawingStyleId:state:mediaType:`](#setdrawingstyleidstatemediatype) | Set the `DrawingStyle` of the `DrawingLayer` by ID. |
-| [`visible`](#visible) | The property that stores the visibility of the `DrawingLayer`. |
-
-
-
-## initWithId
-
-The constructor of the [`DCEDrawingLayer`](dcedrawinglayer.html) class. Initialize the instance of the [`DCEDrawingLayer`](dcedrawinglayer.html) class.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype) initWithId:(NSInteger)id;
-```
-2.
-```swift
-init(id layerId: Int)
-```
-
-**Parameters**
-
-`id`: Indicates the id of the layer.
-
-**Remarks**
-
-Please initialize the DrawingLayers via the following methods:
-
-- [`DCEImageEditorView.createDrawingLayer`](dceimageeditorview.html#createdrawinglayer)
-- [`DCECameraView.createDrawingLayer`](dcecameraview.html#createdrawinglayer)
-
-
-
-## id
-
-The ID of the `DrawingLayer`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) NSInteger layerId;
-```
-2.
-```swift
-var layerId: Int { get }
-```
-
-The ID can be one of the following:
-
-- `DDN_LAYER_ID`
-- `DBR_LAYER_ID`
-- `DLR_LAYER_ID`
-- `USER_DEFINED_LAYER_BASE_ID`
-
-
-
-## drawingItems
-
-The property that stores all the `DrawingItems` on the layer. This property determines which `DrawingItems` will be displayed on the layer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, strong, readwrite, nullable) NSArray *drawingItems;
-```
-2.
-```swift
-var drawingItems: [DrawingItem]? { get set }
-```
-
-## addDrawingItems
-
-Add a list of `DrawingItems` to the `DrawingLayer`. These `DrawingItems` will be appended to the property `drawingItems`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) addDrawingItems:(NSArray*)items;
-```
-2.
-```swift
-func addDrawingItems(_ items: [DrawingItem])
-```
-
-**Parameters**
-
-`items`: A list of `DrawingItems`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// Create a new DrawingItem array.
-NSMutableArray *array = [NSMutableArray array];
-// You can append QuadDrawingItems, RectDrawingItems and TextDrawingItems in the array.
-// For example, we use QuadDrawingItems here. The quad data here is obtained from Dynamsoft Document Normalizer
-for (iDetectedQuadResult *detectedQuadResult in [StaticClass instance].quadArr) {
- iQuadrilateral *quad = detectedQuadResult.location;
- QuadDrawingItem *quadItem = [[QuadDrawingItem alloc] initWithQuad:quad];
- [array addObject:quadItem];
-}
-layer.drawingItems = array;
-```
-2.
-```swift
-// Create a new DrawingItem array.
-var array:[DrawingItem]? = []
-// You can append QuadDrawingItems, RectDrawingItems and TextDrawingItems in the array.
-// For example, we use QuadDrawingItems here. The quad data here is obtained from Dynamsoft Document Normalizer
-for detectQuadResult in StaticClass.instance.quadArray{
- let quad = detectQuadResult.location
- let quadItem = QuadDrawingItem.init(quad: quad)
- array?.append(quadItem)
-}
-// Assign the new DrawingItem array to the drawingItems.
-layer.drawingItems = array
-```
-
-
-
-## setDrawingStyleId
-
-Specify a style ID for all available `DrawingItems`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setDrawingStyleId:(NSInteger)styleId;
-```
-2.
-```swift
-func setDrawingStyleId(_ styleId: Int)
-```
-
-**Parameters**
-
-`styleId`: The style ID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[drawingLayer setDrawingStyleId:0];
-```
-2.
-```swift
-drawingLayer.setDrawingStyleId(0)
-```
-
-
-
-## setDrawingStyleId:state:
-
-Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). The `state`is a filter of the `DrawingItems`. All the eligible `DrawingItems` will be changed to the input style.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setDrawingStyleId:(NSInteger)styleId
- state:(EnumDrawingItemState)state;
-```
-2.
-```swift
-func setDrawingStyleId(_ styleId: Int, state: EnumDrawingItemState)
-```
-
-**Parameters**
-
-`styleId`: The style ID.
-`state`: The state of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[drawingLayer setDrawingStyleId:0 state:EnumDrawingItemStateSelected];
-```
-2.
-```swift
-drawingLayer.setDrawingStyleId(0, state:EnumDrawingItemState.selected)
-```
-
-
-
-## setDrawingStyleId:state:mediaType:
-
-Specify a style ID for the targeting [`DrawingItems`](drawingitem.html). The `state` and `mediaType` are filters of the `DrawingItems`. All the eligible `DrawingItems` will be changed to the input style.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setDrawingStyleId:(NSInteger)styleId
- state:(EnumDrawingItemState)state
- mediaTypes:(NSArray*)mediaTypes;
-```
-2.
-```swift
-func setDrawingStyleId(_ styleId: Int, state: EnumDrawingItemState, mediaType: EnumDrawingItemMediaType)
-```
-
-**Parameters**
-
-`styleId`: The style ID.
-`state`: The state of the `DrawingItem`.
-`mediaType`: The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[drawingLayer setDrawingStyleId:0 state:EnumDrawingItemStateSelected mediaType:@[@(EnumDrawingItemMediaTypeRectangle), @(EnumDrawingItemMediaTypeQuadrilateral)]];
-```
-2.
-```swift
-drawingLayer.setDrawingStyleId(0, state:EnumDrawingItemState.selected, mediaType:[EnumDrawingItemMediaType.quadrilateral.rawValue, EnumDrawingItemMediaType.rectangle.rawValue])
-```
-
-
-
-## visible
-
-The property that stores the visibility of the `DrawingLayer`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL visible;
-```
-2.
-```swift
-var visible: Bool { get set }
-```
-
-**Remarks**
-
-When visible is true, the `DrawingLayer` is visible. Otherwise, the `DrawingLayer` is invisible.
diff --git a/programming-old/ios/auxiliary-api/dcefeedback-v2.3.20.md b/programming-old/ios/auxiliary-api/dcefeedback-v2.3.20.md
deleted file mode 100644
index 200c0cfa..00000000
--- a/programming-old/ios/auxiliary-api/dcefeedback-v2.3.20.md
+++ /dev/null
@@ -1,86 +0,0 @@
----
-layout: default-layout
-title: iOS DCEFeedback Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCEFeedback Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DCEFeedback
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEFeedback Class
-permalink: /programming/ios/auxiliary-api/dcefeedback-v2.3.20.html
----
-
-# DCEFeedback
-
-With DCEFeedback APIs, user can trigger feedback on the device to respond for some specific events.
-
-```objc
-@interface DCEFeedback : NSObject
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`vibrate`](#vibrate) | Trigger a vibration when the method is called. |
-| [`beep`](#beep) | Trigger a beep when the method is called. |
-
-## vibrate
-
-Trigger a vibrate when the method is called.
-
-```objc
-+ (void)vibrate;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DCEFeedback vibrate];
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-- (void)textResultCallback:(NSInteger)frameId imageData:(iImageData *)imageData results:(NSArray *)results{
- [DCEFeedback vibrate];
-}
-```
-2.
-```swift
-DCEFeedback.vibrate
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-func textResultCallback(_ frameId: Int, imageData: iImageData, results: [iTextResult]?) {
- DCEFeedback.beep()
-}
-```
-
-## beep
-
-Trigger a beep when the method is called.
-
-```objc
-+ (void)beep;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DCEFeedback beep];
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-- (void)textResultCallback:(NSInteger)frameId imageData:(iImageData *)imageData results:(NSArray *)results{
- [DCEFeedback beep];
-}
-```
-2.
-```swift
-DCEFeedback.beep()
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-func textResultCallback(_ frameId: Int, imageData: iImageData, results: [iTextResult]?) {
- DCEFeedback.beep()
-}
-```
diff --git a/programming-old/ios/auxiliary-api/dcefeedback-v3.0.3.md b/programming-old/ios/auxiliary-api/dcefeedback-v3.0.3.md
deleted file mode 100644
index 8c63df59..00000000
--- a/programming-old/ios/auxiliary-api/dcefeedback-v3.0.3.md
+++ /dev/null
@@ -1,113 +0,0 @@
----
-layout: default-layout
-title: iOS DCEFeedback Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCEFeedback Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DCEFeedback
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEFeedback Class
-permalink: /programming/ios/auxiliary-api/dcefeedback-v3.0.3.html
----
-
-# DCEFeedback
-
-With DCEFeedback APIs, user can trigger feedback on the device to respond for some specific events.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCEFeedback : NSObject
-```
-2.
-```swift
-class DCEFeedback : NSObject
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`vibrate`](#vibrate) | Trigger a vibration when the method is called. |
-| [`beep`](#beep) | Trigger a beep when the method is called. |
-
-## vibrate
-
-Trigger a vibrate when the method is called.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+ (void)vibrate;
-```
-2.
-```swift
-class func vibrate()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DCEFeedback vibrate];
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-- (void)textResultCallback:(NSInteger)frameId imageData:(iImageData *)imageData results:(NSArray *)results{
- [DCEFeedback vibrate];
-}
-```
-2.
-```swift
-DCEFeedback.vibrate
-// For example, if `vibrate` is called in the TextResultCallback of DBR, the device will trigger a vibration each time when barcode result is detected.
-func textResultCallback(_ frameId: Int, imageData: iImageData, results: [iTextResult]?) {
- DCEFeedback.beep()
-}
-```
-
-## beep
-
-Trigger a beep when the method is called.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+ (void)beep;
-```
-2.
-```swift
-class func beep()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DCEFeedback beep];
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-- (void)textResultCallback:(NSInteger)frameId imageData:(iImageData *)imageData results:(NSArray *)results{
- [DCEFeedback beep];
-}
-```
-2.
-```swift
-DCEFeedback.beep()
-// For example, if `beep` is called in the TextResultCallback of DBR, the device will trigger a beep each time when barcode result is detected.
-func textResultCallback(_ frameId: Int, imageData: iImageData, results: [iTextResult]?) {
- DCEFeedback.beep()
-}
-```
diff --git a/programming-old/ios/auxiliary-api/dceframe-v1.0.3.md b/programming-old/ios/auxiliary-api/dceframe-v1.0.3.md
deleted file mode 100644
index 4f0d7a5e..00000000
--- a/programming-old/ios/auxiliary-api/dceframe-v1.0.3.md
+++ /dev/null
@@ -1,94 +0,0 @@
----
-layout: default-layout
-title: iOS FramePackage Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS FramePackage Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS FramePackage Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS FramePackage Class
-permalink: /programming/ios/auxiliary-api/dceframe-v1.0.3.html
----
-
-# FramePackage
-
-The `FramePackage` is the class that stores pixel data and further information.
-
-```objc
-@interface FramePackage : NSObject
-```
-
-| Attribute Name | Type |
-|------|------|
-| [`buffer`](#buffer) | NSData* |
-| [`width`](#width) | NSNumber* |
-| [`height`](#height) | NSNumber* |
-| [`stride`](#stride) | NSNumber* |
-| [`pixelFormat`](#pixelformat) | NSString* |
-| [`frameID`](#frameid) | NSNumber* |
-| [`fastFrameID`](#fastframeid) | NSNumber* |
-| [`imageBuffer`](#imagebuffer) | CVImageBufferRef |
-
-## buffer
-
-Store the buffered frame data in NSData.
-
-```objc
-NSData* buffer
-```
-
-## width
-
-Store the width of the frame.
-
-```objc
-NSNumber* width
-```
-
-## height
-
-Store the height of the frame.
-
-```objc
-NSNumber* height
-```
-
-## stride
-
-Store the stride of the frame.
-
-```objc
-NSNumber* stride
-```
-
-## pixelFormat
-
-Store the pixel format of the frame.
-
-```objc
-NSString* pixelFormat
-```
-
-## frameID
-
-Store the frame ID of the frame.
-
-```objc
-NSNumber* frameID
-```
-
-## fastFrameID
-
-Store the fast frame ID of the frame.
-
-```objc
-NSNumber* fastFrameID
-```
-
-## imageBuffer
-
-Store the buffered frame data in CVImageBufferRef.
-
-```objc
-CVImageBufferRef imageBuffer
-```
diff --git a/programming-old/ios/auxiliary-api/dceframe-v2.3.20.md b/programming-old/ios/auxiliary-api/dceframe-v2.3.20.md
deleted file mode 100644
index a1f3f2b3..00000000
--- a/programming-old/ios/auxiliary-api/dceframe-v2.3.20.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-layout: default-layout
-title: iOS DCEFrame Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCEFrame Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEFrame Class
-permalink: /programming/ios/auxiliary-api/dceframe-v2.3.20.html
----
-
-# DCEFrame
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-```objc
-@interface DCEFrame : NSObject
-```
-
-| Method & Property Name | Type/Return Value | Description |
-| ---------------------- | ----------------- | ----------- |
-| [`imageData`](#imagedata) | *NSData* * | The property stores the pixel data of the image. |
-| [`width`](#width) | *NSInteger* | The property stores the pixel width of the image. |
-| [`height`](#height) | *NSInteger* | The property stores the pixel height of the image. |
-| [`stride`](#stride) | *NSInteger* | The property stores the stride of the image. |
-| [`pixelFormat`](#pixelformat) | *NSInteger* | The property stores the pixel format of the image. |
-| [`frameID`](#frameid) | *NSInteger* | The property stores the `frameID` of the frame. |
-| [`quality`](#quality) | [`EnumFrameQuality`]({{site.dce-enums}}video-frame-quality.html?lang=objc,swift) | The property stores the quality of the `DCEFrame` image. User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown. |
-| [`isCropped`](#iscropped) | *BOOL* | The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`cropRegion`](#cropregion) | *CGRect* | The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null. |
-| [`orientation`](#orientation) | *NSInteger* | The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation. |
-| [`toUIImage`](#touiimage) | *UIImage* * | The method converts the image to `UIImage` to make it visible on the UI. |
-
-## imageData
-
-The property stores the pixel data of the image.
-
-```objc
-NSData* imageData
-```
-
-
-
-## width
-
-The property stores the pixel width of the image.
-
-```objc
-NSInteger width
-```
-
-
-
-## height
-
-The property stores the pixel height of the image.
-
-```objc
-NSInteger height
-```
-
-
-
-## stride
-
-The property stores the stride of the image.
-
-```objc
-NSInteger stride
-```
-
-
-
-## pixelFormat
-
-The property stores the pixel format of the image. The property value is one of the Enumeration value of `ImagePixelFormat`. Currently, the image output formats of `DCEFrame` are NV21 or ARGB_8888. View more in Dynamsoft Barcode Reader Enumeration [`ImagePixelFormat`]({{site.barcode-enum}}other-enums.html#imagepixelformat)
-
-```objc
-NSInteger pixelFormat
-```
-
-
-
-## frameID
-
-The property stores the `frameID` of the frame.
-
-```objc
-NSInteger frameID
-```
-
-
-
-## quality
-
-The property stores the quality of the `DCEFrame` image. User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown. View more about the frame quality in enumeration [`EnumFrameQuality`]({{site.dce-enums}}video-frame-quality.html?lang=objc,swift).
-
-```objc
-EnumFrameQuality quality
-```
-
-
-
-## isCropped
-
-The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. Property value `true` means the image is cropped and `false` means the image has never been cropped.
-
-```objc
-BOOL isCropped
-```
-
-
-
-## cropRegion
-
-The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null.
-
-```objc
-CGRect cropRegion
-```
-
-
-
-## orientation
-
-The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270, which depends on the device orientation.
-
-```objc
-NSInteger orientation
-```
-
-
-
-
All examples of the orientation
-
-
-
-
-## toUIImage
-
-The method converts the image to `UIImage` to make it visible on the UI.
-
-```objc
-- (UIImage*)toUIImage;
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCEFrame *dceFrame;
-...
-[dceFrame toUIImage];
-```
-2.
-```swift
-var dceFrame:DCEFrame! = nil
-...
-dceFrame.toUIImage()
-```
diff --git a/programming-old/ios/auxiliary-api/dceframe-v3.0.3.md b/programming-old/ios/auxiliary-api/dceframe-v3.0.3.md
deleted file mode 100644
index 070e6c9d..00000000
--- a/programming-old/ios/auxiliary-api/dceframe-v3.0.3.md
+++ /dev/null
@@ -1,281 +0,0 @@
----
-layout: default-layout
-title: iOS DCEFrame Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCEFrame Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEFrame Class
-permalink: /programming/ios/auxiliary-api/dceframe-v3.0.3.html
----
-
-# DCEFrame
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCEFrame : NSObject
-```
-2.
-```swift
-class DCEFrame : iImageData
-```
-
-| Method & Property Name | Type/Return Value | Description |
-| ---------------------- | ----------------- | ----------- |
-| [`bytes`](#imagedata) | *NSData* * | The property stores the pixel data of the image. |
-| [`width`](#width) | *NSInteger* | The property stores the pixel width of the image. |
-| [`height`](#height) | *NSInteger* | The property stores the pixel height of the image. |
-| [`stride`](#stride) | *NSInteger* | The property stores the stride of the image. |
-| [`format`](#pixelformat) | *NSInteger* | The property stores the pixel format of the image. |
-| [`frameID`](#frameid) | *NSInteger* | The property stores the `frameID` of the frame. |
-| [`quality`](#quality) | [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html) | The property stores the quality of the `DCEFrame` image. User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown. |
-| [`isCropped`](#iscropped) | *BOOL* | The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`cropRegion`](#cropregion) | *CGRect* | The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null. |
-| [`orientation`](#orientation) | *NSInteger* | The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation. |
-| [`toUIImage`](#touiimage) | *UIImage* * | The method converts the image to `UIImage`. |
-
-## imageData
-
-The property stores the pixel data of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSData* imageData
-```
-2.
-```swift
-var bytes: Data? { get set }
-```
-
-
-
-## width
-
-The property stores the pixel width of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger width
-```
-2.
-```swift
-var width: Int { get set }
-```
-
-
-
-## height
-
-The property stores the pixel height of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger height
-```
-2.
-```swift
-var height: Int { get set }
-```
-
-
-
-## stride
-
-The property stores the stride of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger stride
-```
-2.
-```swift
-var stride: Int { get set }
-```
-
-
-
-## pixelFormat
-
-The property stores the pixel format of the image. The property value is one of the Enumeration value of `ImagePixelFormat`. Currently, the image output formats of `DCEFrame` are NV21 or ARGB_8888. View more in [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=ios)
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger pixelFormat
-```
-2.
-```swift
-var pixelFormat: Int { get set }
-```
-
-
-
-## frameID
-
-The property stores the `frameID` of the frame.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameID
-```
-2.
-```swift
-var frameID: Int { get set }
-```
-
-
-
-## quality
-
-The property indicates the image quality of the `DCEFrame`. View more in [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html). User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumFrameQuality quality
-```
-2.
-```swift
-var quality: EnumFrameQuality { get set }
-```
-
-
-
-## isCropped
-
-The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. Property value `true` means the image is cropped and `false` means the image has never been cropped.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL isCropped
-```
-2.
-```swift
-var isCropped: Bool { get set }
-```
-
-
-
-## cropRegion
-
-The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGRect cropRegion
-```
-2.
-```swift
-var cropRegion: CGRect { get set }
-```
-
-
-
-## orientation
-
-The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270, which depends on the device orientation.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger orientation
-```
-2.
-```swift
-var orientation: Int { get set }
-```
-
-
-
-
All examples of the orientation
-
-
-
-
-## toUIImage
-
-The method converts the image to `UIImage`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (UIImage * _Nullable)toUIImage:(NSError *_Nullable *_Nullable)error;
-```
-2.
-```swift
-func toUIImage() throws -> UIImage
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCEFrame *dceFrame;
-/*
- ...
-*/
-[dceFrame toUIImage];
-```
-2.
-```swift
-var dceFrame:DCEFrame! = nil
-/*
- ...
-*/
-dceFrame.toUIImage()
-```
diff --git a/programming-old/ios/auxiliary-api/dceframe.md b/programming-old/ios/auxiliary-api/dceframe.md
deleted file mode 100644
index 598d0d3e..00000000
--- a/programming-old/ios/auxiliary-api/dceframe.md
+++ /dev/null
@@ -1,283 +0,0 @@
----
-layout: default-layout
-title: iOS DCEFrame Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCEFrame Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS DCEFrame Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEFrame Class
-permalink: /programming/ios/auxiliary-api/dceframe.html
----
-
-# DCEFrame
-
-> Removed in v4.0.
-
-The `DCEFrame` is the class that stores pixel data and further information.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCEFrame : NSObject
-```
-2.
-```swift
-class DCEFrame : iImageData
-```
-
-| Method & Property Name | Type/Return Value | Description |
-| ---------------------- | ----------------- | ----------- |
-| [`bytes`](#imagedata) | *NSData* * | The property stores the pixel data of the image. |
-| [`width`](#width) | *NSInteger* | The property stores the pixel width of the image. |
-| [`height`](#height) | *NSInteger* | The property stores the pixel height of the image. |
-| [`stride`](#stride) | *NSInteger* | The property stores the stride of the image. |
-| [`format`](#pixelformat) | *NSInteger* | The property stores the pixel format of the image. |
-| [`frameID`](#frameid) | *NSInteger* | The property stores the `frameID` of the frame. |
-| [`quality`](#quality) | [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html) | The property stores the quality of the `DCEFrame` image. User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown. |
-| [`isCropped`](#iscropped) | *BOOL* | The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. |
-| [`cropRegion`](#cropregion) | *CGRect* | The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null. |
-| [`orientation`](#orientation) | *NSInteger* | The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270 with depends on the device orientation. |
-| [`toUIImage`](#touiimage) | *UIImage* * | The method converts the image to `UIImage`. |
-
-## imageData
-
-The property stores the pixel data of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSData* imageData
-```
-2.
-```swift
-var bytes: Data? { get set }
-```
-
-
-
-## width
-
-The property stores the pixel width of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger width
-```
-2.
-```swift
-var width: Int { get set }
-```
-
-
-
-## height
-
-The property stores the pixel height of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger height
-```
-2.
-```swift
-var height: Int { get set }
-```
-
-
-
-## stride
-
-The property stores the stride of the image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger stride
-```
-2.
-```swift
-var stride: Int { get set }
-```
-
-
-
-## pixelFormat
-
-The property stores the pixel format of the image. The property value is one of the Enumeration value of `ImagePixelFormat`. Currently, the image output formats of `DCEFrame` are NV21 or ARGB_8888. View more in [`EnumImagePixelFormat`]({{ site.core-enums }}image-pixel-format.html?src=ios)
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger pixelFormat
-```
-2.
-```swift
-var pixelFormat: Int { get set }
-```
-
-
-
-## frameID
-
-The property stores the `frameID` of the frame.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameID
-```
-2.
-```swift
-var frameID: Int { get set }
-```
-
-
-
-## quality
-
-The property indicates the image quality of the `DCEFrame`. View more in [`EnumFrameQuality`]({{ site.dce-enums }}video-frame-quality.html). User have to enable the frame filter feature to get the quality (high/low) of the `DCEFrame`. Otherwise, the frame quality will be unknown.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumFrameQuality quality
-```
-2.
-```swift
-var quality: EnumFrameQuality { get set }
-```
-
-
-
-## isCropped
-
-The property stores a boolean value that recording whether the image is cropped. The frames can be cropped if `fast mode` is enabled. Property value `true` means the image is cropped and `false` means the image has never been cropped.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL isCropped
-```
-2.
-```swift
-var isCropped: Bool { get set }
-```
-
-
-
-## cropRegion
-
-The property stores a CGRect value that means the crop region of the image (if the image is cropped). If the image is not cropped, the value will be null.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGRect cropRegion
-```
-2.
-```swift
-var cropRegion: CGRect { get set }
-```
-
-
-
-## orientation
-
-The property stores an int value that means the rotation angle of the image. The value is 0, 90, 180 or 270, which depends on the device orientation.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger orientation
-```
-2.
-```swift
-var orientation: Int { get set }
-```
-
-
-
-
All examples of the orientation
-
-
-
-
-## toUIImage
-
-The method converts the image to `UIImage`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (UIImage * _Nullable)toUIImage:(NSError *_Nullable *_Nullable)error;
-```
-2.
-```swift
-func toUIImage() throws -> UIImage
-```
-
-**Return Value**
-
-The converted image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property(nonatomic, strong) DCEFrame *dceFrame;
-/*
- ...
-*/
-[dceFrame toUIImage];
-```
-2.
-```swift
-var dceFrame:DCEFrame! = nil
-/*
- ...
-*/
-dceFrame.toUIImage()
-```
diff --git a/programming-old/ios/auxiliary-api/dceimageeditorview-v3.0.3.md b/programming-old/ios/auxiliary-api/dceimageeditorview-v3.0.3.md
deleted file mode 100644
index 58b49e35..00000000
--- a/programming-old/ios/auxiliary-api/dceimageeditorview-v3.0.3.md
+++ /dev/null
@@ -1,219 +0,0 @@
----
-layout: default-layout
-title: iOS DCEImageEditorView Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DCEImageEditorView Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DCEImageEditorView
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DCEImageEditorView Class
-permalink: /programming/ios/auxiliary-api/dceimageeditorview-v3.0.3.html
----
-
-# DCEImageEditorView
-
-`DCEImageEditorView` is the class that enable users to add UI configurations on a static image.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DCEImageEditorView : UIView
-```
-2.
-```swift
-class DCEImageEditorView : UIView
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`setOriginalImage`](#setoriginalimage) | Set the background image of the view with an original image. |
-| [`getOriginalImage`](#getoriginalimage) | Get the current backgroud image. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the [`DCEDrawingLayer`](dcedrawinglayer.html) instance with the layer ID. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a user-defined [`DCEDrawingLayer`](dcedrawinglayer.html) instance. |
-| [`getSelectedDrawingItem`](#getselecteddrawingitem) | Get the selected drawing item. |
-
-## setOriginalImage
-
-Set an original image for the view.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setOriginalImage:(ImageData)imageData;
-```
-2.
-```swift
-func setOriginalImage(_ imageData: iImageData)
-```
-
-**Parameters**
-
-`imageData`: The `imageData` of the image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_imageEditorView setOriginalImage:imageData];
-```
-2.
-```swift
-imageEditorView.setOriginalImage(imageData)
-```
-
-## getOriginalImage
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (ImageData*) getOriginalImage;
-```
-2.
-```swift
-func getOriginalImage() -> iImageData
-```
-
-**Return Value**
-
-The `imageData` of the image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-ImageData* imageData = [imageEditorView getOriginalImage];
-```
-2.
-```swift
-let imageData = imageEditorView.getOriginalImage()
-```
-
-## getDrawingLayer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEDrawingLayer*) getDrawingLayer:(NSInteger)id;
-```
-2.
-```swift
-func getDrawingLayer(_ layerId: Int) -> DCEDrawingLayer
-```
-
-**Parameters**
-
-`id`: The id of the drawing layer.
-
-**Available ID List**
-
-| Layer | ID |
-| ----- | -- |
-| DDN_LAYER_ID | 1 |
-| DBR_LAYER_ID | 2 |
-| DLR_LAYER_ID | 3 |
-| USER_DEFINED_LAYER_BASE_ID | 100 |
-
-**Return Value**
-
-The targeting instance of [`DCEDrawingLayer`](dcedrawinglayer.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer* drawingLayer = [imageEditorView getDrawingLayer:DBR_LAYER_ID];
-```
-2.
-```swift
-let drawingLayer = imageEditorView.getDrawingLayer(DBR_LAYER_ID)
-```
-
-## createDrawingLayer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEDrawingLayer*) createDrawingLayer;
-```
-2.
-```swift
-func createDrawingLayer() -> DCEDrawingLayer
-```
-
-**Return Value**
-
-A user-defined drawing layer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer* drawingLayer = [imageEditorView createDrawingLayer];
-```
-2.
-```swift
-let drawingLayer = imageEditorView.createDrawingLayer()
-```
-
-## getSelectedDrawingItem
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DrawingItem*) getSelectedDrawingItem;
-```
-2.
-```swift
-func getSelectedDrawingItem() -> DrawingItem?
-```
-
-**Return Value**
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DrawingItem* item = [imageEditorView getSelectedDrawingItem];
-```
-2.
-```swift
-let item = imageEditorView.getSelectedDrawingItem()
-```
diff --git a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.0.md b/programming-old/ios/auxiliary-api/dlsconnection-v1.0.0.md
deleted file mode 100644
index 6902f283..00000000
--- a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.0.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-layout: default-layout
-title: iOS iDMLTSConnectionParameters Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS iDMLTSConnectionParameters Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS iDMLTSConnectionParameters Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS iDMLTSConnectionParameters Class - v1.0
-permalink: /programming/ios/auxiliary-api/dlsconnection-v1.0.0.html
----
-
-# iDMLTSConnectionParameters
-
-Defines a struct to configure the parameters to connect to the license tracking server.
-
-| Attribute Name | Type |
-|------|------|
-| [`mainServerURL`](#mainserverurl) | NSString* |
-| [`standbyServerURL`](#standbyserverurl) | NSString* |
-| [`organizationID`](#organizationid) | NSString* |
-| [`handshakeCode`](#handshakecode) | NSString* |
-| [`sessionPassword`](#sessionpassword) | NSString* |
-| [`chargeWay`](#chargeway) | EnumDMChargWay |
-| [`UUIDGenerationMethod`](#uuidgenerationmethod) | EnumDMUUIDGenerationMethod |
-| [`maxBufferDays`](#maxbufferdays) | NSInteger |
-| [`limitedLicenseModules`](#limitedlicensemodules) | NSArray* |
-| [`products`](#products) | NSInteger |
-
-## mainServerURL
-
-The URL of the license tracking server.
-
-```objc
-NSString* mainServerURL
-```
-
-## standbyServerURL
-
-The URL of the standby license tracking server.
-
-```objc
-NSString* standbyServerURL
-```
-
-## organizationID
-
-Set the organization ID.
-
-```objc
-NSString* organizationID
-```
-
-## handshakeCode
-
-The handshake code.
-
-```objc
-NSString* handshakeCode
-```
-
-## sessionPassword
-
-The session password of the handshake code set in license tracking server.
-
-```objc
-NSString* sessionPassword
-```
-
-## chargeWay
-
-Set the charge way.
-
-```objc
-EnumDMChargeWay chargeWay
-```
-
-## UUIDGenerationMethod
-
-Set the method to generate UUID.
-
-```objc
-EnumDMUUIDGenerationMethod UUIDGenerationMethod
-```
-
-## maxBufferDays
-
-Set the max days to buffer the license info.
-
-```objc
-NSInteger maxBufferDays
-```
-
-## limitedLicenseModules
-
-Set the count of license modules to use.
-
-```objc
-NSArray* limitedLicenseModules
-```
-
-## products
-
-Set the products. This is a combined value of Product Enumration items.
-
-```objc
-NSInteger products
-```
diff --git a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.1.md b/programming-old/ios/auxiliary-api/dlsconnection-v1.0.1.md
deleted file mode 100644
index edba73ec..00000000
--- a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.1.md
+++ /dev/null
@@ -1,108 +0,0 @@
----
-layout: default-layout
-title: iOS iDCELTSConnectionParameters Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS iDCELTSConnectionParameters Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS iDCELTSConnectionParameters Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS iDCELTSConnectionParameters Class
-permalink: /programming/ios/auxiliary-api/dlsconnection-v1.0.1.html
----
-
-# iDCELTSConnectionParameters
-
-Defines a struct to configure the parameters to connect to the license tracking server.
-
-| Attribute Name | Type |
-|------|------|
-| [`mainServerURL`](#mainserverurl) | NSString* |
-| [`standbyServerURL`](#standbyserverurl) | NSString* |
-| [`organizationID`](#organizationid) | NSString* |
-| [`handshakeCode`](#handshakecode) | NSString* |
-| [`sessionPassword`](#sessionpassword) | NSString* |
-| [`chargeWay`](#chargeway) | EnumDMChargWay |
-| [`UUIDGenerationMethod`](#uuidgenerationmethod) | EnumDMUUIDGenerationMethod |
-| [`maxBufferDays`](#maxbufferdays) | NSInteger |
-| [`limitedLicenseModules`](#limitedlicensemodules) | NSArray* |
-| [`products`](#products) | NSInteger |
-
-## mainServerURL
-
-The URL of the license tracking server.
-
-```objc
-NSString* mainServerURL
-```
-
-## standbyServerURL
-
-The URL of the standby license tracking server.
-
-```objc
-NSString* standbyServerURL
-```
-
-## organizationID
-
-Set the organization ID.
-
-```objc
-NSString* organizationID
-```
-
-## handshakeCode
-
-The handshake code.
-
-```objc
-NSString* handshakeCode
-```
-
-## sessionPassword
-
-The session password of the handshake code set in license tracking server.
-
-```objc
-NSString* sessionPassword
-```
-
-## chargeWay
-
-Set the charge way.
-
-```objc
-EnumDMChargeWay chargeWay
-```
-
-## UUIDGenerationMethod
-
-Set the method to generate UUID.
-
-```objc
-EnumDMUUIDGenerationMethod UUIDGenerationMethod
-```
-
-## maxBufferDays
-
-Set the max days to buffer the license info.
-
-```objc
-NSInteger maxBufferDays
-```
-
-## limitedLicenseModules
-
-Set the count of license modules to use.
-
-```objc
-NSArray* limitedLicenseModules
-```
-
-## products
-
-Set the products. This is a combined value of Product Enumration items.
-
-```objc
-NSInteger products
-```
diff --git a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.3.md b/programming-old/ios/auxiliary-api/dlsconnection-v1.0.3.md
deleted file mode 100644
index 741adbb5..00000000
--- a/programming-old/ios/auxiliary-api/dlsconnection-v1.0.3.md
+++ /dev/null
@@ -1,214 +0,0 @@
----
-layout: default-layout
-title: iOS iDCEDLSConnectionParameters Class - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS iDCEDLSConnectionParameters Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS iDCEDLSConnectionParameters Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS iDCEDLSConnectionParameters Class
-permalink: /programming/ios/auxiliary-api/dlsconnection-v1.0.3.html
----
-
-# iDCEDLSConnectionParameters
-
-Defines a struct to configure the parameters to connect to the Dynamsoft License Server.
-
-```objc
-@interface iDCEDLSConnectionParameters : NSObject
-```
-
-| Attribute Name | Type |
-|------|------|
-| [`mainServerURL`](#mainserverurl) | NSString* |
-| [`standbyServerURL`](#standbyserverurl) | NSString* |
-| [`organizationID`](#organizationid) | NSString* |
-| [`handshakeCode`](#handshakecode) | NSString* |
-| [`sessionPassword`](#sessionpassword) | NSString* |
-| [`chargeWay`](#chargeway) | EnumDMChargWay |
-| [`UUIDGenerationMethod`](#uuidgenerationmethod) | EnumDMUUIDGenerationMethod |
-| [`maxBufferDays`](#maxbufferdays) | NSInteger |
-| [`limitedLicenseModules`](#limitedlicensemodules) | NSArray* |
-| [`products`](#products) | NSInteger |
-
-## mainServerURL
-
-The URL of the Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```objc
-NSString* mainServerURL
-```
-
-**Remarks**
-
-If you choose "Dynamsoft-hosting", then no need to change the value of MainServerURL and StandbyServerURL. When both are set to null (default value), it will connect to Dynamsoft License Servers for online verification.
-
-## standbyServerURL
-
-The URL of the standby Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```objc
-NSString* standbyServerURL
-```
-
-## organizationID
-
-Set the organization ID.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```objc
-NSString* organizationID
-```
-
-## handshakeCode
-
-The handshake code.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```objc
-NSString* handshakeCode
-```
-
-## sessionPassword
-
-The session password of the handshake code set in Dynamsoft License Server.
-
-**Value Range**
-
-Any string value
-
-**Default Value**
-
-null
-
-**Code Snippet**
-
-```objc
-NSString* sessionPassword
-```
-
-## chargeWay
-
-Set the charge way.
-
-**Value Range**
-
-Any one of the [`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway) Enumeration items.
-
-**Default Value**
-
-DM_CW_AUTO
-
-**Code Snippet**
-
-```objc
-EnumDMChargeWay chargeWay
-```
-
-**See Also**
-
-[`EnumDMChargeWay`]({{ site.dce-enums }}enum-1.html?lang=android#enumdmchargeway)
-
-## UUIDGenerationMethod
-
-Set the method to generate UUID.
-
-**Value Range**
-
-Any one of the [`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod) Enumeration items.
-
-**Default Value**
-
-DM_UUIDGM_RANDOM
-
-**Code Snippet**
-
-```objc
-EnumDMUUIDGenerationMethod UUIDGenerationMethod
-```
-
-**See Also**
-
-[`EnumDMUUIDGenerationMethod`]({{ site.dce-enums }}enum-1.html?lang=android#enumcameradmuuidcenerationmethod)
-
-## maxBufferDays
-
-Set the max days to buffer the license info.
-
-**Value Range**
-
-[7,0x7fffffff]
-
-**Default Value**
-
-7
-
-**Code Snippet**
-
-```objc
-NSInteger maxBufferDays
-```
-
-## limitedLicenseModules
-
-Set the count of license modules to use.
-
-```objc
-NSArray* limitedLicenseModules
-```
-
-## products
-
-Set the products. This is a combined value of Product Enumration items.
-
-**Value Range**
-
-Any one of the [`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct) Enumeration items.
-
-**Code Snippet**
-
-```objc
-NSInteger products
-```
-
-**See Also**
-
-[`EnumProduct`]({{ site.dce-enums }}enum-1.html?lang=android#enumproduct)
diff --git a/programming-old/ios/auxiliary-api/dlsconnection.md b/programming-old/ios/auxiliary-api/dlsconnection.md
deleted file mode 100644
index ca41b159..00000000
--- a/programming-old/ios/auxiliary-api/dlsconnection.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-layout: default-layout
-ignore: true
-permalink: /programming/ios/auxiliary-api/dlsconnection.html
----
diff --git a/programming-old/ios/auxiliary-api/drawingitem-quad-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingitem-quad-v3.0.3.md
deleted file mode 100644
index f2ff2195..00000000
--- a/programming-old/ios/auxiliary-api/drawingitem-quad-v3.0.3.md
+++ /dev/null
@@ -1,169 +0,0 @@
----
-layout: default-layout
-title: iOS QuadDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS QuadDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, QuadDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS QuadDrawingItem Class
-permalink: /programming/ios/auxiliary-api/drawingitem-quad-v3.0.3.html
----
-
-# QuadDrawingItem
-
-`QuadDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `QuadDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface QuadDrawingItem (DrawingItem)
-```
-2.
-```swift
-class QuadDrawingItem : DrawingItem
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`initWithQuad`](#initwithquad) | The constructor of `QuadDrawingItem`. Initialize the instance of `QuadDrawingItem`. |
-| [`quad`](#quad) | The `Quadrilateral` property that indicates the position of the `QuadDrawingItem`. |
-| [`drawingStyleId`](#drawingstyleid) | Get the drawing style of the current `DrawingItem`. |
-| [`state`](#state) | Set the state of the current `DrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the current `DrawingItem`. |
-
-
-
-## initWithQuad
-
-The constructor of `QuadDrawingItem`. Initialize the instance of `QuadDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype) initWithQuad:(Quadrilateral*)quad;
-```
-2.
-```swift
-init(quad: iQuadrilateral)
-```
-
-**Parameters**
-
-`quad`: A `Quadrilateral` that includes the position of the `QuadDrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DrawingItem* drawingItem = [[QuadDrawingItem alloc] initWithQuad:quad];
-```
-2.
-```swift
-let drawingItem = QuadDrawingItem.init(quad:quad)
-```
-
-
-
-## quad
-
-The `Quadrilateral` property that indicates the position of the `QuadDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic, readonly) Quadrilateral* quad;
-```
-2.
-```swift
-var quad: iQuadrilateral { get }
-```
-
-
-
-## drawingStyleId
-
-The property that identifies the ID of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) NSInteger drawingStyleId;
-```
-2.
-```swift
-var drawingStyleId: Int { get set }
-```
-
-
-
-## state
-
-The property that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.ios_camera_enhancer }}enum-drawing-item-state.html).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) EnumDrawingItemState state;
-```
-2.
-```swift
-var state: EnumDrawingItemState { get set }
-```
-
-
-
-## getMediaType
-
-Get the media type of the `DrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumDrawingItemMediaType) getMediaType;
-```
-2.
-```swift
-func getMediaType() -> EnumDrawingItemMediaType
-```
-
-**Return Value**
-
-The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumDrawingItemMediaType mediaType = [drawingItem getMediaType];
-```
-2.
-```swift
-let mediaType = drawingItem.getMediaType()
-```
diff --git a/programming-old/ios/auxiliary-api/drawingitem-rect-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingitem-rect-v3.0.3.md
deleted file mode 100644
index 229268d7..00000000
--- a/programming-old/ios/auxiliary-api/drawingitem-rect-v3.0.3.md
+++ /dev/null
@@ -1,170 +0,0 @@
----
-layout: default-layout
-title: iOS RectDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS RectDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, RectDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS RectDrawingItem Class
-permalink: /programming/ios/auxiliary-api/drawingitem-rect-v3.0.3.html
----
-
-# RectDrawingItem
-
-`RectDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `RectDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface RectDrawingItem (DrawingItem)
-```
-2.
-```swift
-class RectDrawingItem : DrawingItem
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`initWithRect`](#initwithrect) | The constructor of `RectDrawingItem`. Initialize the instance of `RectDrawingItem`. |
-| [`rect`](#rect) | The property that indicates the `Rect` of the `RectDrawingItem`. |
-| [`drawingStyleId`](#drawingstyleid) | Get the drawing style of the current `DrawingItem`. |
-| [`state`](#state) | Set the state of the current `DrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the current `DrawingItem`. |
-
-
-
-## initWithRect
-
-The constructor of `RectDrawingItem`. Initialize the instance of `RectDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype) initWithRect:(CGRect)rect;
-```
-2.
-```swift
-init(rect: CGRect)
-```
-
-**Parameters**
-
-`rect`: A `Rect` that indicates the location of the `RectDrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DrawingItem* drawingItem = [[RectDrawingItem alloc] initWithRect:rect];
-```
-2.
-```swift
-let drawingItem = RectDrawingItem.init(rect:rect)
-```
-
-
-
-## rect
-
-The property that indicates the `Rect` of the `RectDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic, readonly) CGRect rect;
-```
-2.
-```swift
-var rect: CGRect { get }
-```
-
-
-
-
-## drawingStyleId
-
-The property that identifies the ID of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) NSInteger drawingStyleId;
-```
-2.
-```swift
-var drawingStyleId: Int { get set }
-```
-
-
-
-## state
-
-The property that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.ios_camera_enhancer }}enum-drawing-item-state.html).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) EnumDrawingItemState state;
-```
-2.
-```swift
-var state: EnumDrawingItemState { get set }
-```
-
-
-
-## getMediaType
-
-Get the media type of the `DrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumDrawingItemMediaType) getMediaType;
-```
-2.
-```swift
-func getMediaType() -> EnumDrawingItemMediaType
-```
-
-**Return Value**
-
-The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumDrawingItemMediaType mediaType = [drawingItem getMediaType];
-```
-2.
-```swift
-let mediaType = drawingItem.getMediaType()
-```
diff --git a/programming-old/ios/auxiliary-api/drawingitem-text-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingitem-text-v3.0.3.md
deleted file mode 100644
index 833e8baa..00000000
--- a/programming-old/ios/auxiliary-api/drawingitem-text-v3.0.3.md
+++ /dev/null
@@ -1,191 +0,0 @@
----
-layout: default-layout
-title: iOS TextDrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS TextDrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, TextDrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS TextDrawingItem Class
-permalink: /programming/ios/auxiliary-api/drawingitem-text-v3.0.3.html
----
-
-# TextDrawingItem
-
-`TextDrawingItem` is a subclass of `DrawingItem`. Dynamsoft Camera Enhancer will draw the `TextDrawingItem` on the UI if it is created and added to the `DCECameraView` or `DCEImageEditorView`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface TextDrawingItem (DrawingItem)
-```
-2.
-```swift
-class TextDrawingItem : DrawingItem
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`initWithText`](#initwithtext) | The constructor of `TextDrawingItem`. Initialize the instance of `TextDrawingItem`. |
-| [`text`](#text) | The property that indicates the text of the `TextDrawingItem`. |
-| [`rect`](#rect) | The `CGRect` property that indicates the location of the `TextDrawingItem`. |
-| [`drawingStyleId`](#drawingstyleid) | Get the drawing style of the current `DrawingItem`. |
-| [`state`](#state) | Set the state of the current `DrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the current `DrawingItem`. |
-
-
-
-## initWithText
-
-The constructor of `TextDrawingItem`. Initialize the instance of `TextDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype) initWithText:(NSString*)text textRect(CGRect)textRect;
-```
-2.
-```swift
-init(text: String, rect: CGRect)
-```
-
-**Parameters**
-
-`text`: The text of the `TextDrawingItem`.
-`textRect`: The `CGRect` that indicates the location of the `TextDrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DrawingItem* drawingItem = [[TextDrawingItem alloc] initWithText:@"" rect:rect];
-```
-2.
-```swift
-let drawingItem = TextDrawingItem.init(text:"Your-Text", rect:rect)
-```
-
-
-
-## text
-
-The property that indicates the text of the `TextDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic, readonly) NSString* text;
-```
-2.
-```swift
-var text: String { get }
-```
-
-
-
-## rect
-
-The `CGRect` property that indicates the location of the `TextDrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, readonly) CGRect rect;
-```
-2.
-```swift
-var rect: CGRect { get }
-```
-
-
-
-## drawingStyleId
-
-The property that identifies the ID of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) NSInteger drawingStyleId;
-```
-2.
-```swift
-var drawingStyleId: Int { get set }
-```
-
-
-
-## state
-
-The property that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.ios_camera_enhancer }}enum-drawing-item-state.html).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) EnumDrawingItemState state;
-```
-2.
-```swift
-var state: EnumDrawingItemState { get set }
-```
-
-
-
-## getMediaType
-
-Get the media type of the `DrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumDrawingItemMediaType) getMediaType;
-```
-2.
-```swift
-func getMediaType() -> EnumDrawingItemMediaType
-```
-
-**Return Value**
-
-The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumDrawingItemMediaType mediaType = [drawingItem getMediaType];
-```
-2.
-```swift
-let mediaType = drawingItem.getMediaType()
-```
-
diff --git a/programming-old/ios/auxiliary-api/drawingitem-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingitem-v3.0.3.md
deleted file mode 100644
index e67f8558..00000000
--- a/programming-old/ios/auxiliary-api/drawingitem-v3.0.3.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-layout: default-layout
-title: iOS DrawingItem Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DrawingItem Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DrawingItem
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DrawingItem Class
-permalink: /programming/ios/auxiliary-api/drawingitem-v3.0.3.html
----
-
-# DrawingItem
-
-`DrawingItem` is the class for users to draw graphic items on the UI view.
-
-```objc
-@interface DrawingItem
-```
-
-| Method Name | Description |
-| ----------- | ----------- |
-| [`drawingStyleId`](#drawingstyleid) | Get the drawing style of the current `DrawingItem`. |
-| [`state`](#state) | Set the state of the current `DrawingItem`. |
-| [`getMediaType`](#getmediatype) | Get the media type of the current `DrawingItem`. |
-
-
-
-## drawingStyleId
-
-The property that identifies the ID of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) NSInteger drawingStyleId;
-```
-2.
-```swift
-var drawingStyleId: Int { get set }
-```
-
-
-
-## state
-
-The property that indicates the state of the `DrawingItem`. View all available `DrawingItem` states in [`EnumDrawingItemState`]({{ site.ios_camera_enhancer }}enum-drawing-item-state.html).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) EnumDrawingItemState state;
-```
-2.
-```swift
-var state: EnumDrawingItemState { get set }
-```
-
-
-
-## getMediaType
-
-Get the media type of the `DrawingItem`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumDrawingItemMediaType) getMediaType;
-```
-2.
-```swift
-func getMediaType() -> EnumDrawingItemMediaType
-```
-
-**Return Value**
-
-The media type of the `DrawingItem`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumDrawingItemMediaType mediaType = [drawingItem getMediaType];
-```
-2.
-```swift
-let mediaType = drawingItem.getMediaType()
-```
diff --git a/programming-old/ios/auxiliary-api/drawingstyle-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingstyle-v3.0.3.md
deleted file mode 100644
index 9bde16e0..00000000
--- a/programming-old/ios/auxiliary-api/drawingstyle-v3.0.3.md
+++ /dev/null
@@ -1,182 +0,0 @@
----
-layout: default-layout
-title: iOS DrawingStyle Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DrawingStyle Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DrawingStyle
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DrawingStyle Class
-permalink: /programming/ios/auxiliary-api/drawingstyle-v3.0.3.html
----
-
-# DrawingStyle
-
-The class of `DrawingStyle`. It stores the detailed styles of the drawing item.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DrawingStyle : NSObject
-```
-2.
-```swift
-class DrawingStyle : NSObject
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithId`](#initwithid) | The constructor of the `initWithId`. |
-| [`id`](#id) | The id of the `DrawingStyle`. |
-| [`strokeColor`](#strokecolor) | The stroke color of the `DrawingStyle`. |
-| [`fillColor`](#fillcolor) | The fill color of the `DrawingStyle`. |
-| [`textColor`](#textcolor) | The text color of the `DrawingStyle`. |
-| [`strokeWidth`](#strokewidth) | The stroke width of the `DrawingStyle`. |
-| [`font`](#font) | The font settings of the `DrawingStyle`. |
-
-
-
-## initWithId
-
-The constructor of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithId:(NSInteger)id
- strokeColor:(UIColor*)strokeColor
- strokeWidth:(CGFloat)strokeWidth
- fillColor:(UIColor*)fillColor
- textColor:(UIColor*)textColor
- font:(UIFont*) font;
-```
-2.
-```swift
-init(id styleId: Int, stroke strokeColor: UIColor, strokeWidth: CGFloat, fill fillColor: UIColor, textColor: UIColor, font: UIFont)
-```
-
-**Remarks**
-
-Please use [`DrawingStyleManager.createDrawingStyle`](drawingstylemanager.html#createdrawingstyle) to create the drawing style.
-
-
-
-## id
-
-The id of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic, readonly) NSInteger id;
-```
-2.
-```swift
-var styleId: Int { get }
-```
-
-
-
-## strokeColor
-
-The stroke color of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) UIColor strokeColor;
-```
-2.
-```swift
-var strokeColor: UIColor { get set }
-```
-
-
-
-## fillColor
-
-The fill color of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) UIColor fillColor;
-```
-2.
-```swift
-var fillColor: UIColor { get set }
-```
-
-
-
-## textColor
-
-The text color of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) UIColor textColor;
-```
-2.
-```swift
-var textColor: UIColor { get set }
-```
-
-
-
-## strokeWidth
-
-The stroke width of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) CGFloat strokeWidth;
-```
-2.
-```swift
-var strokeWidth: CGFloat { get set }
-```
-
-
-
-## font
-
-The font settings of the `DrawingStyle`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, copy) UIFont *font;
-```
-2.
-```swift
-var font: UIFont { get set }
-```
-
-
diff --git a/programming-old/ios/auxiliary-api/drawingstylemanager-v3.0.3.md b/programming-old/ios/auxiliary-api/drawingstylemanager-v3.0.3.md
deleted file mode 100644
index d5bba77d..00000000
--- a/programming-old/ios/auxiliary-api/drawingstylemanager-v3.0.3.md
+++ /dev/null
@@ -1,145 +0,0 @@
----
-layout: default-layout
-title: iOS DrawingStyleManager Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS DrawingStyleManager Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS, DrawingStyleManager
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS DrawingStyleManager Class
-permalink: /programming/ios/auxiliary-api/drawingstylemanager-v3.0.3.html
----
-
-# DrawingStyleManager
-
-`DrawingStyleManager` is the class for users to create and adjust `DrawingStyles`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DrawingStyleManager
-```
-2.
-```swift
-class DrawingStyleManager : NSObject
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`getDrawingStyle`](#getdrawingstyle) | Get the `DrawingStyle` instance with the style ID. |
-| [`createDrawingStyle`](#createdrawingstyle) | Create a user-defined `DrawingStyle` instance. |
-
-
-
-## getDrawingStyle
-
-Get the `DrawingStyle` instance with the style ID.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+(DrawingStyle*)getDrawingStyle:(NSInteger)styleId;
-```
-2.
-```swift
-class func getDrawingStyle(_ styleId: Int) -> DrawingStyle
-```
-
-**Parameters**
-
-`styleId`: The ID of the target `DrawingStyle`.
-
-**Return Value**
-
-An instance of `DrawingStyle`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DrawingStyle* style = [DrawingStyleManager getDrawingStyle:STYLE_BLUE_STROKE_FILL];
-```
-2.
-```swift
-let style = DrawingStyleManager.getDrawingStyle(STYLE_BLUE_STROKE_FILL)
-```
-
-**Remarks**
-
-There are 8 preset drawing styles.
-
-| ID | Style Name |
-| -- | ---------- |
-| 1 | `STYLE_BLUE_STROKE_FILL` |
-| 2 | `STYLE_GREEN_STROKE_FILL` |
-| 3 | `STYLE_ORANGE_STROKE_FILL` |
-| 4 | `STYLE_YELLOW_STROKE_FILL` |
-| 5 | `STYLE_BLUE_STROKE_FILL` |
-| 6 | `STYLE_GREEN_STROKE_FILL` |
-| 7 | `STYLE_ORANGE_STROKE_FILL` |
-| 8 | `STYLE_YELLOW_STROKE_FILL` |
-
-
-
-## createDrawingStyle
-
-Create a user-defined `DrawingStyle` instance.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+(NSInteger)createDrawingStyle:(UIColor*)strokeColor
- strokeWidth:(CGFloat)strokeWidth
- fillColor:(UIColor*) fillColor
- textColor:(UIColor*) textColor
- font:(UIFont*) font;
-
-```
-2.
-```swift
-class func createDrawingStyle(_ strokeColor: UIColor, strokeWidth: CGFloat, fill fillColor: UIColor, textColor: UIColor, font: UIFont) -> Int
-```
-
-**Parameters**
-
-`strokeColor`: The stroke colour.
-`strokeWidth`: The width of the stroke.
-`fillColor`: The fill colour.
-`textColor`: The text colour.
-`font`: The font style of the text.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-UIColor *strokeColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIColor *fillColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIColor *textColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIFont *textFont = [UIFont systemFontOfSize:12.0];
-NSInteger myStyle = [DrawingStyleManager createDrawingStyle:strokeColour strokeWidth:2.0 fillColor:fillColour textColor:textColour font:textFont];
-```
-2.
-```swift
-let strokeColor = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let fillColour = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let textColor = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let textFont = UIFont.systemFont(ofSize: 12, weight: UIFont.weight.light)
-let myStyleID = DrawingStyleManager.createDrawingStyle(strokeColor, strokeWidth:1, fillColor:fillColor, textColor:textColor, font: textFont)
-```
diff --git a/programming-old/ios/auxiliary-api/guide-of-drawing-items-v3.0.3.md b/programming-old/ios/auxiliary-api/guide-of-drawing-items-v3.0.3.md
deleted file mode 100644
index 52646c76..00000000
--- a/programming-old/ios/auxiliary-api/guide-of-drawing-items-v3.0.3.md
+++ /dev/null
@@ -1,223 +0,0 @@
----
-layout: default-layout
-title: iOS UI Configuration - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - Guide on iOS page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on iOS
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/auxiliary-api/guide-of-drawing-items-v3.0.3.html
----
-
-# UI Configurations Classes
-
-| Class | Description |
-| ----- | ----------- |
-| [`DCECameraView`](dcecameraview.html) | The view displays video streaming and auxiliary UI elements. |
-| [`DCEImageEditorView`](dceimageeditorview.html) | The view displays still image and auxiliary UI elements. |
-
-`DCECameraView` and `DCEImageEditorView` are the main classes for user to configure the UI. `DrawingItems` are the UI elements that user can create, modify and interact on the UI view. All the `DrawingItems` are contained in `DCEDrawingLayers` and finally displayed on the `DCECameraView` or `DCEImageEditorView`.
-
-
-
-
DrawingItems in DCECameraView and DCEImageEditorView
-
-
-## Basic Usages
-
-
-
-### Display Highlight Overlays
-
-When `DynamsoftCameraEnhancer(DCE)` is used together with other Dynamsoft products like `DynamsoftBarcodeReader(DBR)` and `DynamsoftDocumentNormalizer(DDN)`, it can automatically draw highlight overlays (`QuadDrawingItem`) on the detected barcodes or documents. If you want to disable this feature, you can use the following code to stop drawing the highlights.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer *dbrLayer = [imageEditorView getDrawingLayer:DBR_LAYER_ID];
-drawingLayer
-```
-2.
-```swift
-let dbrLayer = imageEditorView.getDrawingLayer(DBR_LAYER_ID)
-dbrLayer.visible = false
-```
-
-
-
-### Style Configuration
-
-You can change the style of the `DrawingItems` specifying a `DrawingStyleId`. The `DrawingStyleId` can be a preset `DrawingStyle` or a user-defined `DrawingStyle`.
-
-To change the style of `DrawingItems` with preset `DrawingStyles`:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DCEDrawingLayer *dbrLayer = [imageEditorView getDrawingLayer:DBR_LAYER_ID];
-// You can change the drawing style of all DrawingItems in the layer.
-[dbrLayer setDrawingStyleId:DrawingStyleManager.STYLE_ORANGE_STROKE];
-// You can also change the drawing style of a part of the DrawingItems.
-[dbrLayer setDrawingStyleId:DrawingStyleManager.STYLE_ORANGE_STROKE state:EnumDrawingItemStateSelected mediaType:EnumDrawingItemMediaTypeRectangle];
-```
-2.
-```swift
-let dbrLayer = imageEditorView.getDrawingLayer(DBR_LAYER_ID)
-// You can change the drawing style of all DrawingItems in the layer.
-dbrLayer.setDrawingStyleId(DrawingStyleManager.STYLE_ORANGE_STROKE)
-// You can also change the drawing style of a part of the DrawingItems.
-dbrLayer.setDrawingStyleId(DrawingStyleManager.STYLE_ORANGE_STROKE, state:EnumDrawingItemStateSelected, mediaType:EnumDrawingItemMediaTypeRectangle)
-```
-
-List of all available preset styles:
-
-```objc
-// DrawingItems on DDN layer are using this style as default.
-#define STYLE_BLUE_STROKE = 1;
-// DrawingItems on DBR layer are using this style as default.
-#define STYLE_GREEN_STROKE = 2;
-// DrawingItems on DLR layer are using this style as default.
-#define STYLE_ORANGE_STROKE = 3;
-// DrawingItems on user defined layer are using this style as default.
-#define STYLE_YELLOW_STROKE = 4;
-// DrawingItems on DDN layer are using this style as default if they are selected.
-#define STYLE_BLUE_STROKE_FILL = 5;
-// DrawingItems on DBR layer are using this style as default if they are selected.
-#define STYLE_GREEN_STROKE_FILL = 6;
-// DrawingItems on DLR layer are using this style as default if they are selected.
-#define STYLE_ORANGE_STROKE_FILL = 7;
-// DrawingItems on user defined layer are using this style as default if they are selected.
-#define STYLE_YELLOW_STROKE_FILL = 8;
-```
-
-
-
-
Preset DrawingStyles
-
-
-If you want to set other styles to your UI elements, you can add your personal defined `DrawingStyles`.
-
-```swift
-
-int myStyleId = DrawingStyleManager.createDrawingStyle(0xff00ff00,2,0xff00ff00,0xff00ff00,12,"sans-serif");
-cameraView.getDrawingLayer(DCEDrawingLayer.DBR_LAYER_ID).setDrawingStyleId(myStyleId);
-```
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// Create a new DrawingStyle via DrawingStyle manager and get the style ID of the new style.
-UIColor *strokeColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIColor *fillColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIColor *textColour = [UIColor colorWithRed:0.2 green:0.3 blue:0.4 alpha:0.5];
-UIFont *textFont = [UIFont systemFontOfSize:12.0];
-// Assign the newly created style to the targeting DrawingItems.
-NSInteger myStyle = [DrawingStyleManager createDrawingStyle:strokeColour strokeWidth:2.0 fillColor:fillColour textColor:textColour font:textFont];
-```
-2.
-```swift
-// Create a new DrawingStyle via DrawingStyle manager and get the style ID of the new style.
-let strokeColor = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let fillColour = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let textColor = UIColor.init(red: 0.2, green: 0.3, blue: 0.4, alpha: 0.5)
-let textFont = UIFont.systemFont(ofSize: 12, weight: UIFont.weight.light)
-// Assign the newly created style to the targeting DrawingItems.
-let myStyleID = DrawingStyleManager.createDrawingStyle(strokeColor, strokeWidth:1, fillColor:fillColor, textColor:textColor, font: textFont)
-```
-
-To modify the existing DrawingStyles:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// Get the style by ID.
-DrawingStyle *myStyle = [DrawingStyleManager getDrawingStyle:STYLE_BLUE_STROKE_FILL];
-// Modify the style.
-myStyle.strokeColor = [UIColor colorWithRed:0.5 green:0.5 blue:0.5 alpha:0.5];
-```
-2.
-```swift
-// Get the style by ID.
-let myStyle = DrawingStyleManager.getDrawingStyle(STYLE_BLUE_STROKE_FILL)
-// Modify the style.
-myStyle.strokeColor = UIColor.init(red: 0.7, green: 0.7, blue: 0.7, alpha: 0.5)
-```
-
-
-
-## Advanced Usages
-
-
-
-### Add User Defined UI Elements
-
-Apart from the system-defined items, you can add your personal defined UI elements via the `DrawingItem` APIs. On this page, we will draw a user-defined `quadrilateral` on the `DCEImageEditorView` for example.
-
-1. Create a new `QuadDrawingItem`.
-
-
- >- Objective-C
- >- Swift
- >
- >1.
- ```objc
- // Create a new quadrilateral.
- iQuadrilateral *newQuad = [iQuadrilateral init];
- // Add your code to assign the quad data.
- newQuad = @[@(CGPointMake(x:0, y:0)), @(CGPointMake(x:0, y:100)), @(CGPointMake(x:100, y:100)), @(CGPointMake(x:100, y:0))];
- // Use the newly created quadrilateral to initialize the DrawingItem.
- QuadDrawingItem *newItem = [[QuadDrawingItem alloc] initWithQuad: newQuad];
- ```
- 2.
- ```swift
- // Create a new quadrilateral.
- let newQuad:iQuadrilateral = iQuadrilateral.init()
- // Add your code to assign the quad data.
- newQuad.points = [CGPoint.init(x:0, y:0), CGPoint.init(x:0, y:100), CGPoint.init(x:100, y:100), CGPoint.init(x:100, y:0)]
- // Use the newly created quadrilateral to initialize the DrawingItem.
- let newDrawingItem = QuadDrawingItem.init(quad: newQuad)
- ```
-
-2. Add the Created `DrawingItems` to the view.
-
-
- >- Objective-C
- >- Swift
- >
- >1.
- ```objc
- // Add the previously created drawingItem to an array so that it can be assigned to the drawingItems property of the layer.
- NSMutableArray *array = [NSMutableArray array];
- [array addObject:newDrawingItem];
- // There are multiple layers in DCECameraView and DCEImageEditorView.
- // You must select a layer for your DrawingItems.
- DCEDrawingLayer *layer = [editorView getDrawingLayer:DDN_LAYER_ID];
- // Assign the array to the drawingItems of the layer.
- layer.drawingItems = array;
- ```
- 2.
- ```swift
- // Add the previously created drawingItem to an array so that it can be assigned to the drawingItems property of the layer.
- var array:[DrawingItem]? = []
- array?.append(newDrawingItem)
- // There are multiple layers in DCECameraView and DCEImageEditorView.
- // You must select a layer for your DrawingItems.
- let layer = editorView.getDrawingLayer(DDN_LAYER_ID)
- // Assign the array to the drawingItems of the layer.
- layer.drawingItems = array
- ```
-
-
diff --git a/programming-old/ios/auxiliary-api/index-v3.0.3.md b/programming-old/ios/auxiliary-api/index-v3.0.3.md
deleted file mode 100644
index 05ed759f..00000000
--- a/programming-old/ios/auxiliary-api/index-v3.0.3.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: default-layout
-title: iOS DynamsoftCameraEnhancer Library - Dynamsoft Camera Enhancer Documents
-description: This is the main page of Camera Enhancer API Reference for iOS SDK.
-keywords: api reference, ios, camera enhancer
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-breadcrumbText: iOS Camera Enhancer
-noTitleIndex: true
-permalink: /programming/ios/auxiliary-api/index-v3.0.3.html
----
-
-# Camera Enhancer API Reference
-
-`DynamsoftCameraEnhancer` is the libary that provides camera control and UI configuration APIs.
-
-## Components
-
-**Main Class**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DynamsoftCameraEnhancer`](camera-enhancer.html) | The main class that includes camera control APIs. Features like frame filtering can be enabled via this class. |
-
-**UI Classes**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCECameraView`](dcecameraview.html) | UI view class that displays video streaming. UI configuration APIs are available for users to visualize the detected results on the video streaming. |
-| [`DCEImageEditorView`](dceimageeditorview.html) | UI view class that displays images. UI configuration APIs are available for users to highlight the detected results on the view with quadrilateral elements. The border of the quadrilaterals can be edited so that user can further accurate the detected results. |
-
-
-
-
DynamsoftCameraEnhancer UI View
-
-
-**Auxiliary Classes**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCEFrame`](dceframe.html) | The struct that `DynamsoftCameraEnhancer` stores the video frames. It contains the image data and other information of the video frame. |
-| [`DCEDrawingLayer`](dcedrawinglayer.html) | The layers that contains `DrawingItems`. Users can add configurations for the `DrawingItems` via `DCEDrawingLayer` |
-| [`DrawingItem`](drawingitem.html) | The`DrawingItems` are elements that can be added the UI. |
-| [`QuadDrawingItem`](drawingitem-quad.html) | A subclass of `DrawingItem`. Users can add `QuadDrawingItems` to the layer to display quadrilateral elements on the view. |
-| [`RectDrawingItem`](drawingitem-rect.html) | A subclass of `DrawingItem`. Users can add `RectDrawingItems` to the layer to display rectangle elements on the view. |
-| [`TextDrawingItem`](drawingitem-text.html) | A subclass of `DrawingItem`. Users can add `TextDrawingItems` to the layer to display text box on the view. |
-| [`DrawingStyle`](drawingstyle.html) | `DrawingStyle` stores colour, font and other detailed styles of `DrawingItems`. |
-| [`DrawingStyleManager`](drawingstylemanager.html) | The class for users to create and adjust `DrawingStyles`. |
-
-**Protocols**
-
-| Classes | Description |
-| ------- | ----------- |
-| [`DCEFrameListener`](protocol-dceframelistener.html) | The protocol to handle callback when previewed frame callback is returned. |
-| [`DCECameraStateListener`](protocol-dcecamerastatelistener.html) | The protocol to handle callback when camera state changes. |
diff --git a/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v2.3.20.md b/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v2.3.20.md
deleted file mode 100644
index 78d942cc..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v2.3.20.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-layout: default-layout
-title: iOS API References Protocol DCECameraStateListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCECameraStateListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCECameraStateListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCECameraStateListener
-permalink: /programming/ios/auxiliary-api/protocol-dcecamerastatelistener-v2.3.20.html
----
-
-# DCECameraStateListener
-
-The interface to handle callback when camera state changes.
-
-```objc
-@protocol DCECameraStateListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`stateChangeCallback`](#statechangecallback) | *required* | The callback method is triggered when **camera state** changes. |
-
-## stateChangeCallback
-
-The callback method is triggered when **camera state** changes.
-
-```objc
-- (void)stateChangeCallback:(EnumCameraState)cameraState;
-```
-
-**Parameters**
-
-`cameraState`: The camera state. It includes `opened`, `opening`, `closed` and `closing`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE{
- [_dce setCameraStateListener:self];
-}
-- (void)stateChangeCallback:(EnumCameraState)state{
- // Add your code to do when camera state changes.
-}
-```
-2.
-```swift
-class ViewController: UIViewController,DCECameraStateListener{
- func configurationDCE(){
- dce.setCameraStateListener(self)
- }
- func stateChangeCallback(EnumCameraState currentState){
- // Add your code to do when camera state changes.
- }
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v3.0.3.md b/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v3.0.3.md
deleted file mode 100644
index 958175fb..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dcecamerastatelistener-v3.0.3.md
+++ /dev/null
@@ -1,81 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCECameraStateListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCECameraStateListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCECameraStateListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCECameraStateListener
-permalink: /programming/ios/auxiliary-api/protocol-dcecamerastatelistener-v3.0.3.html
----
-
-# DCECameraStateListener
-
-The protocol to handle callback when camera state changes.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@protocol DCECameraStateListener
-```
-2.
-```swift
-protocol DCECameraStateListener : NSObjectProtocol
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`stateChangeCallback`](#statechangecallback) | *required* | The callback method is triggered when **camera state** changes. |
-
-## stateChangeCallback
-
-The callback method is triggered when **camera state** changes.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)stateChangeCallback:(EnumCameraState)cameraState;
-```
-2.
-```swift
-func stateChangeCallback(_ currentState: EnumCameraState)
-```
-
-**Parameters**
-
-`cameraState`: The camera state. It includes `opened`, `opening`, `closed` and `closing`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE{
- [_dce setCameraStateListener:self];
-}
-- (void)stateChangeCallback:(EnumCameraState)state{
- // Add your code to do when camera state changes.
-}
-```
-2.
-```swift
-class ViewController: UIViewController,DCECameraStateListener{
- func configurationDCE(){
- dce.setCameraStateListener(self)
- }
- func stateChangeCallback(EnumCameraState currentState){
- // Add your code to do when camera state changes.
- }
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v1.0.3.md b/programming-old/ios/auxiliary-api/protocol-dceframelistener-v1.0.3.md
deleted file mode 100644
index 9947d7f6..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v1.0.3.md
+++ /dev/null
@@ -1,138 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol CameraEnhancerListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol CameraEnhancerListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol CameraEnhancerListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol CameraEnhancerListener
-permalink: /programming/ios/auxiliary-api/protocol-dceframelistener-v1.0.3.html
----
-
-# CameraEnhancerListener
-
-The protocol to handle callback when previewed frame callback is returned.
-
-```objc
-@protocol CameraEnhancerListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`onPreviewOriginalFrame`](#onrrevieworiginalframe) | *required* | The previewed original frame callback. |
-| [`onPreviewFilterFrame`](#onpreviewfilterframe) | *optional* | The previewed filtered frame callback. |
-| [`onPreviewFastFrame`](#onpreviewfastframe) | *optional* | The previewed cropped frame callback. |
-
-## onPreviewOriginalFrame
-
-The previewed original frame callback. Add code to use the original frames.
-
-```objc
-- (void)onPreviewOriginalFrame:(FramePackage*)frame;
-```
-
-**Parameters**
-
-`Original frames`: The data of original frame(s). The Camera Enhancer can make preprocessing on video frames. In this callback function, the input parameters are the original frames that are captured by the camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addCameraListener:self];
-- (void)onPreviewOriginalFrame:(FramePackage *) frame{
- // TODO add your code for original frame
-}
-```
-2.
-```swift
-dce.addTorchListener(self)
-func onPreviewOriginalFrame(_ frame: FramePackage){
- // TODO add your code for original frame
-}
-```
-
-**See also**
-
-- [`FramePackage`]({{ site.ios-api-auxiliary }}dceframe.html)
-
-## onPreviewFilterFrame
-
-The previewed filtered frame callback. Add code to use the filtered frames.
-
-```objc
-- (void)onPreviewFilterFrame:(FramePackage*)frame;
-```
-
-**Parameters**
-
-`Filtered frames`: The data of filtered frame(s). The Camera Enhancer can make preprocessing on video frames. If the frame filter processing is enabled, the input parameter of this function will be the filtered frames.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addCameraListener:self];
-- (void)onPreviewFilterFrame:(FramePackage *) frame{
- // TODO add your code for filter frame
-}
-```
-2.
-```swift
-dce.addTorchListener(self)
-func onPreviewFilterFrame(_ frame: FramePackage){
- // TODO add your code for filter frame
-}
-```
-
-**See also**
-
-- [`FramePackage`]({{ site.ios-api-auxiliary }}dceframe.html)
-- [`enableFrameFilter`]({{site.ios-api}}preprocess.html#enableframefilter)
-
-## onPreviewFastFrame
-
-The previewed fast frame callback. Add code to use the cropped frames.
-
-```objc
-- (void)onPreviewFastFrame:(FramePackage*)frame;
-```
-
-**Parameters**
-
-`Fast frames`: The data of cropped frame(s). The Camera Enhancer can make preprocessing on video frames. If the fast mode is enabled, the input parameter of this function will be the specially cropped frames.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addCameraListener:self];
-- (void)onPreviewFastFrame:(FramePackage *) frame{
- // TODO add your code for fast frame
-}
-```
-2.
-```swift
-dce.addTorchListener(self)
-func onPreviewFastFrame(_ frame: FramePackage){
- // TODO add your code for fast frame
-}
-```
-
-**See also**
-
-- [`FramePackage`]({{ site.ios-api-auxiliary }}dceframe.html)
-- [`enableFastMode`]({{site.ios-api}}preprocess.html#enablefastmode)
diff --git a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v2.3.20.md b/programming-old/ios/auxiliary-api/protocol-dceframelistener-v2.3.20.md
deleted file mode 100644
index 66db8e72..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v2.3.20.md
+++ /dev/null
@@ -1,61 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCEFrameListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCEFrameListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCEFrameListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCEFrameListener
-permalink: /programming/ios/auxiliary-api/protocol-dceframelistener-v2.3.20.html
----
-
-# DCEFrameListener
-
-The protocol to handle callback when previewed frame callback is returned.
-
-```objc
-@protocol CameraEnhancerListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`frameOutPutCallback`](#frameoutputcallback) | *required* | Callback when the `DCEFrame` is output. |
-
-## frameOutPutCallback
-
-Callback when the `DCEFrame` is output.
-
-```objc
-- (void)frameOutPutCallback:(DCEFrame*)frame timeStamp:(NSTimeInterval)timeStamp;
-```
-
-**Parameters**
-
-`frame`: The parameter is the original `DCEFrame` with detailed frame information. View more in [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) class.
-`timeStamp`: The time stamp that records when the DCEFrame is output.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-- (void)frameOutPutCallback:(DCEFrame *)frame timeStamp:(NSTimeInterval)timeStamp{
- // TODO add your code
-}
-```
-2.
-```swift
-dce.addListener(self)
-func frameOutPutCallback(_ frame: DCEFrame, timeStamp: TimeInterval){
- // TODO add your code
-}
-```
-
-**See also**
-
-- [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html)
diff --git a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v3.0.3.md b/programming-old/ios/auxiliary-api/protocol-dceframelistener-v3.0.3.md
deleted file mode 100644
index 1b1522e7..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dceframelistener-v3.0.3.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCEFrameListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS Protocol DCEFrameListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCEFrameListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCEFrameListener
-permalink: /programming/ios/auxiliary-api/protocol-dceframelistener-v3.0.3.html
----
-
-# DCEFrameListener
-
-The protocol to handle callback when previewed frame callback is returned.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@protocol CameraEnhancerListener
-```
-2.
-```swift
-protocol DCECameraStateListener : NSObjectProtocol
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`frameOutPutCallback`](#frameoutputcallback) | *required* | Callback when the `DCEFrame` is output. |
-
-## frameOutPutCallback
-
-Callback when the `DCEFrame` is output.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)frameOutPutCallback:(DCEFrame*)frame timeStamp:(NSTimeInterval)timeStamp;
-```
-2.
-```swift
-func frameOutPutCallback(_ frame: DCEFrame, timeStamp: TimeInterval)
-```
-
-**Parameters**
-
-`frame`: The parameter is the original `DCEFrame` with detailed frame information. View more in [`DCEFrame`](dceframe.html) class.
-`timeStamp`: The time stamp that records when the DCEFrame is output.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-- (void)frameOutPutCallback:(DCEFrame *)frame timeStamp:(NSTimeInterval)timeStamp{
- // TODO add your code
-}
-```
-2.
-```swift
-dce.addListener(self)
-func frameOutPutCallback(_ frame: DCEFrame, timeStamp: TimeInterval){
- // TODO add your code
-}
-```
-
-**See also**
-
-- [`DCEFrame`](dceframe.html)
diff --git a/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v2.3.20.md b/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v2.3.20.md
deleted file mode 100644
index 75dd8493..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v2.3.20.md
+++ /dev/null
@@ -1,71 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCEPhotoListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCEPhotoListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCEPhotoListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCEPhotoListener
-permalink: /programming/ios/auxiliary-api/protocol-dcephotolistener-v2.3.20.html
----
-
-# DCEPhotoListener
-
-The interface that provide method for capturing photo from the camera.
-
-```objc
-@protocol DCEPhotoListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`photoOutputCallback`](#photooutputcallback) | *required* | The callback method for user to receive the captured photo. |
-
-## photoOutputCallback
-
-The callback method for user to receive the captured photo. User can complete the method by adding code to execute with the capture image.
-
-```objc
-- (void)photoOutputCallback:(NSData *)jpegBytes;
-```
-
-**Parameters**
-
-`jpegBytes` The byte data of the captured image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE(){
- // When you trigger takePhote method, the library firstly capture a photo
- // When the photo is captured and stored in memory, it will be processed by DBR
- [_dce takePhoto:self]
-}
-- (void)photoOutputCallback:(NSData *)jpegBytes{
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- NSArray *barcodeResults = [_dbr decodeFileInMemory:jpegBytes error:nil];
-}
-```
-2.
-```swift
-class ViewController: UIViewController, DCEPhotoListener {
- func configurationDCE(){
- // When you trigger takePhote method, the library firstly capture a photo
- // When the photo is captured and stored in memory, it will be processed by DBR
- dce.takePhoto()
- }
- func photoOutputCallback(_ jpegByte: Data){
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- let barcodeResults = try? dbr.decodeFileInMemory(jpegByte)
- }
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v3.0.3.md b/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v3.0.3.md
deleted file mode 100644
index f17a7345..00000000
--- a/programming-old/ios/auxiliary-api/protocol-dcephotolistener-v3.0.3.md
+++ /dev/null
@@ -1,75 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCEPhotoListener - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS Protocol DCEPhotoListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCEPhotoListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCEPhotoListener
-permalink: /programming/ios/auxiliary-api/protocol-dcephotolistener-v3.0.3.html
----
-
-# DCEPhotoListener
-
-The protocol that provide method for capturing photo from the camera.
-
-```objc
-@protocol DCEPhotoListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| [`photoOutputCallback`](#photooutputcallback) | *required* | The callback method for user to receive the captured photo. |
-
-## photoOutputCallback
-
-The callback method for user to receive the captured photo. User can complete the method by adding code to execute with the capture image.
-
-```objc
-- (void)photoOutputCallback:(NSData *)jpegBytes;
-```
-
-**Parameters**
-
-`jpegBytes` The byte data of the captured image.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE(){
- // When you trigger takePhote method, the library firstly capture a photo
- // When the photo is captured and stored in memory, it will be processed by DBR
- [_dce takePhoto:self]
-}
-- (void)photoOutputCallback:(NSData *)jpegBytes{
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- NSArray *barcodeResults = [_dbr decodeFileInMemory:jpegBytes error:nil];
-}
-```
-2.
-```swift
-class ViewController: UIViewController, DCEPhotoListener {
- func configurationDCE(){
- // When you trigger takePhote method, the library firstly capture a photo
- // When the photo is captured and stored in memory, it will be processed by DBR
- dce.takePhoto()
- }
- func photoOutputCallback(_ jpegByte: Data){
- // Add your code to execute when photo is captured.
- // For example, you can use Dynamsoft Barcode Reader (DBR) to decode the byte image.
- do{
- let barcodeResults = try dbr.decodeFileInMemory(jpegByte)
- }catch{
- // Add your code to deal with the exceptions.
- }
- }
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-licenselistener-v1.0.3.md b/programming-old/ios/auxiliary-api/protocol-licenselistener-v1.0.3.md
deleted file mode 100644
index 2ba0beb8..00000000
--- a/programming-old/ios/auxiliary-api/protocol-licenselistener-v1.0.3.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCEDLSLicenseVerificationDelegate - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCEDLSLicenseVerificationDelegate page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCEDLSLicenseVerificationDelegate
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCEDLSLicenseVerificationDelegate
-permalink: /programming/ios/auxiliary-api/protocol-licenselistener-v1.0.3.html
----
-
-# DCEDLSLicenseVerificationDelegate
-
-Protocol for a delegate to handle callback when license verification message returned.
-
-```objc
-@protocol DCEDLSLicenseVerificationDelegate
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| `DCEDLSLicenseVerificationCallback` | *required* | The callback of license server. |
-
-## DCEDLSLicenseVerificationCallback
-
-The callback of license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```objc
-- (void)DCEDLSLicenseVerificationCallback:(bool)isSuccess error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in,out] isSuccess`: Whether the license verification was successful.
-`[in,out] error`: The error message from license server.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)DCEDLSLicenseVerificationCallback:(bool)isSuccess error:(NSError * _Nullable)error
-{
- //TODO add your code for license verification
-}
-```
-2.
-```swift
-func dcedlsLicenseVerificationCallback(_ isSuccess: bool, error: Error?){
- //TODO add your code for license verification
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-licenselistener-v2.3.20.md b/programming-old/ios/auxiliary-api/protocol-licenselistener-v2.3.20.md
deleted file mode 100644
index 44319349..00000000
--- a/programming-old/ios/auxiliary-api/protocol-licenselistener-v2.3.20.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol DCELicenseVerificationListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol DCELicenseVerificationListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol DCELicenseVerificationListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol DCELicenseVerificationListener
-permalink: /programming/ios/auxiliary-api/protocol-licenselistener-v2.3.20.html
----
-
-# DCELicenseVerificationListener
-
-Protocol for a delegate to handle callback when license verification message returned.
-
-```objc
-@protocol DCELicenseVerificationListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| `DCELicenseVerificationCallback` | *required* | The callback of license server. |
-
-## DCELicenseVerificationCallback
-
-The callback of license server. Add the code in the callback function to react when the license server connection is successful or failed.
-
-```objc
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in,out] isSuccess`: Whether the license verification was successful.
-`[in,out] error`: The error message from license server.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError * _Nullable)error
-{
- //TODO add your code for license verification
-}
-```
-2.
-```swift
-func dceLicenseVerificationCallback(_ isSuccess: bool, error: Error?){
- //TODO add your code for license verification
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-licenselistener.md b/programming-old/ios/auxiliary-api/protocol-licenselistener.md
deleted file mode 100644
index 7366999f..00000000
--- a/programming-old/ios/auxiliary-api/protocol-licenselistener.md
+++ /dev/null
@@ -1,57 +0,0 @@
----
-layout: default-layout
-title: DSLicenseVerificationListener - Dynamsoft Camera Enhancer iOS Edition API Reference
-description: The protocol DSLicenseVerificationListener of Dynamsoft Camera Enhancer includes methods for monitoring the license verification status.
-keywords: license verification, objective-c, swift
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# DSLicenseVerificationListener
-
-The `DSLicenseVerificationListener` is a protocol that includes methods for monitoring the license verification status.
-
-## Definition
-
-*Assembly:* DynamsoftLicense.framework
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@protocol DSLicenseVerificationListener
-```
-2.
-```swift
-protocol LicenseVerificationListener : NSObjectProtocol
-```
-
-| Method | Description |
-| ------ | ----------- |
-| [`onLicenseVerified`](#onlicenseverified) | The method that is triggered when the license server returns the verification info. |
-
-### onLicenseVerified
-
-The method that is triggered when the license server returns the verification info.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)onLicenseVerified:(BOOL)isSuccess error:(NSError * _Nullable)error;
-```
-2.
-```swift
-func onLicenseVerified(_ isSuccess: Bool, error: Error?)
-```
-
-**Parameters**
-
-`isSuccess`: A Boolean value indicating whether the license is verified successfully.
-
-`error`: An NSError pointer. It carries the error code and message that describe the reason why your license activation failed.
diff --git a/programming-old/ios/auxiliary-api/protocol-torchlistener-v1.0.3.md b/programming-old/ios/auxiliary-api/protocol-torchlistener-v1.0.3.md
deleted file mode 100644
index 106e9440..00000000
--- a/programming-old/ios/auxiliary-api/protocol-torchlistener-v1.0.3.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: default-layout
-title: iOS Protocol CameraTorchListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol CameraTorchListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol CameraTorchListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol CameraTorchListener
-permalink: /programming/ios/auxiliary-api/protocol-torchlistener-v1.0.3.html
----
-
-# CameraTorchListener
-
-The protocol that handles the torch state when the torch state changes.
-
-```objc
-@protocol CameraTorchListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| `didChangeTorchState` | *required* | The method for user to add code when torch state is changed. |
-
-## didChangeTorchState
-
-The method for user to add code when torch state is changed.
-
-```objc
-- (void)didChangeTorchState:(TorchState)torchState NS_SWIFT_NAME(didChangeTorchState(torchState:));
-```
-
-**Parameters**
-
-[`TorchState`]({{site.parameter-reference}}index.html#torchstate): The torch status.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addTorchListener:self];
-// Add protocol requirements
-- (void)didChangeTorchState:(TorchState) torchState{
- // TODO add your code for torch listener
-}
-```
-2.
-```swift
-dce.addTorchListener(self)
-// Add protocol requirements
-func didChangeTorchState(torchState: TorchState){
- // TODO add your code for torch listener
-}
-```
diff --git a/programming-old/ios/auxiliary-api/protocol-torchlistener.md b/programming-old/ios/auxiliary-api/protocol-torchlistener.md
deleted file mode 100644
index b4a9cd0e..00000000
--- a/programming-old/ios/auxiliary-api/protocol-torchlistener.md
+++ /dev/null
@@ -1,59 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: iOS Protocol CameraTorchListener - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS Protocol CameraTorchListener page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Protocol CameraTorchListener
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: false
-breadcrumbText: iOS Protocol CameraTorchListener
-permalink: /programming/ios/auxiliary-api/protocol-torchlistener.html
----
-
-# CameraTorchListener
-
-The protocol that handles the torch state when the torch state changes.
-
-```objc
-@protocol CameraTorchListener
-```
-
-| Method | Type | Description |
-| ------ | ---- | ----------- |
-| `didChangeTorchState` | *required* | The method for user to add code when torch state is changed. |
-
-## didChangeTorchState
-
-The method for user to add code when torch state is changed.
-
-```objc
-- (void)didChangeTorchState:(TorchState)torchState NS_SWIFT_NAME(didChangeTorchState(torchState:));
-```
-
-**Parameters**
-
-[`TorchState`]({{site.parameter-reference}}index.html#torchstate): The torch status.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addTorchListener:self];
-// Add protocol requirements
-- (void)didChangeTorchState:(TorchState) torchState{
- // TODO add your code for torch listener
-}
-```
-2.
-```swift
-dce.addTorchListener(self)
-// Add protocol requirements
-func didChangeTorchState(torchState: TorchState){
- // TODO add your code for torch listener
-}
-```
diff --git a/programming-old/ios/auxiliary-api/region-definition-v2.3.20.md b/programming-old/ios/auxiliary-api/region-definition-v2.3.20.md
deleted file mode 100644
index 7e190cbf..00000000
--- a/programming-old/ios/auxiliary-api/region-definition-v2.3.20.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-layout: default-layout
-title: iOS iRegionDefinition Class - Dynamsoft Camera Enhancer Objective-C & Swift API Reference
-description: This page shows the iRegionDefinition Class of Dynamsoft Camera Enhancer for iOS SDK.
-keywords: iRegionDefinition, class, api reference, objective-c, oc, swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-permalink: /programming/ios/auxiliary-api/region-definition-v2.3.20.html
----
-
-# Class iRegionDefinition
-
-Stores the region information.
-
-```objc
-@interface iRegionDefinition
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *NSInteger* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *NSInteger* | The Left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *NSInteger* | The Right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *NSInteger* | The Bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *NSInteger* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-```objc
-NSInteger regionTop
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-```objc
-NSInteger regionLeft
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-```objc
-NSInteger regionRight
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-```objc
-NSInteger regionBottom
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-```objc
-NSInteger regionMeasuredByPercentage
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/ios/auxiliary-api/region-definition-v3.0.3.md b/programming-old/ios/auxiliary-api/region-definition-v3.0.3.md
deleted file mode 100644
index 964afa99..00000000
--- a/programming-old/ios/auxiliary-api/region-definition-v3.0.3.md
+++ /dev/null
@@ -1,175 +0,0 @@
----
-layout: default-layout
-title: iOS iRegionDefinition Class - Dynamsoft Camera Enhancer Documents
-description: This page shows the iRegionDefinition Class of Dynamsoft Camera Enhancer for iOS SDK.
-keywords: iRegionDefinition, class, api reference, objective-c, oc, swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-permalink: /programming/ios/auxiliary-api/region-definition-v3.0.3.html
----
-
-# Class iRegionDefinition
-
-Stores the region information.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface iRegionDefinition
-```
-2.
-```swift
-class iRegionDefinition : NSObject
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *NSInteger* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *NSInteger* | The Left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *NSInteger* | The Right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *NSInteger* | The Bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *NSInteger* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionTop
-```
-2.
-```swift
-var regionTop: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionLeft
-```
-2.
-```swift
-var regionLeft: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionRight
-```
-2.
-```swift
-var regionRight: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionBottom
-```
-2.
-```swift
-var regionButtom: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionMeasuredByPercentage
-```
-2.
-```swift
-var regionMeasuredByPercentage: Int { get }
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/ios/auxiliary-api/region-definition.md b/programming-old/ios/auxiliary-api/region-definition.md
deleted file mode 100644
index f480b78d..00000000
--- a/programming-old/ios/auxiliary-api/region-definition.md
+++ /dev/null
@@ -1,177 +0,0 @@
----
-layout: default-layout
-title: iOS iRegionDefinition Class - Dynamsoft Camera Enhancer Documents
-description: This page shows the iRegionDefinition Class of Dynamsoft Camera Enhancer for iOS SDK.
-keywords: iRegionDefinition, class, api reference, objective-c, oc, swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-permalink: /programming/ios/auxiliary-api/region-definition.html
----
-
-# Class iRegionDefinition
-
-> Removed in v4.0.
-
-Stores the region information.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface iRegionDefinition
-```
-2.
-```swift
-class iRegionDefinition : NSObject
-```
-
-| Attribute | Type | Descriptions |
-|---------- | ---- | ------------ |
-| [`regionTop`](#regiontop) | *NSInteger* | The top-most coordinate or percentage of the region. |
-| [`regionLeft`](#regionleft) | *NSInteger* | The Left-most coordinate or percentage of the region. |
-| [`regionRight`](#regionright) | *NSInteger* | The Right-most coordinate or percentage of the region. |
-| [`regionBottom`](#regionbottom) | *NSInteger* | The Bottom-most coordinate or percentage of the region. |
-| [`regionMeasuredByPercentage`](#regionmeasuredbypercentage) | *NSInteger* | Sets whether or not to use percentage to measure the region size. |
-
-## regionTop
-
-The top-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionTop
-```
-2.
-```swift
-var regionTop: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionLeft
-
-The left-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionLeft
-```
-2.
-```swift
-var regionLeft: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionRight
-
-The right-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionRight
-```
-2.
-```swift
-var regionRight: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionBottom
-
-The bottom-most coordinate or percentage of the region.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionBottom
-```
-2.
-```swift
-var regionButtom: Int { get set }
-```
-
-**Value Range**
-
-regionMeasuredByPercentage = 0: [0, 0x7fffffff]
-regionMeasuredByPercentage = 1: [0, 100]
-
-**Default Value**
-
-0
-
-
-
-## regionMeasuredByPercentage
-
-Sets whether or not to use percentage to measure the region size.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger regionMeasuredByPercentage
-```
-2.
-```swift
-var regionMeasuredByPercentage: Int { get }
-```
-
-**Value Range**
-
-[0, 1]
-
-**Default Value**
-
-0
-
-**Remarks**
-
-When it's set to 1, the values of Top, Left, Right, Bottom indicate percentage (from 0 to 100); Otherwise, they indicate coordinates. 0: not by percentage 1: by percentage.
diff --git a/programming-old/ios/guide/features-v3.0.3.md b/programming-old/ios/guide/features-v3.0.3.md
deleted file mode 100644
index 4754ee15..00000000
--- a/programming-old/ios/guide/features-v3.0.3.md
+++ /dev/null
@@ -1,85 +0,0 @@
----
-layout: default-layout
-title: Advanced Features on iOS - Dynamsoft Camera Enhancer
-description: This is the documentation - Enable Advanced Features on iOS.
-keywords: Camera Enhancer, Advanced Features on iOS
-needAutoGenerateSidebar: true
-needGenerateH3Content: true
-noTitleIndex: true
-breadcrumbText: Advanced Features
-permalink: /programming/ios/guide/features-v3.0.3.html
----
-
-# Advanced Features
-
-On this page, you will read about how to use advanced features of Dynamsoft Camera Enhancer and how they help you on obtaining higher quality video streaming. A valid license is required when using the advanced features.
-
-## Advanced Features Summary
-
-All the advanced feaatures are defined in enumeration `EnumEnhancerFeatures`. Currently, they are available as follow:
-
-| Feature | Enumeration Member | Value |
-| ------- | ------ | ----- |
-| [Frame Filter](#frame-filter) | `EnumFRAME_FILTER` | 0x01 |
-| [Sensor Control](#sensor-control) | `EnumSENSOR_CONTROL` | 0x02 |
-| [Enhanced Focus](#enhanced-focus) | `EnumENHANCED_FOCUS` | 0x04 |
-| [Fast Mode](#fast-mode) | `EnumFAST_MODE` | 0x08 |
-| [Auto Zoom](#auto-zoom) | `EnumAUTO_ZOOM` | 0x10 |
-| [Smart Torch](#smart-torch) | `EnumSMART_TORCH` | 0x20 |
-
-## How to Use
-
-- Enable: Trigger method `enableFeatures` with the enumeration members of the features that you want to enable.
-- Disable: Trigger method `disableFeatures` with the enumeration members of the features that you want to disable.
-- Check status: Trigger method `isFeatureEnabled` with the enumeration members of the features that you want to check.
-
-Sample code:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-// To enable features
-[_dce enableFeatures:EnumFRAME_FILTER | EnumSENSOR_CONTROL error: &error];
-// To disable features
-[_dce disableFeatures:EnumFRAME_FILTER | EnumSENSOR_CONTROL];
-```
-2.
-```swift
-// To enable features
-dce.enableFeatures(EnumEnhancerFeatures.EnumFRAME_FILTER.rawValue | EnumEnhancerFeatures.EnumSENSOR_CONTROL.rawValue, error: &error)
-// To disable features
-dce.disableFeatures(EnumEnhancerFeatures.EnumFRAME_FILTER.rawValue | EnumEnhancerFeatures.EnumSENSOR_CONTROL.rawValue)
-```
-
-- You can enable or disable multiple features at one time.
-- When an enabled feature is enabled again, it remains enabled.
-- When a feature is disabled more than once, it remains disabled.
-
-## Advanced Features Details
-
-### Frame Filter
-
-All the frames in the video streaming are quickly evaluated and the majority of the blurry frames will be filtered out. You can enable this feature when your mobile device is always moving. The average time consumption on evaluating each video frame is less than 10ms.
-
-### Sensor Control
-
-The mobile sensor can help on filtering out all the frames that are produced when the device is shaking. It will get better effects when enabled together with **Frame Filter**.
-
-### Enhanced Focus
-
-This feature can assist the camera in its focus. It is recommended to be enabled on low-end devices.
-
-### Fast Mode
-
-The video frames are cropped into small sizes when the **Fast Mode** is enabled. The feature will sharply improve the processing efficiency When the targeting areas are always located in the middle of the video. The average time consumption on cropping each frame is less than 10ms.
-
-### Auto Zoom
-
-**Auto Zoom** feature is specially designed for decoding barcodes from long distances. The camera will zoom in automatically to enlarge the region of interest when a barcode is detected far away. The **Auto Zoom** feature might not work ideally when processing the documents or the text areas. Please disable this feature if the targets are not barcodes.
-
-### Smart Torch
-
-**Smart Torch** feature controls the visibility of the torch button created by `setTorchButton` method. The torch button will be displayed automatically when the environment light level is low. Otherwise, the torch button is hidden. The feature doesn't control the status of the mobile torch. Users have to click on the torch button to turn on the torch.
diff --git a/programming-old/ios/guide/guide-v1.0.1.md b/programming-old/ios/guide/guide-v1.0.1.md
deleted file mode 100644
index 67767df3..00000000
--- a/programming-old/ios/guide/guide-v1.0.1.md
+++ /dev/null
@@ -1,426 +0,0 @@
----
-layout: default-layout
-title: Guide on Objective-C & Swift - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/guide/guide-v1.0.1.html
----
-
-# User Guide on Objective-C & Swift
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Installation
-
-1. Download Dynamsoft Camera Enhancer from Dynamsoft website to get `dce-ios-{version-number}.zip`. Unzip the package and find DynamsoftCameraEnhancer.framework.
-
-2. Create a new Objective-C or Swift project.
-
-3. Add DynamsoftCameraEnhancer.framework in your Xcode project.
-
-4. Import Dynamsoft Camera Enhancer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-## Create a Camera Module
-
-This section is the guide for users to create a camera module in Objective-C or Swift project. After the installation of DCE, please add the following code to the new project.
-
-Objective-C code sample:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDCELTSConnectionParameters* dcePara = [[iDCELTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara;
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-}
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-Swift code sample:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDCELTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-## Extend the camera module with DCE functions
-
-This section is displaying how to add DCE functions to the camera module we built just now.
-
-For Objective-C users, please add the following code:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDCELTSConnectionParameters* dcePara = [[iDCELTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara;
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-For Swift users, please add the following code:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDCELTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-Run the project, now DCE functions have been added to the camera module.
-
-## Add decoder to the camera module
-
-This section is the guide for users to add a video stream decoder to the camera module. In this section, Dynamsoft Barcode Reader (DBR) will support decoding works. Before you start, please remember to add `DynamsoftBarcodeReader.framework` to your xcode project.
-
-Add this code snippet to the Objective-C project.
-
-```objc
-#import "ViewController.h"
-#import
-//import Dynamsoft Barcode Reader for decoding
-#import
-
-@interface ViewController ()
-//Barcode Reader initialize
-@property(nonatomic, strong) DynamsoftBarcodeReader *barcodeReader;
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self initDBR];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDCELTSConnectionParameters* dcePara = [[iDCELTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara;
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-//*************Newly added Barcode Reader Settings***************
-//Dynamsoft Barcode Reader (DBR) initialization
-- (void)initDBR{
- iDMLTSConnectionParameters* dbrPara = [[iDMLTSConnectionParameters alloc] init];
- //Initialize DBR License
- dbrPara.organizationID = @"Put your organizationID here";
- _barcodeReader = [[DynamsoftBarcodeReader alloc] initLicenseFromLTS:dbrPara verificationDelegate:self];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"EnableFillBinaryVacancy" argumentValue:@"0" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeX" argumentValue:@"81" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeY" argumentValue:@"81" error:nil];
-}
-//****************************************************************
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-
-//***********************Newly added********************************
-//******************Display text decode result**********************
-- (void)textResultCallback:(NSInteger)frameId results:(NSArray *)results userData:(NSObject *)userData{
- if (results.count > 0) {
- _dce.isEnable = NO;
- __weak ViewController *weakSelf = self;
- [self showResult:results.firstObject.barcodeText
- completion:^{
- weakSelf.dce.isEnable = YES;
- }];
- }else{
- return;
- }
-}
-
-- (void)showResult:(NSString *)result completion:(void (^)(void))completion {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:result message:nil preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * action) {
- completion();
- }]];
- [self presentViewController:alert animated:YES completion:nil];
- });
-}
-```
-
-For Swift users, please add the following code to the Swift project.
-
-```swift
-import UIKit
-//Import Dynamsoft Barcode Reader
-import DynamsoftBarcodeReader
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- var barcodeReader:DynamsoftBarcodeReader! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
-
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- initDBR()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- //********************Newly added***********************
- //**********Initialize Dynamsoft Barcode Reader*********
- func initDBR() {
- let lts = iDMLTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- barcodeReader = DynamsoftBarcodeReader(licenseFromLTS: lts, verificationDelegate: self)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "EnableFillBinaryVacancy", argumentValue: "0", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeX", argumentValue: "81", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeY", argumentValue: "81", error: nil)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDCELTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- //*********************Newly added**********************
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- let para = DCESettingParameters.init()
- para.cameraInstance = dce
- para.textResultDelegate = self
- barcodeReader.setCameraEnhancerPara(para)
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-
- //*********************Newly added**********************
- //******Get and display barcode decoding text result****
- func textResultCallback(_ frameId: Int, results: [iTextResult]?, userData: NSObject?) {
- if results!.count > 0 {
- dce.isEnable = false
- showResult(results!.first!.barcodeText!) { [weak self] in
- self?.dce.isEnable = true
- }
- }else{
- return
- }
- }
-
- private func showResult(_ result: String, completion: @escaping () -> Void) {
- DispatchQueue.main.async {
- let alert = UIAlertController(title: result, message: nil, preferredStyle: .alert)
- alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in completion() }))
- self.present(alert, animated: true, completion: nil)
- }
- }
-}
-```
-
-Run the project. Now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
diff --git a/programming-old/ios/guide/guide-v1.0.3.md b/programming-old/ios/guide/guide-v1.0.3.md
deleted file mode 100644
index 58a3a67b..00000000
--- a/programming-old/ios/guide/guide-v1.0.3.md
+++ /dev/null
@@ -1,413 +0,0 @@
----
-layout: default-layout
-title: Guide on Objective-C & Swift - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/guide/guide-v1.0.3.html
----
-
-# User Guide on Objective-C & Swift
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Installation
-
-1. Download Dynamsoft Camera Enhancer from Dynamsoft website to get `dce-ios-{version-number}.zip`. Unzip the package and find DynamsoftCameraEnhancer.framework.
-
-2. Create a new Objective-C or Swift project.
-
-3. Add DynamsoftCameraEnhancer.framework in your Xcode project.
-
-4. Import Dynamsoft Camera Enhancer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-## Create a Camera Module
-
-This section is the guide for users to create a camera module in Objective-C or Swift project. After the installation of DCE, please add the following code to the new project.
-
-Objective-C code sample:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECameraView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECameraView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- [DynamsoftCameraEnhancer initLicense:@"DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==" verificationDelegate:self];
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setDeiredCameraState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-}
-
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-Swift code sample:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, DCELicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECameraView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECameraView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- DynamsoftCameraEnhancer.initLicense("DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==",verificationDelegate:self)
- //Turn on the camera
- dce.setDesiredCameraState(.CAMERA_STATE_ON)
- dce.isEnable = true
- }
-
- func DCELicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-## Extend the camera module with DCE functions
-
-This section is displaying how to add DCE functions to the camera module we built just now.
-
-For Objective-C users, please add the following code:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECameraView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECameraView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- [DynamsoftCameraEnhancer initLicense:@"DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==" verificationDelegate:self];
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setDesiredCameraState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-For Swift users, please add the following code:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, DCELicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECameraView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECameraView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- DynamsoftCameraEnhancer.initLicense("DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==",verificationDelegate:self)
- //Turn on the camera
- dce.setDesiredCameraState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- }
-
- func DCELicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-Run the project, now DCE functions have been added to the camera module.
-
-## Add decoder to the camera module
-
-This section is the guide for users to add a video stream decoder to the camera module. In this section, Dynamsoft Barcode Reader (DBR) will support decoding works. Before you start, please remember to add `DynamsoftBarcodeReader.framework` to your xcode project.
-
-Add this code snippet to the Objective-C project.
-
-```objc
-#import "ViewController.h"
-#import
-//import Dynamsoft Barcode Reader for decoding
-#import
-
-@interface ViewController ()
-//Barcode Reader initialize
-@property(nonatomic, strong) DynamsoftBarcodeReader *barcodeReader;
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECameraView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self initDBR];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECameraView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- [DynamsoftCameraEnhancer initLicense:@"DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==" verificationDelegate:self];
-
- //Make camera settings, turn on the camera
- [_dce setDesiredCameraState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-//*************Newly added Barcode Reader Settings***************
-//Dynamsoft Barcode Reader (DBR) initialization
-- (void)initDBR{
- iDMDLSConnectionParameters* dbrPara = [[iDMDLSConnectionParameters alloc] init];
- //Initialize DBR License
- dbrPara.organizationID = @"Put your organizationID here";
- _barcodeReader = [[DynamsoftBarcodeReader alloc] initLicenseFromDLS:dbrPara verificationDelegate:self];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"EnableFillBinaryVacancy" argumentValue:@"0" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeX" argumentValue:@"81" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeY" argumentValue:@"81" error:nil];
-}
-//****************************************************************
-
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-
-//***********************Newly added********************************
-//******************Display text decode result**********************
-- (void)textResultCallback:(NSInteger)frameId results:(NSArray *)results userData:(NSObject *)userData{
- if (results.count > 0) {
- _dce.isEnable = NO;
- __weak ViewController *weakSelf = self;
- [self showResult:results.firstObject.barcodeText
- completion:^{
- weakSelf.dce.isEnable = YES;
- }];
- }else{
- return;
- }
-}
-
-- (void)showResult:(NSString *)result completion:(void (^)(void))completion {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:result message:nil preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * action) {
- completion();
- }]];
- [self presentViewController:alert animated:YES completion:nil];
- });
-}
-```
-
-For Swift users, please add the following code to the Swift project.
-
-```swift
-import UIKit
-//Import Dynamsoft Barcode Reader
-import DynamsoftBarcodeReader
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, DCELicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECameraView! = nil
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- var barcodeReader:DynamsoftBarcodeReader! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
-
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- initDBR()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- //********************Newly added***********************
- //**********Initialize Dynamsoft Barcode Reader*********
- func initDBR() {
- let dls = iDMDLSConnectionParameters()
- dls.organizationID = "Put your organizationID here"
- barcodeReader = DynamsoftBarcodeReader(licenseFromDLS: dls, verificationDelegate: self)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "EnableFillBinaryVacancy", argumentValue: "0", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeX", argumentValue: "81", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeY", argumentValue: "81", error: nil)
- }
-
- func configurationDCE() {
- dceView = DCECameraView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- DynamsoftCameraEnhancer.initLicense("DCE2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSIsInByb2R1Y3RzIjoyfQ==",verificationDelegate:self)
- //Turn on the camera
- dce.setDesiredCameraState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- //*********************Newly added**********************
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- let para = DCESettingParameters.init()
- para.cameraInstance = dce
- para.textResultDelegate = self
- barcodeReader.setCameraEnhancerPara(para)
- }
-
- func DCELicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-
- //*********************Newly added**********************
- //******Get and display barcode decoding text result****
- func textResultCallback(_ frameId: Int, results: [iTextResult]?, userData: NSObject?) {
- if results!.count > 0 {
- dce.isEnable = false
- showResult(results!.first!.barcodeText!) { [weak self] in
- self?.dce.isEnable = true
- }
- }else{
- return
- }
- }
-
- private func showResult(_ result: String, completion: @escaping () -> Void) {
- DispatchQueue.main.async {
- let alert = UIAlertController(title: result, message: nil, preferredStyle: .alert)
- alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in completion() }))
- self.present(alert, animated: true, completion: nil)
- }
- }
-}
-```
-
-Run the project. Now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
diff --git a/programming-old/ios/guide/guide-v1.0.md b/programming-old/ios/guide/guide-v1.0.md
deleted file mode 100644
index 8237e559..00000000
--- a/programming-old/ios/guide/guide-v1.0.md
+++ /dev/null
@@ -1,426 +0,0 @@
----
-layout: default-layout
-title: Guide on Objective-C & Swift - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS Guide - v1.0
-permalink: /programming/ios/guide/guide-v1.0.html
----
-
-# User Guide on Objective-C & Swift
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Installation
-
-1. Download Dynamsoft Camera Enhancer from Dynamsoft website to get `dce-ios-{version-number}.zip`. Unzip the package and find DynamsoftCameraEnhancer.framework.
-
-2. Create a new Objective-C or Swift project.
-
-3. Add DynamsoftCameraEnhancer.framework in your Xcode project.
-
-4. Import Dynamsoft Camera Enhancer
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-## Create a Camera Module
-
-This section is the guide for users to create a camera module in Objective-C or Swift project. After the installation of DCE, please add the following code to the new project.
-
-Objective-C code sample:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDMLTSConnectionParameters* dcePara = [[iDMLTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-}
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-Swift code sample:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDMLTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-## Extend the camera module with DCE functions
-
-This section is displaying how to add DCE functions to the camera module we built just now.
-
-For Objective-C users, please add the following code:
-
-```objc
-#import "ViewController.h"
-#import
-
-@interface ViewController ()
-
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDMLTSConnectionParameters* dcePara = [[iDMLTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-```
-
-For Swift users, please add the following code:
-
-```swift
-import UIKit
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDMLTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-}
-```
-
-Run the project, now DCE functions have been added to the camera module.
-
-## Add decoder to the camera module
-
-This section is the guide for users to add a video stream decoder to the camera module. In this section, Dynamsoft Barcode Reader (DBR) will support decoding works. After this step, a new simple video streaming decoding app is built successfully.
-
-Add this code snippet to the Objective-C project.
-
-```objc
-#import "ViewController.h"
-#import
-//import Dynamsoft Barcode Reader for decoding
-#import
-
-@interface ViewController ()
-//Barcode Reader initialize
-@property(nonatomic, strong) DynamsoftBarcodeReader *barcodeReader;
-@property(nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property(nonatomic, strong) DCECaptureView *dceView;
-
-@end
-
-@implementation ViewController
-
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self initDBR];
- [self configurationDCE];
-}
-
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
-}
-
-- (void)configurationDCE{
- _dceView = [DCECaptureView cameraWithFrame:self.view.bounds];
- [_dceView addOverlay];
- [self.view addSubview:_dceView];
-
- //Initialize License
- iDMLTSConnectionParameters* dcePara = [[iDMLTSConnectionParameters alloc] init];
- dcePara.organizationID = @"Put your organizationID here";
- _dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromLTS:dcePara
-
- view:_dceView verificationDelegate:self];
- //Make camera settings, turn on the camera
- [_dce setCameraDesiredState:CAMERA_STATE_ON];
- _dce.isEnable = YES;
-
- //*********Newly added****************
- //*******Camera Settings**************
- [dce setEnableDefaultAutoFocus:true];
- [dce setEnableAutoZoom:true];
- [dce setEnableFastMode:true];
- [dce setEnableSensorControl:true];
- [dce setEnableFrameFilter:true];
-}
-
-//*************Newly added Barcode Reader Settings***************
-//Dynamsoft Barcode Reader (DBR) initialization
-- (void)initDBR{
- iDMLTSConnectionParameters* dbrPara = [[iDMLTSConnectionParameters alloc] init];
- //Initialize DBR License
- dbrPara.organizationID = @"Put your organizationID here";
- _barcodeReader = [[DynamsoftBarcodeReader alloc] initLicenseFromLTS:dbrPara verificationDelegate:self];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"EnableFillBinaryVacancy" argumentValue:@"0" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeX" argumentValue:@"81" error:nil];
- [_barcodeReader setModeArgument:@"BinarizationModes" index:0 argumentName:@"BlockSizeY" argumentValue:@"81" error:nil];
-}
-//****************************************************************
-
-- (void)CameraLTSLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- NSLog(@"Verification: %@",error.userInfo);
-}
-
-//***********************Newly added********************************
-//******************Display text decode result**********************
-- (void)textResultCallback:(NSInteger)frameId results:(NSArray *)results userData:(NSObject *)userData{
- if (results.count > 0) {
- _dce.isEnable = NO;
- __weak ViewController *weakSelf = self;
- [self showResult:results.firstObject.barcodeText
- completion:^{
- weakSelf.dce.isEnable = YES;
- }];
- }else{
- return;
- }
-}
-
-- (void)showResult:(NSString *)result completion:(void (^)(void))completion {
- dispatch_async(dispatch_get_main_queue(), ^{
- UIAlertController *alert = [UIAlertController alertControllerWithTitle:result message:nil preferredStyle:UIAlertControllerStyleAlert];
- [alert addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault
- handler:^(UIAlertAction * action) {
- completion();
- }]];
- [self presentViewController:alert animated:YES completion:nil];
- });
-}
-```
-
-For Swift users, please add the following code to the Swift project.
-
-```swift
-import UIKit
-//Import Dynamsoft Barcode Reader
-import DynamsoftBarcodeReader
-import DynamsoftCameraEnhancer
-
-class ViewController: UIViewController, CameraLTSLicenseVerificationDelegate, DBRTextResultDelegate {
-
- var dce:DynamsoftCameraEnhancer! = nil
- var dceView:DCECaptureView! = nil
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- var barcodeReader:DynamsoftBarcodeReader! = nil
- override func viewDidLoad() {
- super.viewDidLoad()
-
- //*********************Newly added**********************
- //************init Dynamsoft Barcode Reader*************
- initDBR()
- configurationDCE()
- }
-
- override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- }
-
- //********************Newly added***********************
- //**********Initialize Dynamsoft Barcode Reader*********
- func initDBR() {
- let lts = iDMLTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- barcodeReader = DynamsoftBarcodeReader(licenseFromLTS: lts, verificationDelegate: self)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "EnableFillBinaryVacancy", argumentValue: "0", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeX", argumentValue: "81", error: nil)
- barcodeReader.setModeArgument("BinarizationModes", index: 0, argumentName: "BlockSizeY", argumentValue: "81", error: nil)
- }
-
- func configurationDCE() {
- dceView = DCECaptureView.init(view: self.view.bounds)
- dceView.addOverlay()
- self.view.addSubview(dceView)
- //Init DCE license
- let lts = iDMLTSConnectionParameters()
- lts.organizationID = "Put your organizationID here"
- dce = DynamsoftCameraEnhancer.init(licenseFromLTS: lts, view: dceView, verificationDelegate: self)
- //Turn on the camera
- dce.setCameraDesiredState(.CAMERA_STATE_ON)
- dce.isEnable = true
- //*********************Newly added**********************
- //************Add Camera Enhancer functions*************
- dce.enableFastMode = true
- dce.enableFrameFilter = true
- dce.enableDefaultAutoFocus = true
- dce.enableAutoZoom = true
- dce.enableSensorControl = true
- //*********************Newly added**********************
- //Instantiate DCE, send result and immediate result call back to Dynamsoft Barcode Reader
- let para = DCESettingParameters.init()
- para.cameraInstance = dce
- para.textResultDelegate = self
- barcodeReader.setCameraEnhancerPara(para)
- }
-
- func cameraLTSLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- print("Verification: \(String(describing: error))")
- }
-
- //*********************Newly added**********************
- //******Get and display barcode decoding text result****
- func textResultCallback(_ frameId: Int, results: [iTextResult]?, userData: NSObject?) {
- if results!.count > 0 {
- dce.isEnable = false
- showResult(results!.first!.barcodeText!) { [weak self] in
- self?.dce.isEnable = true
- }
- }else{
- return
- }
- }
-
- private func showResult(_ result: String, completion: @escaping () -> Void) {
- DispatchQueue.main.async {
- let alert = UIAlertController(title: result, message: nil, preferredStyle: .alert)
- alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in completion() }))
- self.present(alert, animated: true, completion: nil)
- }
- }
-}
-```
-
-Run the project. Now a simple decode app has been built via Dynamsoft Camera Enhancer and Dynamsoft Barcode Reader.
diff --git a/programming-old/ios/guide/guide-v2.3.10.md b/programming-old/ios/guide/guide-v2.3.10.md
deleted file mode 100644
index bcacdb7c..00000000
--- a/programming-old/ios/guide/guide-v2.3.10.md
+++ /dev/null
@@ -1,367 +0,0 @@
----
-layout: default-layout
-title: Guide on iOS - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/guide/guide-v2.3.10.html
----
-
-# User Guide on iOS
-
-The Dynamsoft Camera Enhancer iOS SDK enables you to easily control cameras from your iOS applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader iOS User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/objectivec-swift/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your iOS app:
-
-## App prerequisites
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Installation
-
-If you don't have SDK yet, please download Dynamsoft Camera Enhancer (DCE) SDK from Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `INSTALLATION FOLDER`.
-
-## Build Your First Application with Dynamsoft Camera Enhancer
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-### Create a New Project and Include Dynamsoft Camera Enhancer
-
-1. Create a new Objective-C or Swift project.
-
-2. Drag and drop the **DynamsoftCameraEnhancer.framework** into your Xcode project. Make sure to **check Copy items if needed** and **Create groups** to copy the framework into your project's folder.
-
-3. Click on the project. Go to the **General --> Frameworks --> Libraries and Embedded Content**. Set the **Embed type** to **Embed & Sign**.
-
-4. Go to the **Build Settings --> Build Options --> Validate Workspace**. Set the **Validate Workspace** to **yes**.
-
-5. In the `ViewController.m` or `ViewController.swift` Import Dynamsoft Camera Enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-Now Dynamsoft Camera Enhancer is added to your project.
-
-
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.html#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-Use the following code to activate the license:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface AppDelegate ()
-...
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- [DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate:self];
- ...
-}
-- (void)DBRLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- // Add you code to do when license activation is succeed or failed.
-}
-```
-2.
-```swift
-class AppDelegate: UIResponder, UIApplicationDelegate, DBRLicenseVerificationListener {
- ...
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- ...
- DynamsoftBarcodeReader.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", verificationDelegate: self)
- ...
- }
- func dbrLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- // Add you code to do when license activation is succeed or failed.
- }
-}
-```
-
-### Initialize the Camera View and Control the Camera
-
-In this section, we continue working on the `ViewController` file in the project. You will learn how to create a simple camera app.
-
-#### Step 1.1
-
-Delcare the DCE & DCECameraView property.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-@property (nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property (nonatomic, strong) DCECameraView *dceView;
-@end
-```
-2.
-```swift
-var dce:DynamsoftCameraEnhancer! = nil
-var dceView:DCECameraView! = nil
-```
-
-#### Step 1.2
-
-Initialize the DCE & DCECameraView in a method.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)configurationDCE{
- _dceView = [DCECameraView cameraWithFrame:self.view.bounds];
- [self.view addSubView:_dceView];
- _dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
- [_dce open];
- [_dce addListener:self];
-}
-```
-2.
-```swift
-func configurationDCE() {
- dceView = DCECameraView.init(frame: self.view.bounds)
- self.view.addSubview(dceView)
- dce = DynamsoftCameraEnhancer.init(view: dceView)
- dce.open()
- dce.addListener(self)
-}
-```
-
-Remember to add the `configurationDCE` to the `viewDidLoad` method
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-```
-2.
-```swift
-override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
-}
-```
-
-#### Step 1.3
-
-Go to the file **info.plist** under your project folder. Under **Information Property List**, add **Privacy - Camera Usage Description**.
-
-Build the app. Now, a simple camera app is created. After permitting the camera usage, you will see the camera view on the app.
-
-
-
-### Capture Frames From the Video Streaming
-
-In this section, you will learn how to capture video frames with `DynamsoftCameraEnhancer`.
-
-Dynamsoft Camera Enhancer provides two solutions for fetching the video frames:
-
-- Use the method [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) to fetch a single frame from the video buffer.
-- Use callback method [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) to continuously fetching the video frames.
-
-> Note:
-> - All the following code will be added to the `ViewController` file in your project.
-
-#### Step 2.1
-
-Add `DCEFrameListener` to your `ViewController` so that you can use `FrameOutputCallback` to get video frames.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-```
-2.
-```swift
-class ViewController: UIViewController,DCEFrameListener{
- //...
-}
-```
-
-Add `FrameOutputCallback` to your project to get frames from camera output. DCEFrame is the class that stores frame data. You can use Image processing tools to parse the image information from a DCEFrame object or use `DCEFrame.toUIImage` to convert it into a UIImage for other usages.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)frameOutPutCallback:(nonnull DCEFrame *)frame timeStamp:(NSTimeInterval)timeStamp {
- if (isview) {
- isview = false;
- dispatch_async(dispatch_get_main_queue(), ^{
- [self->photoButton setEnabled:false];
- UIImage *image = [[UIImage alloc] initWithCGImage: frame.toUIImage.CGImage
- scale: 1.0
- orientation: UIImageOrientationRight];
- [self->imageView setImage:image];
- [self.view addSubview:self->imageView];
- [self addBack];
- });
- }
-}
-```
-2.
-```swift
-func frameOutPutCallback(_ frame: DCEFrame, timeStamp: TimeInterval) {
- if isview {
- isview = false
- DispatchQueue.main.async {
- self.photoButton?.isEnabled = false
- var image:UIImage!
- image = frame.toUIImage()
- image = UIImage.init(cgImage: image.cgImage!, scale: 1.0, orientation: UIImageOrientation.right)
- self.imageView.image = image
- self.view.addSubview(self.imageView)
- self.addBack()
- }
- }
-}
-```
-
-#### Step 2.2
-
-Add the trigger of the capture button.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@implementation ViewController{
- // Add these varibles to capture and display images.
- UIButton *photoButton;
- UIImageView* imageView;
- bool isview;
-}
-// The UI for displaying the captured image.
-- (void)configurationUI{
- CGFloat w = [[UIScreen mainScreen] bounds].size.width;
- CGFloat h = [[UIScreen mainScreen] bounds].size.height;
- CGFloat SafeAreaBottomHeight = [[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 34 : 0;
- photoButton = [[UIButton alloc] initWithFrame:CGRectMake(w / 2 - 60, h - 170 - SafeAreaBottomHeight, 120, 120)];
- photoButton.adjustsImageWhenDisabled = NO;
- [photoButton setImage:[UIImage imageNamed:@"icon_capture"] forState:UIControlStateNormal];
- self->imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, w, h)];
- [photoButton addTarget:self action:@selector(takePictures) forControlEvents:UIControlEventTouchUpInside];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.view addSubview:self->photoButton];
- });
-}
-// Method for capturing image
-- (void)takePictures{
- isview = true;
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-- (void)addBack{
- self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(BackToHome)];
-}
-- (void)BackToHome{
- [imageView removeFromSuperview];
- self.navigationItem.leftBarButtonItem = nil;
- [photoButton setEnabled:true];
-}
-```
-2.
-```swift
-// Add these varibles to capture and display images.
-var photoButton:UIButton! = UIButton()
-var imageView:UIImageView!
-var isview:Bool = false
-// The UI for displaying the captured image.
-func configurationUI() {
- let w = UIScreen.main.bounds.size.width
- let h = UIScreen.main.bounds.size.height
- let safeAreaBottomHeight:CGFloat = UIApplication.shared.statusBarFrame.size.height > 20 ? 34 : 0
- photoButton = UIButton(frame: CGRect(x:w / 2 - 60, y: h - 170 - safeAreaBottomHeight, width: 120, height: 120))
- photoButton.adjustsImageWhenDisabled = false
- photoButton.setImage(UIImage(named: "icon_capture"), for: .normal)
- self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: w, height: h))
- photoButton.addTarget(self, action: #selector(takePictures), for: .touchUpInside)
- DispatchQueue.main.async {
- self.view.addSubview(self.photoButton)
- }
-}
-// Method for capturing image
-@objc func takePictures() {
- isview = true
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-func addBack(){
- self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .reply, target: self, action: #selector(backToHome))
-}
-@objc func backToHome(){
- self.imageView.removeFromSuperview()
- self.photoButton?.isEnabled = true
- self.navigationItem.leftBarButtonItem = nil
-}
-```
-
-Run the project. Now, you can try to capture video frames with Dynamsoft Camera Enhancer.
-
-
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-## What's Next?
-
-### How to integration with barcode reader
-
-This article guides you to integrate the barcode reader function into your app.
diff --git a/programming-old/ios/guide/guide-v3.0.3.md b/programming-old/ios/guide/guide-v3.0.3.md
deleted file mode 100644
index d69978e2..00000000
--- a/programming-old/ios/guide/guide-v3.0.3.md
+++ /dev/null
@@ -1,367 +0,0 @@
----
-layout: default-layout
-title: Guide on iOS - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/guide/guide-v3.0.3.html
----
-
-# User Guide on iOS
-
-The Dynamsoft Camera Enhancer iOS SDK enables you to easily control cameras from your iOS applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader iOS User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/objectivec-swift/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your iOS app:
-
-## App prerequisites
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Installation
-
-If you don't have SDK yet, please download Dynamsoft Camera Enhancer (DCE) SDK from Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `INSTALLATION FOLDER`.
-
-## Build Your First Application with Dynamsoft Camera Enhancer
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-### Create a New Project and Include Dynamsoft Camera Enhancer
-
-1. Create a new Objective-C or Swift project.
-
-2. Drag and drop the **DynamsoftCameraEnhancer.framework** into your Xcode project. Make sure to **check Copy items if needed** and **Create groups** to copy the framework into your project's folder.
-
-3. Click on the project. Go to the **General --> Frameworks --> Libraries and Embedded Content**. Set the **Embed type** to **Embed & Sign**.
-
-4. Go to the **Build Settings --> Build Options --> Validate Workspace**. Set the **Validate Workspace** to **yes**.
-
-5. In the `ViewController.m` or `ViewController.swift` Import Dynamsoft Camera Enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-Now Dynamsoft Camera Enhancer is added to your project.
-
-
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.html#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-Use the following code to activate the license:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface AppDelegate ()
-...
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- [DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate:self];
- ...
-}
-- (void)DBRLicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
- // Add you code to do when license activation is succeed or failed.
-}
-```
-2.
-```swift
-class AppDelegate: UIResponder, UIApplicationDelegate, DBRLicenseVerificationListener {
- ...
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- ...
- DynamsoftBarcodeReader.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", verificationDelegate: self)
- ...
- }
- func dbrLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
- // Add you code to do when license activation is succeed or failed.
- }
-}
-```
-
-### Initialize the Camera View and Control the Camera
-
-In this section, we continue working on the `ViewController` file in the project. You will learn how to create a simple camera app.
-
-#### Step 1.1
-
-Delcare the DCE & DCECameraView property.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-@property (nonatomic, strong) DynamsoftCameraEnhancer *dce;
-@property (nonatomic, strong) DCECameraView *dceView;
-@end
-```
-2.
-```swift
-var dce:DynamsoftCameraEnhancer! = nil
-var dceView:DCECameraView! = nil
-```
-
-#### Step 1.2
-
-Initialize the DCE & DCECameraView in a method.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)configurationDCE{
- _dceView = [DCECameraView cameraWithFrame:self.view.bounds];
- [self.view addSubView:_dceView];
- _dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
- [_dce open];
- [_dce addListener:self];
-}
-```
-2.
-```swift
-func configurationDCE() {
- dceView = DCECameraView.init(frame: self.view.bounds)
- self.view.addSubview(dceView)
- dce = DynamsoftCameraEnhancer.init(view: dceView)
- dce.open()
- dce.addListener(self)
-}
-```
-
-Remember to add the `configurationDCE` to the `viewDidLoad` method
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)viewDidLoad {
- [super viewDidLoad];
- [self configurationDCE];
-}
-```
-2.
-```swift
-override func viewDidLoad() {
- super.viewDidLoad()
- configurationDCE()
-}
-```
-
-#### Step 1.3
-
-Go to the file **info.plist** under your project folder. Under **Information Property List**, add **Privacy - Camera Usage Description**.
-
-Build the app. Now, a simple camera app is created. After permitting the camera usage, you will see the camera view on the app.
-
-
-
-### Capture Frames From the Video Streaming
-
-In this section, you will learn how to capture video frames with `DynamsoftCameraEnhancer`.
-
-Dynamsoft Camera Enhancer provides two solutions for fetching the video frames:
-
-- Use the method [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) to fetch a single frame from the video buffer.
-- Use callback method [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) to continuously fetching the video frames.
-
-> Note:
-> - All the following code will be added to the `ViewController` file in your project.
-
-#### Step 2.1
-
-Add `DCEFrameListener` to your `ViewController` so that you can use `FrameOutputCallback` to get video frames.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-```
-2.
-```swift
-class ViewController: UIViewController,DCEFrameListener{
- //...
-}
-```
-
-Add `FrameOutputCallback` to your project to get frames from camera output. DCEFrame is the class that stores frame data. You can use Image processing tools to parse the image information from a DCEFrame object or use `DCEFrame.toUIImage` to convert it into a UIImage for other usages.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)frameOutPutCallback:(nonnull DCEFrame *)frame timeStamp:(NSTimeInterval)timeStamp {
- if (isview) {
- isview = false;
- dispatch_async(dispatch_get_main_queue(), ^{
- [self->photoButton setEnabled:false];
- UIImage *image = [[UIImage alloc] initWithCGImage: frame.toUIImage.CGImage
- scale: 1.0
- orientation: UIImageOrientationRight];
- [self->imageView setImage:image];
- [self.view addSubview:self->imageView];
- [self addBack];
- });
- }
-}
-```
-2.
-```swift
-func frameOutPutCallback(_ frame: DCEFrame, timeStamp: TimeInterval) {
- if isview {
- isview = false
- DispatchQueue.main.async {
- self.photoButton?.isEnabled = false
- var image:UIImage!
- image = frame.toUIImage()
- image = UIImage.init(cgImage: image.cgImage!, scale: 1.0, orientation: UIImageOrientation.right)
- self.imageView.image = image
- self.view.addSubview(self.imageView)
- self.addBack()
- }
- }
-}
-```
-
-#### Step 2.2
-
-Add the trigger of the capture button.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@implementation ViewController{
- // Add these varibles to capture and display images.
- UIButton *photoButton;
- UIImageView* imageView;
- bool isview;
-}
-// The UI for displaying the captured image.
-- (void)configurationUI{
- CGFloat w = [[UIScreen mainScreen] bounds].size.width;
- CGFloat h = [[UIScreen mainScreen] bounds].size.height;
- CGFloat SafeAreaBottomHeight = [[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 34 : 0;
- photoButton = [[UIButton alloc] initWithFrame:CGRectMake(w / 2 - 60, h - 170 - SafeAreaBottomHeight, 120, 120)];
- photoButton.adjustsImageWhenDisabled = NO;
- [photoButton setImage:[UIImage imageNamed:@"icon_capture"] forState:UIControlStateNormal];
- self->imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, w, h)];
- [photoButton addTarget:self action:@selector(takePictures) forControlEvents:UIControlEventTouchUpInside];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.view addSubview:self->photoButton];
- });
-}
-// Method for capturing image
-- (void)takePictures{
- isview = true;
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-- (void)addBack{
- self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(BackToHome)];
-}
-- (void)BackToHome{
- [imageView removeFromSuperview];
- self.navigationItem.leftBarButtonItem = nil;
- [photoButton setEnabled:true];
-}
-```
-2.
-```swift
-// Add these varibles to capture and display images.
-var photoButton:UIButton! = UIButton()
-var imageView:UIImageView!
-var isview:Bool = false
-// The UI for displaying the captured image.
-func configurationUI() {
- let w = UIScreen.main.bounds.size.width
- let h = UIScreen.main.bounds.size.height
- let safeAreaBottomHeight:CGFloat = UIApplication.shared.statusBarFrame.size.height > 20 ? 34 : 0
- photoButton = UIButton(frame: CGRect(x:w / 2 - 60, y: h - 170 - safeAreaBottomHeight, width: 120, height: 120))
- photoButton.adjustsImageWhenDisabled = false
- photoButton.setImage(UIImage(named: "icon_capture"), for: .normal)
- self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: w, height: h))
- photoButton.addTarget(self, action: #selector(takePictures), for: .touchUpInside)
- DispatchQueue.main.async {
- self.view.addSubview(self.photoButton)
- }
-}
-// Method for capturing image
-@objc func takePictures() {
- isview = true
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-func addBack(){
- self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .reply, target: self, action: #selector(backToHome))
-}
-@objc func backToHome(){
- self.imageView.removeFromSuperview()
- self.photoButton?.isEnabled = true
- self.navigationItem.leftBarButtonItem = nil
-}
-```
-
-Run the project. Now, you can try to capture video frames with Dynamsoft Camera Enhancer.
-
-
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-## What's Next?
-
-### How to integration with barcode reader
-
-This article guides you to integrate the barcode reader function into your app.
diff --git a/programming-old/ios/primary-api/camera-enhancer-v1.0.3.md b/programming-old/ios/primary-api/camera-enhancer-v1.0.3.md
deleted file mode 100644
index 01650300..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v1.0.3.md
+++ /dev/null
@@ -1,72 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v1.0.3.html
----
-
-# iOS CameraEnhancer Class
-
-`CameraEnhancer` is the class that provides multifunctional APIs on frame preprocessing and camera controlling.
-
-## [Initialization Methods]({{site.ios-api}}initialization.html)
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`]({{site.ios-api}}initialization.html#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
-## [Frame preprocessing methods]({{site.ios-api}}preprocess.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`acquireListFrame`]({{site.ios-api}}preprocess.html#acquirelistframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`]({{site.ios-api}}preprocess.html#enablefastmode) | Set the value true/false to turn on/off DCE fast mode |
-| [`enableSensorControl`]({{site.ios-api}}preprocess.html#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-|[`setSensorControlThreshold`]({{site.ios-api}}preprocess.html#setsensorcontrolthreshold)| Make settings on sensor control threshold |
-| [`enableFrameFilter`]({{site.ios-api}}preprocess.html#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`setMaxFrameRate`]({{site.ios-api}}preprocess.html#setmaxframerate) | Set max frame rate |
-
-## [Regular camera methods]({{site.ios-api}}camera.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`updateCameraSettingFromJson`]({{site.ios-api}}camera.html#updatecamerasettingfromjson) | Update camera filter and focus settings from Json |
-| [`updateCameraSettingFromFile`]({{site.ios-api}}camera.html#updatecamerasettingfromfile) | Update camera filter and focus settings from file |
-| [`getVersion`]({{site.ios-api}}camera.html#getversion) | Check current DCE version |
-| [`getCameraCurrentState`]({{site.ios-api}}camera.html#getcameracurrentstate) | Get camera current state |
-| [`getCameraDesiredState`]({{site.ios-api}}camera.html#getcameradesiredstate) | Get camera desired state |
-| [`setCameraDesiredState`]({{site.ios-api}}camera.html#setcameradesiredstate) | Set Camera on/off |
-| [`pauseCamera`]({{site.ios-api}}camera.html#pausecamera-and-resumecamera) | Pause Camera |
-| [`resumeCamera`]({{site.ios-api}}camera.html#pausecamera-and-resumecamera) | Resume Camera |
-| [`startScanning`]({{site.ios-api}}camera.html#stopscanning-and-startscanning) | Start scanning |
-| [`stopScanning`]({{site.ios-api}}camera.html#stopscanning-and-startscanning) | Stop scanning |
-| [`addCameraListener`]({{site.ios-api}}camera.html#addcameralistener) | Add camera listener (on preview original, filtered or fast frames) |
-| [`getTorchCurrentState`]({{site.ios-api}}camera.html#gettorchcurrentstate) | Get torch current state |
-| [`getTorchDesiredState`]({{site.ios-api}}camera.html#gettorchdesiredstate) | Get torch desired state |
-| [`setTorchDesiredState`]({{site.ios-api}}camera.html#settorchdesiredstate) | Set torch state |
-| [`addTorchListener`]({{site.ios-api}}camera.html#addtorchlistener) | Add torch listener |
-| [`getCameraPosition`]({{site.ios-api}}camera.html#getcameraposition) | Get current camera position |
-| [`switchCameraPosition`]({{site.ios-api}}camera.html#switchcameraposition) | Switch camera position front/back |
-| [`getResolution`]({{site.ios-api}}camera.html#getresolution) | Get current resolution setting |
-| [`setResolution`]({{site.ios-api}}camera.html#setresolution) | Set resolution |
-| [`getResolutionList`]({{site.ios-api}}camera.html#getresolutionlist) | Get all available resolutions |
-
-## [Focus & zoom methods]({{site.ios-api}}zoom-focus.html)
-
-| Method | Description |
-|-----------------|---------------|
-| [`setAutoFocusPosition`]({{site.ios-api}}zoom-focus.html#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`]({{site.ios-api}}zoom-focus.html#setmanualfocusposition) | Set manual focus position (This focus position only takes effect once for each time the API is called). |
-| [`setFocalLength`]({{site.ios-api}}zoom-focus.html#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`]({{site.ios-api}}zoom-focus.html#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`enableDefaultAutoFocus`]({{site.ios-api}}zoom-focus.html#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`enableRegularAutoFocus`]({{site.ios-api}}zoom-focus.html#enableregularautofocus) | If this is true, camera will auto focus for every 3 seconds. |
-| [`setRegularAutoFocusParam`]({{site.ios-api}}zoom-focus.html#setregularautofocusparam) | Set the focus interval and termination time for the regular autofocus. |
-| [`enableAutoFocusOnSharpnessChange`]({{site.ios-api}}zoom-focus.html#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. |
-| [`enableAutoZoom`]({{site.ios-api}}zoom-focus.html#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`setZoomFactor`]({{site.ios-api}}zoom-focus.html#setzoomfactor) | Set zoom factor |
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.0.0.md b/programming-old/ios/primary-api/camera-enhancer-v2.0.0.md
deleted file mode 100644
index cbc6d441..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.0.0.md
+++ /dev/null
@@ -1,1055 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.0.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.1.0.md b/programming-old/ios/primary-api/camera-enhancer-v2.1.0.md
deleted file mode 100644
index 1752e02a..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.1.0.md
+++ /dev/null
@@ -1,1192 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.1.0.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] scanRegion` Use a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html).
-`[in out] error` The error occurs when the region parameters are invalid. You may specify nil for this parameter if you do not want the error information.
-
-
-
-
How to set scan region
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) and cropped [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.1.3.md b/programming-old/ios/primary-api/camera-enhancer-v2.1.3.md
deleted file mode 100644
index f4032bc8..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.1.3.md
+++ /dev/null
@@ -1,1194 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.1.3.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] scanRegion` Use a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html).
-`[in out] error` The error occurs when the region parameters are invalid. You may specify nil for this parameter if you do not want the error information.
-
-
-
-
How to set scan region
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) and cropped [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.1.4.md b/programming-old/ios/primary-api/camera-enhancer-v2.1.4.md
deleted file mode 100644
index 145d5b69..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.1.4.md
+++ /dev/null
@@ -1,1212 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.1.4.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] scanRegion` Use a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html).
-`[in out] error` The error occurs when the region parameters are invalid. You may specify nil for this parameter if you do not want the error information.
-
-
-
-
How to set scan region
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) and cropped [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- // The "value" and "timescale" will be generated to a CMTime object.
- "iOSExposureTime":{
- "value": 4,
- "timescale": 2,
- },
- "iso":30
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.3.1.md b/programming-old/ios/primary-api/camera-enhancer-v2.3.1.md
deleted file mode 100644
index b80f9e38..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.3.1.md
+++ /dev/null
@@ -1,1285 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.3.1.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-```objc
-- (CGFloat)getMaxZoomFactor;
-```
-
-**Return Value**
-
-A **CGFloat** value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGFloat maxZoomFactor = [_dce getMaxZoomFactor];
-```
-2.
-```swift
-let maxZoomFactor = dce.getMaxZoomFactor()
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] scanRegion` Use a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html).
-`[in out] error` The error occurs when the region parameters are invalid. You may specify nil for this parameter if you do not want the error information.
-
-
-
-
How to set scan region
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) and cropped [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](../auxiliary-api/protocol-dcephotolistener.html#photooutputcallback).
-
-```objc
-- (void)takePhoto:(nonnull id)listener API_AVAILABLE(ios(11.0));
-```
-
-**Parameters**
-
-`[in] listener` An instance of [`DCEPhotoListener`](../auxiliary-api/protocol-dcephotolistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE(){
- [_dce takePhoto:self]
-}
-- (void)photoOutputCallback:(NSData *)jpegBytes{
- // Add your code to execute when photo is captured.
-}
-```
-2.
-```swift
-class ViewController: UIViewController, DCEPhotoListener {
- func configurationDCE(){
- dce.takePhoto()
- }
- func photoOutputCallback(_ jpegByte: Data){
- // Add your code to execute when photo is captured.
- }
-}
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- // The "value" and "timescale" will be generated to a CMTime object.
- "iOSExposureTime":{
- "value": 4,
- "timescale": 2,
- },
- "iso":30
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.3.20.md b/programming-old/ios/primary-api/camera-enhancer-v2.3.20.md
deleted file mode 100644
index f4f86303..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.3.20.md
+++ /dev/null
@@ -1,1428 +0,0 @@
----
-layout: default-layout
-title: iOS CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.3.20.html
----
-
-# DynamsoftCameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-2.
-```swift
-class DynamsoftCameraEnhancer : NSObject, ImageSource
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`getVersion`](#getversion) | Get the SDK version. |
-| [`cameraView`](#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`autoZoomRange`](#autozoomrange) | The property for getting/setting the range of auto zoom. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`](region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setCameraStateListener`](#setcamerastatelistener) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-2.
-```swift
-init(view: DCECameraView) -> DynamsoftCameraEnhancer
-```
-
-**Return Value**
-
-The instance of `DynamsoftCameraEnhancer`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+ (NSString*)getVersion;
-```
-2.
-```swift
-class func getVersion() -> String
-```
-
-**Return Value**
-
-A string value that indicates the version of DynamsoftCameraEnhancer SDK.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [DynamsoftCameraEnhancer getVersion];
-```
-2.
-```swift
-let version = DynamsoftCameraEnhancer.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (strong, nonatomic) DCECameraView *dceCameraView;
-```
-2.
-```swift
-var dceCameraView: DCECameraView { get set }
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSArray*)getAllCameras;
-```
-2.
-```swift
-func getAllCameras() -> [String]
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func selectCameraWithPosition(_ position: EnumCameraPosition) throws
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCameraWithPosition(EnumCameraPosition.back)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-2.
-```swift
-func getCameraPosition() -> EnumCameraPosition
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func selectCamera(_ cameraId: String) throws
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCamera("BACK_FACING_CAMERA")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSString*)getSelectedCamera;
-```
-2.
-```swift
-func getSelectedCamera() -> String
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumCameraState*)getCameraState;
-```
-2.
-```swift
-func getCameraState() -> EnumCameraState
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)open;
-```
-2.
-```swift
-func open()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)close;
-```
-2.
-```swift
-func close()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)turnOnTorch;
-```
-2.
-```swift
-func turnOnTorch()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)turnOffTorch;
-```
-2.
-```swift
-func turnOffTorch()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-### getFrameRate
-
-Get the current frame rate.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSInteger)getFrameRate;
-```
-2.
-```swift
-func getFrameRate() -> Int32
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setResolution:(EnumResolution)resolution;
-```
-2.
-```swift
-func setResolution(_ resolution: EnumResolution)
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSString*)getResolution;
-```
-2.
-```swift
-func getResolution() -> String
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setZoom:(CGFloat)factor
-```
-2.
-```swift
-func setZoom(_ factor: CGFloat)
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### autoZoomRange
-
-The property for getting/setting the range of auto zoom.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, assign) UIFloatRange autoZoomRange;
-```
-2.
-```swift
-var autoZoomRange: UIFloatRange { get set }
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setAutoZoomRange:UIFloatRangeMake(1.5,4)];
-UIFloatRange currentZoomRange = [_dce autoZoomRange];
-```
-2.
-```swift
-dce.autoZoomRange = UIFloatRange(minimum:1.5, maximum: 4)
-let currentZoomRange = dce.autoZoomRange()
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (CGFloat)getMaxZoomFactor;
-```
-2.
-```swift
-func getMaxZoomFactor() -> CGFloat
-```
-
-**Return Value**
-
-A **CGFloat** value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGFloat maxZoomFactor = [_dce getMaxZoomFactor];
-```
-2.
-```swift
-let maxZoomFactor = dce.getMaxZoomFactor()
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setFocus:(CGPoint)point;
-```
-2.
-```swift
-func setFocus(_ point: CGPoint)
-```
-
-**Parameters**
-
-`focusPosition`: A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setFocus(subsequentFocusMode)
-
-Trigger a focus at the targeting point and set the subsequent focus mode after focused.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setFocus:(CGPoint)focusPoint subsequentFocusMode:(EnumFocusMode)subsequentFocusMode;
-```
-2.
-```swift
-func setFocus(_ focusPoint: CGPoint, focusMode subsequentFocusMode: EnumFocusMode)
-```
-
-**Parameters**
-
-`[in] focusPosition`: A `CGPoint` indicates the interest area.
-`[in] subsequentFocusMode`: If you set the focus mode to `FM_LOCKED`, the focallength will be lock after the focus. Otherwise, the continuous auto focus that control by the hardware is still enabled.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint subsequentFocusMode:EnumFocusMode.FM_LOCKED];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint, subsequentFocusMode:EnumFocusMode.FM_LOCKEDD)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-2.
-```swift
-func setScanRegion(_ scanRegion: iRegionDefinition?) throws
-```
-
-**Parameters**
-
-`scanRegion`: Use a [`iRegionDefinition`](region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`](region-definition.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-do{
- try dce.setScanRegion(scanRegion)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](protocol-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the current scan region settings.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (iRegionDefinition) getScanRegion
-```
-2.
-```swift
-func getScanRegion() -> iRegionDefinition?
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-2.
-```swift
-var scanRegionVisible: Bool { get set }
-```
-
-
-
-### setCameraStateListener
-
-Set a `DCECameraStateListener` to receive notifications when the camera state changes.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setCameraStateListener:(nonnull id)listener;
-```
-2.
-```swift
-func setCameraStateListener(_ listener: DCECameraStateListener?)
-```
-
-**Parameters**
-
-`[in] listener`: A `DCECameraStateListener` object.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE{
- [_dce setCameraStateListener:self];
-}
-- (void)stateChangeCallback:(EnumCameraState)state{
- // Add your code to do when camera state changes.
-}
-```
-2.
-```swift
-class ViewController: UIViewController,DCECameraStateListener{
- func configurationDCE(){
- dce.setCameraStateListener(self)
- }
- func stateChangeCallback(EnumCameraState currentState){
- // Add your code to do when camera state changes.
- }
-}
-```
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-2.
-```swift
-func getFrameFromBuffer(_ iskeep: Bool) -> DCEFrame
-```
-
-**Parameters**
-
-`Keep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-2.
-```swift
-func addListener(_ listener: DCEFrameListener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-2.
-```swift
-func removeListener(_ listener: DCEFrameListener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func enableFeatures(_ enumEnhancerFeatures: Int) throws
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-do{
- try dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-2.
-```swift
-func disableFeatures(_ enumEnhancerFeatures: Int)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-2.
-```swift
-func isFeatureEnabled(_ enumEnhancerFeatures: Int) -> Bool
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)updateAdvancedSettingsFromFile:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(updateAdvancedSettingsFromFile(_:));
-```
-2.
-```swift
-func updateAdvancedSettingsFromFile(_ filePath: String) throws
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromFile("Put your JSON file path here.")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)updateAdvancedSettingsFromString:(NSString*)JsonString error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func updateAdvancedSettingsFromString(_ JsonString: String) throws
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromString("Put your stringified JSON data here.")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v2.3.5.md b/programming-old/ios/primary-api/camera-enhancer-v2.3.5.md
deleted file mode 100644
index c01e972c..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v2.3.5.md
+++ /dev/null
@@ -1,1286 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v2.3.5.html
----
-
-# CameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`initLicense`](#initlicense) | Set product key and activate the SDK. |
-| [`getVersion`](#getversion) | Get the SDK version. |
-| [`cameraView`](#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setFrameRate`](#setframerate) | **Deprecated, will be removed in v3.0**. Set the frame rate to the input value (if the input value is available for the device). |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of DynamsoftCameraEnhancer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### initLicense
-
-Set product key and activate the SDK. It is recommended to initialize the license in `AppDelegate.m`.
-
-```objc
-+(void)initLicense:(NSString*)license verificationListener:(id) verificationListener;
-```
-
-**Parameters**
-
-`[in] license`: The product key.
-`[in out] verificationListener`: The listener that handles callback when the license server returns. See also [`DCELicenseVerificationListener`]({{ site.ios-api-auxiliary }}protocol-licenselistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[DynamsoftCameraEnhancer initLicense:@"Put your license here" verificationDelegate: self];
-- (void)DCELicenseVerificationCallback:(bool)isSuccess error:(NSError *)error{
-}
-```
-2.
-```swift
-DynamsoftCameraEnhancer.initLicense("Put your license here", verificationDelegate: self)
-func dceLicenseVerificationCallback(_ isSuccess: Bool, error: Error?) {
-}
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that stands for the Camera Enhancer SDK version.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [_dce getVersion];
-```
-2.
-```swift
-let version = dce.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraPosition` An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-dce.selectCamera(with: EnumCameraPosition.back, error: nil)
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] cameraID` A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-`[in out] error` The error occurs when the input value is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{site.dce-enums}}camera-state.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (Void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`[in] resolution` One of the int value that preset in Enumeration [`EnumResolution`]({{site.dce-enums}}resolution.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (Void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`[in] factor` The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-```objc
-- (CGFloat)getMaxZoomFactor;
-```
-
-**Return Value**
-
-A **CGFloat** value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGFloat maxZoomFactor = [_dce getMaxZoomFactor];
-```
-2.
-```swift
-let maxZoomFactor = dce.getMaxZoomFactor()
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (Void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`[in] focusPosition` A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] scanRegion` Use a [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html).
-`[in out] error` The error occurs when the region parameters are invalid. You may specify nil for this parameter if you do not want the error information.
-
-
-
-
How to set scan region
-
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`]({{ site.ios-api-auxiliary }}region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) and cropped [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`]({{ site.ios-api-auxiliary }}dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### setFrameRate
-
-> Note:
-> The method is deprecated in v9.0.2 and will be removed in v10.0 release.
-
-Set the frame rate to the input value (if the input value is available for the device).
-
-```objc
-- (void)setFrameRate:(NSInteger)frameRate;
-```
-
-**Parameters**
-
-`[in] frameRate` An int value that refers to the target frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setFrameRate:15];
-```
-2.
-```swift
-dce.setFrameRate(15)
-```
-
-**Remarks**
-
-The available frame rate setting threshold is always intermittent, which means the input value might not match any available frame rate threshold. If the input value is below the lowest available threshold, the frame rate will be set to the lowest available threshold. If the input value is above the lowest available threshold but still does not match any threshold, the frame rate will be set to the highest available threshold below the input value.
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`[in] Keep` If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`[in] listener` The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](../auxiliary-api/protocol-dcephotolistener.html#photooutputcallback).
-
-```objc
-- (void)takePhoto:(nonnull id)listener API_AVAILABLE(ios(11.0));
-```
-
-**Parameters**
-
-`[in] listener` An instance of [`DCEPhotoListener`](../auxiliary-api/protocol-dcephotolistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE(){
- [_dce takePhoto:self]
-}
-- (void)photoOutputCallback:(NSData *)jpegBytes{
- // Add your code to execute when photo is captured.
-}
-```
-2.
-```swift
-class ViewController: UIViewController, DCEPhotoListener {
- func configurationDCE(){
- dce.takePhoto()
- }
- func photoOutputCallback(_ jpegByte: Data){
- // Add your code to execute when photo is captured.
- }
-}
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) value. When the license verification is failed, the enabled features will be recorded but not actived. Once a valid license is verified, the features you enabled will be recovered.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-`[in out] error` The error occurs when the license is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`[in] enhancerFeatures` The combined value of [`EnumEnhancerFeatures`]({{site.dce-enums}}enhanced-features.html?lang=objc,swift).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] filePath` The file path of the JSON file.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`[in] jsonString` A stringified JSON data.
-`[in out] error` The error occurs when the JSON data is invalid. You may specify nil for this parameter if you do not want the error information.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
-
-
-
-The advanced settings are as follow:
-
-| Parameter Name | Type | Description |
-| -------------- | ---- | ----------- |
-| [`focalLength`](#focallength) | *float* | Set the fixed focal length. |
-| [`autoFocusInterval`](#autofocusinterval) | *int* | Set the time interval of the auto focus. |
-| [`autoFocusTerminateTime`](#autofocusterminatetime) | *int* | Set the minimum terminate time of auto focus. |
-| [`sensorControlSensitivity`](#sensorcontrolsensitivity) | *int* | Set the sensitivity of the mobile sensor. |
-| [`FastMode`](#fastmode) | *JSON data* | Set a group of crop regions. |
-| [`ISO & ExposureTime`](#iso--exposuretime) | *JSON data* | Set the ISO and exposure time. |
-
-#### focalLength
-
-Set the fixed focal length with a float value. When this parameter is configured, the other focus methods and parameters will be disbaled and the focal length will be fixed. Users can reset the focalLength to -1 to disable the fixed focus settings. The closer to the 0, the further the focalLength will be.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,1] | -1 |
-
-#### autoFocusInterval
-
-Set the time interval of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 3000(ms) |
-
-#### autoFocusTerminateTime
-
-The minimum termination time of the auto-focus with an int value.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 500(ms) |
-
-#### sensorControlSensitivity
-
-Set the sensitivity of the mobile sensor with an int value. A lower input value results in a higher sensitivity.
-
-| Value Type | Value Range | Default Value |
-| ---------- | ----------- | ------------- |
-| *int* | [0,0x7fffffff] | 50 |
-
-#### FastMode
-
-The fast-mode parameters store four groups of frame cropping parameters. The cropping parameters will be implemented periodically when the fast mode is enabled. You can use the default cropping region settings or update your personalized crop regions via a JSON string or file.
-
-Example:
-
-```json
-"FastMode": {
- "cropRegions": [{
- "top": 0,
- "right": 100,
- "bottom": 100,
- "left": 0
- },
- {
- "top": 25,
- "right": 100,
- "bottom": 75,
- "left": 0
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- },
- {
- "top": 25,
- "right": 75,
- "bottom": 75,
- "left": 25
- }]
-}
-```
-
-#### ISO & ExposureTime
-
-Set the ISO and exposure time of the camera.
-
-Example:
-
-```json
-{
- // The "value" and "timescale" will be generated to a CMTime object.
- "iOSExposureTime":{
- "value": 4,
- "timescale": 2,
- },
- "iso":30
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v3.0.0.md b/programming-old/ios/primary-api/camera-enhancer-v3.0.0.md
deleted file mode 100644
index 8be56876..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v3.0.0.md
+++ /dev/null
@@ -1,931 +0,0 @@
----
-layout: default-layout
-title: iOS CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v3.0.0.html
----
-
-# DynamsoftCameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`getVersion`](#getversion) | Get the SDK version. |
-
-
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of `DynamsoftCameraEnhancer`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-+ (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that indicates the version of DynamsoftCameraEnhancer SDK.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [DynamsoftCameraEnhancer getVersion];
-```
-2.
-```swift
-let version = DynamsoftCameraEnhancer.getVersion()
-```
-
-
-
-## Basic Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-
-
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-dce.selectCamera("BACK_FACING_CAMERA", error: &error)
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-
-
-## Frame Acquiring Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`Keep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue, error: &error)
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-
-
-## Advanced Camera Control Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`](region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`focusPosition`: A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`scanRegion`: Use a [`iRegionDefinition`](region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`](region-definition.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-dce.setScanRegion(scanRegion, error: &error)
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](protocol-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(fromFile: "Put your JSON file path here.", error: &error)
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-dce.updateAdvancedSettings(from: "Put your stringified JSON data here.", error: &error)
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v3.0.1.md b/programming-old/ios/primary-api/camera-enhancer-v3.0.1.md
deleted file mode 100644
index 723fe8a6..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v3.0.1.md
+++ /dev/null
@@ -1,1120 +0,0 @@
----
-layout: default-layout
-title: iOS CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v3.0.1.html
----
-
-# DynamsoftCameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`getVersion`](#getversion) | Get the SDK version. |
-| [`cameraView`](#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`pause`](#pause) | Pause the current selected camera. |
-| [`resume`](#resume) | Resume the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-| [`takePhoto`](#takephoto) | Take a photo from the camera and save the image in the memory. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`](region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-```java
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-
-**Return Value**
-
-The instance of `DynamsoftCameraEnhancer`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-```objc
-+ (NSString*)getVersion;
-```
-
-**Return Value**
-
-A string value that indicates the version of DynamsoftCameraEnhancer SDK.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [DynamsoftCameraEnhancer getVersion];
-```
-2.
-```swift
-let version = DynamsoftCameraEnhancer.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-```objc
-@property (strong, nonatomic) DCECameraView cameraView;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```objc
-- (NSArray*)getAllCameras;
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCameraWithPosition(EnumCameraPosition.back)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCamera("BACK_FACING_CAMERA")
-catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-```objc
-- (NSString*)getSelectedCamera;
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-```objc
-- (EnumCameraState*)getCameraState;
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)open;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)close;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### pause
-
-- Pause the selected camera if a camera has been selected via `selectCamera`.
-- Pause the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)pause;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce pause];
-```
-2.
-```swift
-dce.pause()
-```
-
-**Remarks**
-
-If the `pause` method is triggered:
-
-- The camera UI will be stopped on the last frame captured before you `pause` the camera.
-- The camera is still open.
-- The video streaming input is not stopped.
-- DCE video buffer will continue appending frames.
-
-
-
-### resume
-
-- Resume the selected camera if a camera has been selected via `selectCamera`.
-- Resume the default camera if no camera is selected via `selectCamera`.
-
-```objc
-- (void)resume;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce resume];
-```
-2.
-```swift
-dce.resume()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-```objc
-- (void)turnOnTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-```objc
-- (void)turnOffTorch;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-
-**Parameters**
-
-`Keep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-### takePhoto
-
-Take a photo from the camera and save the image in the memory. The photo will be captured and users can receive the captured photo via [`photoOutputCallback`](../auxiliary-api/protocol-dcephotolistener.html#photooutputcallback).
-
-```objc
-- (void)takePhoto:(nonnull id)listener API_AVAILABLE(ios(11.0));
-```
-
-**Parameters**
-
-`listener`: An instance of [`DCEPhotoListener`](protocol-dcephotolistener.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE(){
- [_dce takePhoto:self]
-}
-- (void)photoOutputCallback:(NSData *)jpegBytes{
- // Add your code to execute when photo is captured.
-}
-```
-2.
-```swift
-class ViewController: UIViewController, DCEPhotoListener {
- func configurationDCE(){
- dce.takePhoto()
- }
- func photoOutputCallback(_ jpegByte: Data){
- // Add your code to execute when photo is captured.
- }
-}
-```
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-do{
- try dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### getFrameRate
-
-Get the current frame rate.
-
-```objc
-- (NSInteger)getFrameRate;
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-```objc
-- (void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-```objc
-- (void)setZoom:(CGFloat)factor
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-```objc
-- (CGFloat)getMaxZoomFactor;
-```
-
-**Return Value**
-
-A **CGFloat** value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGFloat maxZoomFactor = [_dce getMaxZoomFactor];
-```
-2.
-```swift
-let maxZoomFactor = dce.getMaxZoomFactor()
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-```objc
-- (void)setFocus:(CGPoint)focusPosition;
-```
-
-**Parameters**
-
-`focusPosition`: A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-
-**Parameters**
-
-`scanRegion`: Use a [`iRegionDefinition`](region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`](region-definition.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-do{
- try dce.setScanRegion(scanRegion)
-catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](protocol-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-```objc
-- (iRegionDefinition) getScanRegion
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null
-
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-
-
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromFile("Put your JSON file path here.")
-catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-```objc
-- (void)updateAdvancedSettings:(NSString*)params error:(NSError * _Nullable * _Nullable)error;
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromString("Put your stringified JSON data here.")
-catch{
- // Add your code to deal with the exceptions.
-}
-```
diff --git a/programming-old/ios/primary-api/camera-enhancer-v3.0.3.md b/programming-old/ios/primary-api/camera-enhancer-v3.0.3.md
deleted file mode 100644
index a436b17b..00000000
--- a/programming-old/ios/primary-api/camera-enhancer-v3.0.3.md
+++ /dev/null
@@ -1,1428 +0,0 @@
----
-layout: default-layout
-title: iOS CameraEnhancer Class - Dynamsoft Camera Enhancer Documents
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/camera-enhancer-v3.0.3.html
----
-
-# DynamsoftCameraEnhancer Class
-
-The main class of `DynamsoftCameraEnhancer`. It contains APIs that enable user to:
-
-- Implement basic camera control like open, close, change resolution, etc.
-- Get frames from the video streaming.
-- Enable advanced features including:
- - Frame filtering by sharpness
- - Frame filtering by sensor
- - Enhanced focus
- - Frame cropping
- - Auto zoom
- - Smart torch control
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DynamsoftCameraEnhancer:NSObject
-```
-2.
-```swift
-class DynamsoftCameraEnhancer : NSObject, ImageSource
-```
-
-## Initialization Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`initWithView`](#initwithview) | Initialize the camera enhancer with the camera view |
-| [`getVersion`](#getversion) | Get the SDK version. |
-| [`cameraView`](#cameraview) | Bind a `DCECameraView` to the camera enhancer. |
-
-## Basic Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getAllCameras`](#getallcameras) | Get all available cameras. This method returns a list of available camera IDs. |
-| [`selectCameraWithPosition`](#selectcamerawithposition) | Select whether to use front-facing camera or back-facing camera. |
-| [`getCameraPosition`](#getcameraposition) | Returns whether the front-facing camera or back-facing camera is selected. |
-| [`selectCamera`](#selectcamera) | Select a camera from the camera list with the camera ID. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the camera ID of the current selected camera. |
-| [`getCameraState`](#getcamerastate) | Get the state of the current selected camera. |
-| [`open`](#open) | Turn on the current selected camera. |
-| [`close`](#close) | Turn off the current selected camera. |
-| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
-| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
-| [`getFrameRate`](#getframerate) | Get the current frame rate. |
-| [`setResolution`](#setresolution) | Set the resolution to the input value (if the input value is available for the device). |
-| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`setZoom`](#setzoom) | Set the zoom factor. Once **setZoom** is triggered and approved, the zoom factor of the activated camera will immediately become the input value. |
-| [`autoZoomRange`](#autozoomrange) | The property for getting/setting the range of auto zoom. |
-| [`getMaxZoomFactor`](#getmaxzoomfactor) | Get the maximum available zoom factor. |
-| [`setFocus`](#setfocus) | Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position. |
-| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Trigger a focus at the targeting point and set the subsequent focus mode after focused. |
-| [`setScanRegion`](#setscanregion) | Set the **scanRegion** with a [`iRegionDefinition`](region-definition.html) value. The frame will be cropped according to the scan region. |
-| [`getScanRegion`](#getscanregion) | Get the scan region. |
-| [`scanRegionVisible`](#scanregionvisible) | Set whether to display the **scanRegion** on the UI. |
-| [`setCameraStateListener`](#setcamerastatelistener) | Add a `DCECameraStateListener` to receive notification when the camera state changes. |
-
-## Frame Acquiring Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`getFrameFromBuffer`](#getframefrombuffer) | Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer. |
-| [`addListener`](#addlistener) | Add a listener to the camera enhancer instance. |
-| [`removeListener`](#removelistener) | Remove a previously added listener from the camera enhancer instance. |
-
-## Enhanced Features Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`enableFeatures`](#enablefeatures) | Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`disableFeatures`](#disablefeatures) | Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values. |
-| [`isFeatureEnabled`](#isfeatureenabled) | Check whether the input features are enabled. |
-
-## Advanced Camera Control Methods Summary
-
-| Method | Description |
-| ------ | ----------- |
-| [`updateAdvancedSettingsFromFile`](#updateadvancedsettingsfromfile) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage. |
-| [`updateAdvancedSettingsFromString`](#updateadvancedsettingsfromstring) | Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string. |
-
-## Initialization Methods Details
-
-### initWithView
-
-Initialize the camera enhancer with the `DCECameraView`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithView:(DCECameraView *)view;
-```
-2.
-```swift
-init(view: DCECameraView) -> DynamsoftCameraEnhancer
-```
-
-**Return Value**
-
-The instance of `DynamsoftCameraEnhancer`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dce = [[DynamsoftCameraEnhancer alloc] initWithView:_dceView];
-```
-2.
-```swift
-let dce = DynamsoftCameraEnhancer.init(view: dceCameraView)
-```
-
-
-
-### getVersion
-
-Get the SDK version of Dynamsoft Camera Enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-+ (NSString*)getVersion;
-```
-2.
-```swift
-class func getVersion() -> String
-```
-
-**Return Value**
-
-A string value that indicates the version of DynamsoftCameraEnhancer SDK.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* version = [DynamsoftCameraEnhancer getVersion];
-```
-2.
-```swift
-let version = DynamsoftCameraEnhancer.getVersion()
-```
-
-
-
-### cameraView
-
-Bind a `DCECameraView` to the camera enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (strong, nonatomic) DCECameraView *dceCameraView;
-```
-2.
-```swift
-var dceCameraView: DCECameraView { get set }
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_dceView = [[DCECameraView alloc] initWithFrame:self.view.bounds]
-[_dce setCameraView:_dceView];
-```
-2.
-```swift
-let dceView = DCECameraView.init(frame self.view.bounds)
-dce.cameraView = dceView
-```
-
-## Basic Camera Control Methods Details
-
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSArray*)getAllCameras;
-```
-2.
-```swift
-func getAllCameras() -> [String]
-```
-
-**Return Value**
-
-An NSArray that includes all available cameras. Users can clearly read whether the camera is front-facing, back-facing, or external from the cameraID.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray* allCameras = [_dce getAllCameras];
-```
-2.
-```swift
-let allCameraList = dce.getAllCameras()
-```
-
-
-
-### selectCameraWithPosition
-
-Select the camera position (front-facing or back-facing).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)selectCameraWithPosition:(EnumCameraPosition)position error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func selectCameraWithPosition(_ position: EnumCameraPosition) throws
-```
-
-**Parameters**
-
-`cameraPosition`: An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCameraWithPosition:EnumCameraPositionBack error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCameraWithPosition(EnumCameraPosition.back)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-
-
-### getCameraPosition
-
-Returns whether the front-facing camera or back-facing camera is selected.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumCameraPosition) getCameraPosition;
-```
-2.
-```swift
-func getCameraPosition() -> EnumCameraPosition
-```
-
-**Return Value**
-
-An `EnumCameraPosition` value that indicates front-facing or back-facing camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraPosition cameraPosition = [_dce getCameraPosition];
-```
-2.
-```swift
-let cameraPosition = dce.getCameraPosition()
-```
-
-
-
-### selectCamera
-
-Select camera by `cameraID`. The camera will be selected and further camera control settings will be applied to this camera. When the selected camera is changed via this method, the settings will be inherited by the newly selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func selectCamera(_ cameraId: String) throws
-```
-
-**Parameters**
-
-`cameraID`: A `String` value that listed in the `cameraIDList` returned by `getAllCameras`. The method will have no effects if the input value does not exist in the `cameraIDList`.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce selectCamera:@"BACK_FACING_CAMERA" error: &error];
-```
-2.
-```swift
-do{
- try dce.selectCamera("BACK_FACING_CAMERA")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- There is always a back-facing camera be defined as a default camera. If the user doesn't select any camera via `selectCamera`, the default camera will be considered as the selected camera.
-- If there is no opened camera, the method `selectCamera` will not open any camera.
-- If there is an opened camera and the opened camera's ID exactly equals the input ID, the method `selectCamera` will make no changes.
-- If there is an opened camera and the opened camera's ID is different from the input ID, the method `selectCamera` will close the currently opened camera and then open a new camera by the input ID.
-
-
-
-### getSelectedCamera
-
-Get the ID of the currently selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSString*)getSelectedCamera;
-```
-2.
-```swift
-func getSelectedCamera() -> String
-```
-
-**Return Value**
-
-The ID of the current selected camera.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* cameraID = [_dce getSelectedCamera];
-```
-2.
-```swift
-let selectedCamera = dce.getSelectedCamera()
-```
-
-
-
-### getCameraState
-
-Get the state of the currently selected camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (EnumCameraState*)getCameraState;
-```
-2.
-```swift
-func getCameraState() -> EnumCameraState
-```
-
-**Return Value**
-
-One of the preset camera state in Enumeration [`EnumCameraState`]({{ site.dce-enums }}camera-state.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-EnumCameraState state = [_dce getCameraState];
-```
-2.
-```swift
-let cameraState = dce.getCameraState()
-```
-
-
-
-### open
-
-- Turn on the selected camera if a camera has been selected via `selectCamera`.
-- Turn on the default camera if no camera is selected via `selectCamera`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)open;
-```
-2.
-```swift
-func open()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce open];
-```
-2.
-```swift
-dce.open()
-```
-
-
-
-### close
-
-- Turn off the selected camera if a camera has been selected via `selectCamera`.
-- Turn off the default camera if no camera is selected via `selectCamera`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)close;
-```
-2.
-```swift
-func close()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce close];
-```
-2.
-```swift
-dce.close()
-```
-
-
-
-### turnOnTorch
-
-Turn on the torch (if the torch of the mobile device is available).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)turnOnTorch;
-```
-2.
-```swift
-func turnOnTorch()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOnTorch];
-```
-2.
-```swift
-dce.turnOnTorch()
-```
-
-
-
-### turnOffTorch
-
-Turn off the torch.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)turnOffTorch;
-```
-2.
-```swift
-func turnOffTorch()
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce turnOffTorch];
-```
-2.
-```swift
-dce.turnOffTorch()
-```
-
-### getFrameRate
-
-Get the current frame rate.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSInteger)getFrameRate;
-```
-2.
-```swift
-func getFrameRate() -> Int32
-```
-
-**Return Value**
-
-The current frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSInteger frameRate = [_dce getFrameRate];
-```
-2.
-```swift
-let frameRate = dce.getFrameRate()
-```
-
-
-
-### setResolution
-
-Input one of the preset resolution value in Enumeration `Resolution`. The camera enhancer will try to set the resolution to the target value or the closest available value below the target value.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setResolution:(EnumResolution)resolution;
-```
-2.
-```swift
-func setResolution(_ resolution: EnumResolution)
-```
-
-**Parameters**
-
-`resolution`: One of the int value that preset in Enumeration [`EnumResolution`]({{ site.dce-enums }}resolution.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setResolution:EnumRESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-
-
-### getResolution
-
-Get the current resolution.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSString*)getResolution;
-```
-2.
-```swift
-func getResolution() -> String
-```
-
-**Return Value**
-
-The size of the current resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSString* resolution = [_dce getResolution];
-```
-2.
-```swift
-let resolution = dce.getResolution()
-```
-
-
-
-### setZoom
-
-Set the zoom factor. Once `setZoom` is triggered and approved, the zoom factor of the activated camera will immediately become the input value.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setZoom:(CGFloat)factor
-```
-2.
-```swift
-func setZoom(_ factor: CGFloat)
-```
-
-**Parameters**
-
-`factor`: The target zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setZoom:3.0f];
-```
-2.
-```swift
-dce.setZoom(3.0)
-```
-
-
-
-### autoZoomRange
-
-The property for getting/setting the range of auto zoom.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, assign) UIFloatRange autoZoomRange;
-```
-2.
-```swift
-var autoZoomRange: UIFloatRange { get set }
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce setAutoZoomRange:UIFloatRangeMake(1.5,4)];
-UIFloatRange currentZoomRange = [_dce autoZoomRange];
-```
-2.
-```swift
-dce.autoZoomRange = UIFloatRange(minimum:1.5, maximum: 4)
-let currentZoomRange = dce.autoZoomRange()
-```
-
-
-
-### getMaxZoomFactor
-
-Get the maximum available zoom factor.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (CGFloat)getMaxZoomFactor;
-```
-2.
-```swift
-func getMaxZoomFactor() -> CGFloat
-```
-
-**Return Value**
-
-A **CGFloat** value that indicates the maximum available zoom factor of the device.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGFloat maxZoomFactor = [_dce getMaxZoomFactor];
-```
-2.
-```swift
-let maxZoomFactor = dce.getMaxZoomFactor()
-```
-
-
-
-### setFocus
-
-Set the focus position (value range from 0.0f to 1.0f) and trigger a focus at the configured position.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setFocus:(CGPoint)point;
-```
-2.
-```swift
-func setFocus(_ point: CGPoint)
-```
-
-**Parameters**
-
-`focusPosition`: A CGPoint that stores the x and y coordinate of the targeting focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint)
-```
-
-
-
-### setFocus(subsequentFocusMode)
-
-Trigger a focus at the targeting point and set the subsequent focus mode after focused.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setFocus:(CGPoint)focusPoint subsequentFocusMode:(EnumFocusMode)subsequentFocusMode;
-```
-2.
-```swift
-func setFocus(_ focusPoint: CGPoint, focusMode subsequentFocusMode: EnumFocusMode)
-```
-
-**Parameters**
-
-`[in] focusPosition`: A `CGPoint` indicates the interest area.
-`[in] subsequentFocusMode`: If you set the focus mode to `FM_LOCKED`, the focallength will be lock after the focus. Otherwise, the continuous auto focus that control by the hardware is still enabled.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-CGPoint focusPoint = {0.4, 0.5};
-[_dce setFocus:focusPoint subsequentFocusMode:EnumFocusMode.FM_LOCKED];
-```
-2.
-```swift
-let focusPoint = CGPoint(x:0.4, y:0.5)
-dce.setFocus(focusPoint, subsequentFocusMode:EnumFocusMode.FM_LOCKEDD)
-```
-
-
-
-### setScanRegion
-
-Specify the `scanRegion`. The DCEFrames will be cropped according to the `scanRegion` before they are stored in the video buffer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setScanRegion:(RegionDefinition)scanRegion error:(NSError * _Nullable)error;
-```
-2.
-```swift
-func setScanRegion(_ scanRegion: iRegionDefinition?) throws
-```
-
-**Parameters**
-
-`scanRegion`: Use a [`iRegionDefinition`](region-definition.html) value to specify the scan region. The parameter will be optimized to the maximum or minimum available value if the input parameter is out of range. For more information, please view [`iRegionDefinition`](region-definition.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* scanRegion = [[iRegionDefinition alloc] init];
-scanRegion.regionTop = 25;
-scanRegion.regionBottom = 75;
-scanRegion.regionLeft = 25;
-scanRegion.regionRight = 75;
-scanRegion.regionMeasuredByPercentage = 1
-[_dce setScanRegion:scanRegion error: &error];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion.regionTop = 25
-scanRegion.regionBottom = 75
-scanRegion.regionLeft = 25
-scanRegion.regionRight = 75
-scanRegion.regionMeasuredByPercentage = 1
-do{
- try dce.setScanRegion(scanRegion)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-- The region definition defines the region on the **camera view**. For each value of the class [`iRegionDefinition`](region-definition.html):
- - The `regionTop` is the distance between the **top** of the scan region and the **top** of the video frame.
- - The `regionBottom` is the distance between the **bottom** of the scan region and the **top** of the video frame.
- - The `regionLeft` is the distance between the **left** of the scan region and the **left** of the video frame.
- - The `regionRight` is the distance between the **right** of the scan region and the **left** of the video frame.
-
-- When you trigger `setScanRegion`, the enhancer feature [`EF_FAST_MODE`](#enablefeatures) will be disabled.
-- You will still get the original [`DCEFrame`](dceframe.html) from [`FrameOutputCallback`](protocol-dceframelistener.html) and cropped [`DCEFrame`](dceframe.html) from [`getFrameFromBuffer`](#getframefrombuffer). The `cropRegion` of [`DCEFrame`](dceframe.html) will be configured based on the **scanRegion** when `setScanRegion` is triggered.
-- When you trigger `setScanRegion`, the [`scanRegionVisible`](#scanregionvisible) will be set to true automatically. If you don't want to display the **scanRegion** on the UI, please set the [`scanRegionVisible`](#scanregionvisible) to false manually.
-
-
-
-### getScanRegion
-
-Get the current scan region settings.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (iRegionDefinition) getScanRegion
-```
-2.
-```swift
-func getScanRegion() -> iRegionDefinition?
-```
-
-**Return Value**
-
-The return value of `getScanRegion` is always the actual parameter of the `scanRegion`, which might be different from the user input parameter. If `scanRegion` is not configured or the method `setScanRegion` is not approved, the return value will be null.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-iRegionDefinition* myScanRegion = [[iRegionDefinition alloc] init];
-myScanRegion = [_dce getScanRegion];
-```
-2.
-```swift
-let scanRegion = iRegionDefinition()
-scanRegion = dce.getScanRegion()
-```
-
-
-
-### scanRegionVisible
-
-Set whether to display the **scanRegion** on the UI. The default value of the property is false. When the property value is set to true, the scan region will be drawn on the UI. The **scanRegion** will not be displayed if its value is null.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL scanRegionVisible;
-```
-2.
-```swift
-var scanRegionVisible: Bool { get set }
-```
-
-
-
-### setCameraStateListener
-
-Set a `DCECameraStateListener` to receive notifications when the camera state changes.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void) setCameraStateListener:(nonnull id)listener;
-```
-2.
-```swift
-func setCameraStateListener(_ listener: DCECameraStateListener?)
-```
-
-**Parameters**
-
-`[in] listener`: A `DCECameraStateListener` object.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-- (void)configurationDCE{
- [_dce setCameraStateListener:self];
-}
-- (void)stateChangeCallback:(EnumCameraState)state{
- // Add your code to do when camera state changes.
-}
-```
-2.
-```swift
-class ViewController: UIViewController,DCECameraStateListener{
- func configurationDCE(){
- dce.setCameraStateListener(self)
- }
- func stateChangeCallback(EnumCameraState currentState){
- // Add your code to do when camera state changes.
- }
-}
-```
-
-
-
-## Frame Acquiring Methods Details
-
-### getFrameFromBuffer
-
-Get the latest frame from the buffer. The boolean value determines whether the fetched frame will be removed from the buffer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DCEFrame*)getFrameFromBuffer:(BOOL)keep;
-```
-2.
-```swift
-func getFrameFromBuffer(_ iskeep: Bool) -> DCEFrame
-```
-
-**Parameters**
-
-`Keep`: If set to `true`, the frame will be kept in the video buffer. Otherwise, it will be removed from the video buffer.
-
-**Return Value**
-
-The latest frame in the video buffer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-dceFrame = [_dce getFrameFromBuffer:true];
-```
-2.
-```swift
-let dceFrame = dce.getFrameFromBuffer()
-```
-
-
-
-### addListener
-
-Add a listener to the `CameraEnhancer` instance. This method will have no effect if the same listener is already added.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)addListener:(nonnull id)listener;
-```
-2.
-```swift
-func addListener(_ listener: DCEFrameListener)
-```
-
-**Parameters**
-
-`listener`: An object of `DCEFrameListener`. Its callback method `frameOutputCallback` will be available for users to make further operations on the captured video frame.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce addListener:self];
-```
-2.
-```swift
-dce.addListener(self)
-```
-
-
-
-### removeListener
-
-Remove a previously added listener from the `CameraEnhancer` instance. This method will have no effect if there is no listener exists in `CameraEnhancer` instance.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)removeListener:(nonnull id)listener;
-```
-2.
-```swift
-func removeListener(_ listener: DCEFrameListener)
-```
-
-**Parameters**
-
-`listener`: The input listener will be removed from the Camera Enhancer instance.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce removeListener:self];
-```
-2.
-```swift
-dce.removeListener(self)
-```
-
-
-
-## Enhanced Features Methods Details
-
-### enableFeatures
-
-Enable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) value.
-
-The `EnumEnhancerFeatures` members:
-
-| Members | Value |
-| -------- | ----- |
-| `EnumFRAME_FILTER` | 0x01 |
-| `EnumSENSOR_CONTROL` | 0x02 |
-| `EnumENHANCED_FOCUS` | 0x04 |
-| `EnumFAST_MODE` | 0x08 |
-| `EnumAUTO_ZOOM` | 0x10 |
-| `EnumSMART_TORCH` | 0x20 |
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)enableFeatures:(EnumEnhancerFeatures)features error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func enableFeatures(_ enumEnhancerFeatures: Int) throws
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce enableFeatures:EnumFRAME_FILTER error: &error];
-```
-2.
-```swift
-do{
- try dce.enableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-The enable action will not be approved if the license is invalid. If your input values include the features that have been already enabled, these features will keep the enabled status.
-
-
-
-### disableFeatures
-
-Disable camera enhancer features by inputting [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html) values.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)disableFeatures:(EnumEnhancerFeatures)features;
-```
-2.
-```swift
-func disableFeatures(_ enumEnhancerFeatures: Int)
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce disableFeatures:EnumFRAME_FILTER];
-```
-2.
-```swift
-dce.disableFeatures(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-You can still disable the features even if the license is invalid. If your input values include the features that are not enabled, these features will keep the disabled status.
-
-
-
-### isFeatureEnabled
-
-Check whether the input features are enabled.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)isFeatureEnabled:(EnumEnhancerFeatures)features;
-```
-2.
-```swift
-func isFeatureEnabled(_ enumEnhancerFeatures: Int) -> Bool
-```
-
-**Parameters**
-
-`enhancerFeatures`: The combined value of [`EnumEnhancerFeatures`]({{ site.dce-enums }}enhanced-features.html).
-
-**Return Value**
-
-A BOOL value refers to whether all the features you input are enabled.
-
-- `True`: All the features you input are enabled.
-- `False`: There is at least one feature is not enabled among your input values.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-BOOL featureEnabled = [_dce isFeatureEnabled:EnumFRAME_FILTER];
-```
-2.
-```swift
-let featureEnabled = dce.isFeatureEnabled(EnumEnhancerFeature.EnumFRAME_FILTER.rawValue)
-```
-
-**Remarks**
-
-If the features you input are all enabled but don't cover all the enabled features, this method will still return `true`.
-
-## Advanced Camera Control Methods Details
-
-### updateAdvancedSettingsFromFile
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON file from the storage.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)updateAdvancedSettingsFromFile:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(updateAdvancedSettingsFromFile(_:));
-```
-2.
-```swift
-func updateAdvancedSettingsFromFile(_ filePath: String) throws
-```
-
-**Parameters**
-
-`filePath`: The file path of the JSON file.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromFile:@"Put your JSON file path here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromFile("Put your JSON file path here.")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
-
-**Remarks**
-
-You might need permission authority to enable the Camera Enhancer to read the file in your mobile storage.
-
-
-
-### updateAdvancedSettingsFromString
-
-Update the advanced camera controlling and video streaming processing parameters. This method enables you to update settings via a JSON string.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)updateAdvancedSettingsFromString:(NSString*)JsonString error:(NSError * _Nullable * _Nullable)error;
-```
-2.
-```swift
-func updateAdvancedSettingsFromString(_ JsonString: String) throws
-```
-
-**Parameters**
-
-`jsonString`: A stringified JSON data.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[_dce updateAdvancedSettingsFromString:@"Put your stringified JSON data here." error: &error];
-```
-2.
-```swift
-do{
- try dce.updateAdvancedSettingsFromString("Put your stringified JSON data here.")
-}catch{
- // Add your code to deal with the exceptions.
-}
-```
diff --git a/programming-old/ios/primary-api/camera-v1.0.3.md b/programming-old/ios/primary-api/camera-v1.0.3.md
deleted file mode 100644
index b76e2fde..00000000
--- a/programming-old/ios/primary-api/camera-v1.0.3.md
+++ /dev/null
@@ -1,524 +0,0 @@
----
-layout: default-layout
-title: Regular Camera Methods - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Regular Camera Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift API references, Regular Camera Methods
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Regular Camera Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/camera-v1.0.3.html
----
-
-# iOS API Reference - Regular Camera Methods
-
-| Method | Description |
-|-----------------|---------------|
-| [`updateCameraSettingFromJson`](#updatecamerasettingfromjson) | Update camera filter and focus settings from Json |
-| [`updateCameraSettingFromFile`](#updatecamerasettingfromfile) | Update camera filter and focus settings from file |
-| [`getVersion`](#getversion) | Check current DCE version |
-| [`getCameraCurrentState`](#getcameracurrentstate) | Get camera current state |
-| [`getCameraDesiredState`](#getcameradesiredstate) | Get camera desired state |
-| [`setCameraDesiredState`](#setcameradesiredstate) | Set Camera on/off |
-| [`pauseCamera`](#pausecamera-and-resumecamera) | Pause Camera |
-| [`resumeCamera`](#pausecamera-and-resumecamera) | Resume Camera |
-| [`startScanning`](#stopscanning-and-startscanning) | Start scanning |
-| [`stopScanning`](#stopscanning-and-startscanning) | Stop scanning |
-| [`addCameraListener`](#addcameralistener) | Add camera listener (on preview original, filtered or fast frames) |
-| [`getTorchCurrentState`](#gettorchcurrentstate) | Get torch current state |
-| [`getTorchDesiredState`](#gettorchdesiredstate) | Get torch desired state |
-| [`setTorchDesiredState`](#settorchdesiredstate) | Set torch state |
-| [`addTorchListener`](#addtorchlistener) | Add torch listener |
-| [`getCameraPosition`](#getcameraposition) | Get current camera position |
-| [`switchCameraPosition`](#switchcameraposition) | Switch camera position front/back |
-| [`getResolution`](#getresolution) | Get current resolution setting |
-| [`setResolution`](#setresolution) | Set resolution |
-
----
-
-## updateCameraSettingFromJson
-
-There are Some detailed settings that can be updated from JSON string or file. [View JSON data template and explanation](#updatecamerasettingfromfile)
-
-```objc
-- (void)updateCameraSettingFromJson:(NSString*)params;
-```
-
-**Parameters**
-
-The camera setting JSON Strings.
-
-**Code Snippet**
-
-To update from JSON string:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce updateCameraSettingFromJson:@"json string"];
-```
-2.
-```swift
-dce.updateCameraSetting(fromJson: "Your json string")
-```
-
-## updateCameraSettingFromFile
-
-There are some detailed settings that can be updated from JSON string or file.
-
-```objc
-- (void)updateCameraSettingFromFile:(NSString*)filePath;
-```
-
-**Parameters**
-
-The camera setting JSON Strings.
-
-**Code Snippet**
-
-To update from JSON file:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce updateCameraSettingFromFile:@"your json file path"];
-```
-2.
-```swift
-dce.updateCameraSettingFromFile(fromFile: "Your file path")
-```
-
-This is the template for `updateCameraSettingFromJson` and `updateCameraSettingFromFile`:
-
-```Json
-{
- //Absolute sharpness value, A threshold value for controlling filter
- "abssharpnessthreshold":200,
- //Sensor value, A threshold value for controlling filter
- "sensorvalue":3,
- //A threshold value for gray scale analysis
- "graydiffthreshold":30,
- //A threshold for judging whether the device is shaking
- "sharpnessthreshold":0.2,
- //A threshold for judging whether the device is shaking violently
- "sharpnessthresholdlarge":0.4,
- //A threshold value for calculating sharpness
- "absgraythreshold":35,
- //A threshold value for controlling auto zoom
- "conversioncountthreshold":30,
- //A threshold value that controlling auto focus
- "claritythreshold":0.1
-}
-```
-
-## getVersion
-
-Users can check the current DCE version by using this API.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-`NSString`: The version number.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getVersion];
-```
-2.
-```swift
-dce.getVersion()
-```
-
-## getCameraCurrentState
-
-Get the current status (on/off) of the camera.
-
-```objc
-- (CameraState)getCameraCurrentState NS_SWIFT_NAME(getCameraCurrentState());
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraCurrentState];
-```
-2.
-```swift
-dce.getCameraCurrentState()
-```
-
-## getCameraDesiredState
-
-Get the desired status (on/off)of the camera.
-
-```objc
-- (CameraState)getCameraDesiredState NS_SWIFT_NAME(getCameraDesiredState());
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraDesiredState];
-```
-2.
-```swift
-dce.getCameraDesiredState()
-```
-
-## setCameraDesiredState
-
-Set the camera state.
-
-```objc
-- (void)setCameraDesiredState:(CameraState)state;
-```
-
-**Parameters**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setCameraDesiredState:CAMERA_STATE_ON];
-```
-2.
-```swift
-dce.setCameraDesiredState(CAMERA_STATE_ON)
-```
-
-## pauseCamera and resumeCamera
-
-Note: these APIs are created for pausing & resuming the camera but the camera module is still working when paused. if you want to shut down camera module please use `stopScanning`.
-
-```objc
-- (void)resumeCamera NS_SWIFT_NAME(resumeCamera());
-- (void)pauseCamera NS_SWIFT_NAME(pauseCamera());
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce pauseCamera];
-[dce resumeCamera];
-```
-2.
-```swift
-dce.pauseCamera()
-dce.resumeCamera()
-```
-
-## stopScanning and startScanning
-
-Control the stopping & starting of the camera module.
-
-```objc
-- (void)startScanning;
-- (void)stopScanning;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce startScanning];
-[dce stopScanning];
-```
-2.
-```swift
-dce.startScanning()
-dce.stopScanning()
-```
-
-## addCameraListener
-
-Add Camera Listener
-
-```objc
-- (void)addCameraListener:(id)listener NS_SWIFT_NAME(addCameraListener(_:));
-```
-
-**Parameters**
-
-`Listener`: The camera listener.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce addCameraListener:self];
-```
-2.
-```swift
-dce.addCameraListener(self)
-```
-
-## getTorchCurrentState
-
-Get the current torch state.
-
-```objc
-- (TorchState)getTorchCurrentState;
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getTorchCurrentState];
-```
-2.
-```swift
-dce.getTorchCurrentState()
-```
-
-## getTorchDesiredState
-
-Get desired torch state (on/off)
-
-```objc
-- (TorchState)getTorchDesiredState;
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getTorchDesiredState];
-```
-2.
-```swift
-dce.getTorchDesiredState()
-```
-
-## setTorchDesiredState
-
-Set the torch on/off.
-
-```objc
-- (void)setTorchDesiredState:(TorchState)state NS_SWIFT_NAME(setTorchDesiredState(_:));
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setTorchDesiredState:TorchState.on];
-```
-2.
-```swift
-dce.setTorchDesiredState(TorchState.on)
-```
-
-## addTorchListener
-
-Add the torch listener.
-
-```objc
-- (void)addTorchListener:(id)listener NS_SWIFT_NAME(addTorchListener(_:));
-```
-
-**Parameters**
-
-`Listener`: The torch listener.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce addTorchListener:self];
-```
-2.
-```swift
-dce.addTorchListener(self)
-```
-
-## getCameraPosition
-
-Get the camera position. DCE will use the back camera as default.
-
-```objc
-- (CameraPosition)getCameraPosition;
-```
-
-**Return Value**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraPosition];
-```
-2.
-```swift
-dce.getCameraPosition()
-```
-
-## switchCameraPosition
-
-Change the camera (front/back).
-
-```objc
-- (void)switchCameraPosition;
-```
-
-**Parameters**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce switchCameraPosition];
-```
-2.
-```swift
-dce.switchCameraPosition()
-```
-
-## getResolution
-
-Get the current resolution setting.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-`NSString`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getResolution];
-```
-2.
-```swift
-dce.getResolution()
-```
-
-## setResolution
-
-Set the resolution.
-
-```objc
-- (void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`Resolution`: Input one of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value to set the resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setResolution:RESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-**Remarks**
-
-If the pre-set resolution is unavailable for the current device, the SDK will select the highest available resolution below the pre-set value.
diff --git a/programming-old/ios/primary-api/camera.md b/programming-old/ios/primary-api/camera.md
deleted file mode 100644
index 5e307cb7..00000000
--- a/programming-old/ios/primary-api/camera.md
+++ /dev/null
@@ -1,527 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Regular Camera Methods - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Regular Camera Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift API references, Regular Camera Methods
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Regular Camera Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/camera.html
----
-
-# iOS API Reference - Regular Camera Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-|-----------------|---------------|
-| [`updateCameraSettingFromJson`](#updatecamerasettingfromjson) | Update camera filter and focus settings from Json |
-| [`updateCameraSettingFromFile`](#updatecamerasettingfromfile) | Update camera filter and focus settings from file |
-| [`getVersion`](#getversion) | Check current DCE version |
-| [`getCameraCurrentState`](#getcameracurrentstate) | Get camera current state |
-| [`getCameraDesiredState`](#getcameradesiredstate) | Get camera desired state |
-| [`setCameraDesiredState`](#setcameradesiredstate) | Set Camera on/off |
-| [`pauseCamera`](#pausecamera-and-resumecamera) | Pause Camera |
-| [`resumeCamera`](#pausecamera-and-resumecamera) | Resume Camera |
-| [`startScanning`](#stopscanning-and-startscanning) | Start scanning |
-| [`stopScanning`](#stopscanning-and-startscanning) | Stop scanning |
-| [`addCameraListener`](#addcameralistener) | Add camera listener (on preview original, filtered or fast frames) |
-| [`getTorchCurrentState`](#gettorchcurrentstate) | Get torch current state |
-| [`getTorchDesiredState`](#gettorchdesiredstate) | Get torch desired state |
-| [`setTorchDesiredState`](#settorchdesiredstate) | Set torch state |
-| [`addTorchListener`](#addtorchlistener) | Add torch listener |
-| [`getCameraPosition`](#getcameraposition) | Get current camera position |
-| [`switchCameraPosition`](#switchcameraposition) | Switch camera position front/back |
-| [`getResolution`](#getresolution) | Get current resolution setting |
-| [`setResolution`](#setresolution) | Set resolution |
-
----
-
-## updateCameraSettingFromJson
-
-There are Some detailed settings that can be updated from JSON string or file. [View JSON data template and explanation](#updatecamerasettingfromfile)
-
-```objc
-- (void)updateCameraSettingFromJson:(NSString*)params;
-```
-
-**Parameters**
-
-The camera setting JSON Strings.
-
-**Code Snippet**
-
-To update from JSON string:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce updateCameraSettingFromJson:@"json string"];
-```
-2.
-```swift
-dce.updateCameraSetting(fromJson: "Your json string")
-```
-
-## updateCameraSettingFromFile
-
-There are some detailed settings that can be updated from JSON string or file.
-
-```objc
-- (void)updateCameraSettingFromFile:(NSString*)filePath;
-```
-
-**Parameters**
-
-The camera setting JSON Strings.
-
-**Code Snippet**
-
-To update from JSON file:
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce updateCameraSettingFromFile:@"your json file path"];
-```
-2.
-```swift
-dce.updateCameraSettingFromFile(fromFile: "Your file path")
-```
-
-This is the template for `updateCameraSettingFromJson` and `updateCameraSettingFromFile`:
-
-```Json
-{
- //Absolute sharpness value, A threshold value for controlling filter
- "abssharpnessthreshold":200,
- //Sensor value, A threshold value for controlling filter
- "sensorvalue":3,
- //A threshold value for gray scale analysis
- "graydiffthreshold":30,
- //A threshold for judging whether the device is shaking
- "sharpnessthreshold":0.2,
- //A threshold for judging whether the device is shaking violently
- "sharpnessthresholdlarge":0.4,
- //A threshold value for calculating sharpness
- "absgraythreshold":35,
- //A threshold value for controlling auto zoom
- "conversioncountthreshold":30,
- //A threshold value that controlling auto focus
- "claritythreshold":0.1
-}
-```
-
-## getVersion
-
-Users can check the current DCE version by using this API.
-
-```objc
-- (NSString*)getVersion;
-```
-
-**Return Value**
-
-`NSString`: The version number.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getVersion];
-```
-2.
-```swift
-dce.getVersion()
-```
-
-## getCameraCurrentState
-
-Get the current status (on/off) of the camera.
-
-```objc
-- (CameraState)getCameraCurrentState NS_SWIFT_NAME(getCameraCurrentState());
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraCurrentState];
-```
-2.
-```swift
-dce.getCameraCurrentState()
-```
-
-## getCameraDesiredState
-
-Get the desired status (on/off)of the camera.
-
-```objc
-- (CameraState)getCameraDesiredState NS_SWIFT_NAME(getCameraDesiredState());
-```
-
-**Return Value**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraDesiredState];
-```
-2.
-```swift
-dce.getCameraDesiredState()
-```
-
-## setCameraDesiredState
-
-Set the camera state.
-
-```objc
-- (void)setCameraDesiredState:(CameraState)state;
-```
-
-**Parameters**
-
-`CameraState`: An argument that stands for the camera state. One of the [`CameraState`]({{site.parameter-reference}}index.html#camerastate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setCameraDesiredState:CAMERA_STATE_ON];
-```
-2.
-```swift
-dce.setCameraDesiredState(CAMERA_STATE_ON)
-```
-
-## pauseCamera and resumeCamera
-
-Note: these APIs are created for pausing & resuming the camera but the camera module is still working when paused. if you want to shut down camera module please use `stopScanning`.
-
-```objc
-- (void)resumeCamera NS_SWIFT_NAME(resumeCamera());
-- (void)pauseCamera NS_SWIFT_NAME(pauseCamera());
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce pauseCamera];
-[dce resumeCamera];
-```
-2.
-```swift
-dce.pauseCamera()
-dce.resumeCamera()
-```
-
-## stopScanning and startScanning
-
-Control the stopping & starting of the camera module.
-
-```objc
-- (void)startScanning;
-- (void)stopScanning;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce startScanning];
-[dce stopScanning];
-```
-2.
-```swift
-dce.startScanning()
-dce.stopScanning()
-```
-
-## addCameraListener
-
-Add Camera Listener
-
-```objc
-- (void)addCameraListener:(id)listener NS_SWIFT_NAME(addCameraListener(_:));
-```
-
-**Parameters**
-
-`Listener`: The camera listener.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce addCameraListener:self];
-```
-2.
-```swift
-dce.addCameraListener(self)
-```
-
-## getTorchCurrentState
-
-Get the current torch state.
-
-```objc
-- (TorchState)getTorchCurrentState;
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getTorchCurrentState];
-```
-2.
-```swift
-dce.getTorchCurrentState()
-```
-
-## getTorchDesiredState
-
-Get desired torch state (on/off)
-
-```objc
-- (TorchState)getTorchDesiredState;
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getTorchDesiredState];
-```
-2.
-```swift
-dce.getTorchDesiredState()
-```
-
-## setTorchDesiredState
-
-Set the torch on/off.
-
-```objc
-- (void)setTorchDesiredState:(TorchState)state NS_SWIFT_NAME(setTorchDesiredState(_:));
-```
-
-**Return Value**
-
-`TorchState`: An argument that stands for the torch state. One of the [`TorchState`]({{site.parameter-reference}}index.html#torchstate) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setTorchDesiredState:TorchState.on];
-```
-2.
-```swift
-dce.setTorchDesiredState(TorchState.on)
-```
-
-## addTorchListener
-
-Add the torch listener.
-
-```objc
-- (void)addTorchListener:(id)listener NS_SWIFT_NAME(addTorchListener(_:));
-```
-
-**Parameters**
-
-`Listener`: The torch listener.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce addTorchListener:self];
-```
-2.
-```swift
-dce.addTorchListener(self)
-```
-
-## getCameraPosition
-
-Get the camera position. DCE will use the back camera as default.
-
-```objc
-- (CameraPosition)getCameraPosition;
-```
-
-**Return Value**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getCameraPosition];
-```
-2.
-```swift
-dce.getCameraPosition()
-```
-
-## switchCameraPosition
-
-Change the camera (front/back).
-
-```objc
-- (void)switchCameraPosition;
-```
-
-**Parameters**
-
-`CameraPosition`: An argument that stands for which camera is selected. One of the [`CameraPosition`]({{site.parameter-reference}}index.html#cameraposition) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce switchCameraPosition];
-```
-2.
-```swift
-dce.switchCameraPosition()
-```
-
-## getResolution
-
-Get the current resolution setting.
-
-```objc
-- (NSString*)getResolution;
-```
-
-**Return Value**
-
-`NSString`: One of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce getResolution];
-```
-2.
-```swift
-dce.getResolution()
-```
-
-## setResolution
-
-Set the resolution.
-
-```objc
-- (void)setResolution:(Resolution)resolution;
-```
-
-**Parameters**
-
-`Resolution`: Input one of the [`Resolution`]({{site.parameter-reference}}index.html#resolution) value to set the resolution.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setResolution:RESOLUTION_1080P];
-```
-2.
-```swift
-dce.setResolution(EnumResolution.EnumRESOLUTION_1080P)
-```
-
-**Remarks**
-
-If the pre-set resolution is unavailable for the current device, the SDK will select the highest available resolution below the pre-set value.
diff --git a/programming-old/ios/primary-api/initialization-v1.0.3.md b/programming-old/ios/primary-api/initialization-v1.0.3.md
deleted file mode 100644
index c8160ad4..00000000
--- a/programming-old/ios/primary-api/initialization-v1.0.3.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: default-layout
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/initialization-v1.0.3.html
----
-
-# Initialization Methods
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`](#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
----
-
-## initLicenseFromDLS
-
-Initialize the Camera Enhancer with a license.
-
-```objc
-- (instancetype)initLicenseFromDLS:(iDCEDLSConnectionParameters*)parameters
- view:(DCECaptureView *)view
- verificationDelegate:(id)connectionDelegate;
-```
-
-**Parameters**
-
-`iDCEDLSConnectionParameters`: The class [`DMDLSConnectionParameters`]({{site.android-api-auxiliary}}dlsconnection.html) parameters.
-`view`: The [`DCECaptureView`]({{ site.ios-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_decView = [DCECaptureView cameraWithFrame:self.view.bounds];
-iDCEDLSConnectionParameters* dls = [[iDCEDLSConnectionParameters alloc] init];
-dls.organizationID = @"200001";
-_dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromDLS:dls view:_dceView verificationDelegate:self];
-```
-2.
-```swift
-dceView = DCECaptureView.init(view: self.view.bounds)
-let dls = iDCEDLSConnectionParameters()
-dls.organizationID = "200001"
-dce = DynamsoftCameraEnhancer.init(licenseFromDLS: dls, view: dceView, verificationDelegate: self)
-```
diff --git a/programming-old/ios/primary-api/initialization.md b/programming-old/ios/primary-api/initialization.md
deleted file mode 100644
index 2d6f6447..00000000
--- a/programming-old/ios/primary-api/initialization.md
+++ /dev/null
@@ -1,58 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: CameraEnhancer Class - Dynamsoft Camera Enhancer iOS API references
-description: This is the documentation - iOS API references - CameraEnhancer Class page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS API references, CameraEnhancer Class
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS CameraEnhancer Class
-permalink: /programming/ios/primary-api/initialization.html
----
-
-# Initialization Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-| ------ | ----------- |
-| [`initLicenseFromDLS`](#initLicensefromdls) | Initialize the Camera Enhancer from the license server with a license. |
-
----
-
-## initLicenseFromDLS
-
-Initialize the Camera Enhancer with a license.
-
-```objc
-- (instancetype)initLicenseFromDLS:(iDCEDLSConnectionParameters*)parameters
- view:(DCECaptureView *)view
- verificationDelegate:(id)connectionDelegate;
-```
-
-**Parameters**
-
-`iDCEDLSConnectionParameters`: The class [`DMDLSConnectionParameters`]({{site.android-api-auxiliary}}dlsconnection.html) parameters.
-`view`: The [`DCECaptureView`]({{ site.ios-api-auxiliary }}dcecameraview.html).
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-_decView = [DCECaptureView cameraWithFrame:self.view.bounds];
-iDCEDLSConnectionParameters* dls = [[iDCEDLSConnectionParameters alloc] init];
-dls.organizationID = @"200001";
-_dce = [[DynamsoftCameraEnhancer alloc] initLicenseFromDLS:dls view:_dceView verificationDelegate:self];
-```
-2.
-```swift
-dceView = DCECaptureView.init(view: self.view.bounds)
-let dls = iDCEDLSConnectionParameters()
-dls.organizationID = "200001"
-dce = DynamsoftCameraEnhancer.init(licenseFromDLS: dls, view: dceView, verificationDelegate: self)
-```
diff --git a/programming-old/ios/primary-api/preprocess-v1.0.3.md b/programming-old/ios/primary-api/preprocess-v1.0.3.md
deleted file mode 100644
index d234363f..00000000
--- a/programming-old/ios/primary-api/preprocess-v1.0.3.md
+++ /dev/null
@@ -1,190 +0,0 @@
----
-layout: default-layout
-title: Frame Preprocessing Methods - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Frame Preprocessing Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift, API references, Frame Preprocessing Methods
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Frame Preprocessing Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/preprocess-v1.0.3.html
----
-
-# iOS API Reference - Frame Preprocessing Methods
-
-| Method | Description |
-|-----------------|---------------|
-| [`acquireListFrame`](#acquirelistframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`](#enablefastmode) | Set the value true/false to turn on/off DCE fast mode |
-| [`enableSensorControl`](#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`setSensorControlThreshold`](#setsensorcontrolthreshold) | Make settings on sensor control threshold |
-| [`enableFrameFilter`](#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`setMaxFrameRate`](#setmaxframerate) | Set max frame rate |
-
----
-
-## AcquireListFrame
-
-This API is designed for users to acquire a single frame. When this API is activated, it will fetch the latest frame from the DCE frame queue.
-
-```objc
-- (FramePackage*)AcquireListFrame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-FramePackage *fg = [self.camera AcquireListFrame];
-```
-2.
-```swift
-let fg = self.dce.acquireListFrame()
-```
-
-## enableFastMode
-
-This API is designed for users to setup DCE fast mode. DCE fast mode will cut frames into small images that contains barcode areas to improve decode efficiency. It is recommended to be enabled when decoding a single barcode.
-
-```objc
-@property (nonatomic, assign) BOOL enableFastMode;
-```
-
-**Parameters**
-
-`true`: enable the fast mode.
-`false`: disable the fast mode.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableFastMode:true];
-//To check the status of DCE fast mode
-[dce getEnableFastMode];
-```
-2.
-```swift
-dce.enableFastMode = true
-```
-
-## enableSensorControl
-
-Turn on (off) sensor control
-
-```objc
-@property (nonatomic, assign) BOOL enableSensorControl;
-```
-
-**Parameters**
-
-`true`: enable the sensor filter.
-`false`: disable the sensor filter.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableSensorControl:true];
-//To check the status of the DCE sensor control
-BOOL res= [dce enableSensorControl];
-```
-2.
-```swift
-dce.enableSensorControl(true)
-//To check the status of the DCE sensor control
-let res = dce.enableSensorControl
-```
-
-## setSensorControlThreshold
-
-This API is designed for developers to apply different sensor sensitivity settings on different devices. The default value is 50.
-
-```objc
-- (void)setSensorControlThreshold:(double)sensor NS_SWIFT_NAME(setSensorControlThreshold(_:));
-```
-
-**Parameters**
-
-`int`: A int value that stands for the sensor filter threshold.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setSensorControlThreshold:55];
-```
-2.
-```swift
-dce.setSensorControlThreshold(55)
-```
-
-## enableFrameFilter
-
-Turn on(off) DCE filter (recommended to be true).
-
-**Parameters**
-
-`true`: enable the frame sharpness filter.
-`false`: disable the frame sharpness filter.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableFrameFilter:true];
-//To check the status of the DCE frame filter
-BOOL res= [dce enableFrameFilter];
-```
-2.
-```swift
-dce.enableFrameFilter(true)
-//To check the status of the DCE frame filter
-let res = dce.enableFrameFilter
-```
-
-## setMaxFrameRate
-
-Set max frame rate.
-
-```objc
-- (void)setMaxFrameRate:(int)maxFrameRate NS_SWIFT_NAME(setMaxFrameRate(_:));
-```
-
-**Parameters**
-
-`int`: A int value that stands for the max frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setMaxFrameRate:24];
-```
-2.
-```swift
-dce.setMaxFrameRate(24)
-```
diff --git a/programming-old/ios/primary-api/preprocess.md b/programming-old/ios/primary-api/preprocess.md
deleted file mode 100644
index a949d508..00000000
--- a/programming-old/ios/primary-api/preprocess.md
+++ /dev/null
@@ -1,193 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Frame Preprocessing Methods - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Frame Preprocessing Methods page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift, API references, Frame Preprocessing Methods
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Frame Preprocessing Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/preprocess.html
----
-
-# iOS API Reference - Frame Preprocessing Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-|-----------------|---------------|
-| [`acquireListFrame`](#acquirelistframe) | Get the latest frame from the frame queue when this API is activated. |
-| [`enableFastMode`](#enablefastmode) | Set the value true/false to turn on/off DCE fast mode |
-| [`enableSensorControl`](#enablesensorcontrol) | Set true/false to turn on/off DCE sensor control. |
-| [`setSensorControlThreshold`](#setsensorcontrolthreshold) | Make settings on sensor control threshold |
-| [`enableFrameFilter`](#enableframefilter) | Set true/false to turn on/off DCE frame filter. |
-| [`setMaxFrameRate`](#setmaxframerate) | Set max frame rate |
-
----
-
-## AcquireListFrame
-
-This API is designed for users to acquire a single frame. When this API is activated, it will fetch the latest frame from the DCE frame queue.
-
-```objc
-- (FramePackage*)AcquireListFrame;
-```
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-FramePackage *fg = [self.camera AcquireListFrame];
-```
-2.
-```swift
-let fg = self.dce.acquireListFrame()
-```
-
-## enableFastMode
-
-This API is designed for users to setup DCE fast mode. DCE fast mode will cut frames into small images that contains barcode areas to improve decode efficiency. It is recommended to be enabled when decoding a single barcode.
-
-```objc
-@property (nonatomic, assign) BOOL enableFastMode;
-```
-
-**Parameters**
-
-`true`: enable the fast mode.
-`false`: disable the fast mode.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableFastMode:true];
-//To check the status of DCE fast mode
-[dce getEnableFastMode];
-```
-2.
-```swift
-dce.enableFastMode = true
-```
-
-## enableSensorControl
-
-Turn on (off) sensor control
-
-```objc
-@property (nonatomic, assign) BOOL enableSensorControl;
-```
-
-**Parameters**
-
-`true`: enable the sensor filter.
-`false`: disable the sensor filter.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableSensorControl:true];
-//To check the status of the DCE sensor control
-BOOL res= [dce enableSensorControl];
-```
-2.
-```swift
-dce.enableSensorControl(true)
-//To check the status of the DCE sensor control
-let res = dce.enableSensorControl
-```
-
-## setSensorControlThreshold
-
-This API is designed for developers to apply different sensor sensitivity settings on different devices. The default value is 50.
-
-```objc
-- (void)setSensorControlThreshold:(double)sensor NS_SWIFT_NAME(setSensorControlThreshold(_:));
-```
-
-**Parameters**
-
-`int`: A int value that stands for the sensor filter threshold.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setSensorControlThreshold:55];
-```
-2.
-```swift
-dce.setSensorControlThreshold(55)
-```
-
-## enableFrameFilter
-
-Turn on(off) DCE filter (recommended to be true).
-
-**Parameters**
-
-`true`: enable the frame sharpness filter.
-`false`: disable the frame sharpness filter.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableFrameFilter:true];
-//To check the status of the DCE frame filter
-BOOL res= [dce enableFrameFilter];
-```
-2.
-```swift
-dce.enableFrameFilter(true)
-//To check the status of the DCE frame filter
-let res = dce.enableFrameFilter
-```
-
-## setMaxFrameRate
-
-Set max frame rate.
-
-```objc
-- (void)setMaxFrameRate:(int)maxFrameRate NS_SWIFT_NAME(setMaxFrameRate(_:));
-```
-
-**Parameters**
-
-`int`: A int value that stands for the max frame rate.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setMaxFrameRate:24];
-```
-2.
-```swift
-dce.setMaxFrameRate(24)
-```
diff --git a/programming-old/ios/primary-api/zoom-focus-v1.0.3.md b/programming-old/ios/primary-api/zoom-focus-v1.0.3.md
deleted file mode 100644
index b760e5f0..00000000
--- a/programming-old/ios/primary-api/zoom-focus-v1.0.3.md
+++ /dev/null
@@ -1,321 +0,0 @@
----
-layout: default-layout
-title: Focus & Zoom Setting - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Focus & Zoom Setting page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift API references, Zoom, Focus
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Focus & Zoom Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/zoom-focus-v1.0.3.html
----
-
-# iOS API Reference - Focus & Zoom Methods
-
-| Method | Description |
-|-----------------|---------------|
-| [`setAutoFocusPosition`](#setautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`](#setmanualfocusposition) | Set manual focus position (This focus position only takes effect once for each time the API is called). |
-| [`setFocalLength`](#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`](#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`enableDefaultAutoFocus`](#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`enableRegularAutoFocus`](#enableregularautofocus) | If this is true, camera will auto focus for every 3 seconds. |
-| [`setRegularAutoFocusParam`](#setregularautofocusparam) | Set the focus interval and termination time for the regular autofocus. |
-| [`enableAutoFocusOnSharpnessChange`](#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. |
-| [`enableAutoZoom`](#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`setZoomFactor`](#setzoomfactor) | Set zoom factor |
-
----
-
-## setDefaultAutoFocusPosition
-
-Set the position you want to auto focus at. This setting will replace the default focus value and always focus on the set point.
-
-```objc
-- (void)setDefaultAutoFocusPosition:(CGPoint)point NS_SWIFT_NAME(setDefaultAutoFocusPosition(_:));
-```
-
-**Parameters**
-
-`float`: A float value that stands for the X coordinate of the focus position.
-`float`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setAutoFocusPosition:CGPointMake(0.5, 0.5)];
-```
-2.
-```swift
-dce.setAutoFocusPosition(CGPoint(x: 0.5, y: 0.5))
-```
-
-## setManualFocusPosition
-
-Set the position you want to manually focus at. This focus position only takes effect once each time this code is called.
-
-```objc
-- (void)setManualFocusPosition:(CGPoint)point NS_SWIFT_NAME(setManualFocusPosition(_:));
-```
-
-**Parameters**
-
-`float`: A float value that stands for the X coordinate of the focus position.
-`float`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setManualFocusPosition:CGPointMake(0.5, 0.5)];
-```
-2.
-```swift
-dce.setManualFocusPosition(CGPoint(x: 0.5, y: 0.5))
-```
-
-## setFocalLength
-
-Set focal length (float). The range of focal length is from 0 to 1. The value is a precentage. If user sets `setFocalLength(0.5);` it means the focal length will be 50% of the maxium focal length of the camera. Please note, If this API is called to set a focal length, the focal length will be fixed and all other auto focus mode will be disabled. To quit this fixed focal length mode, please set the focal length into -1.
-
-```objc
-- (void)setFocalLength:(float)len NS_SWIFT_NAME(setFocalLength(_:));
-```
-
-**Parameters**
-
-`float`: A float value between 0 to 10 that stands for the focal length. You can input -1 to quit the fixed focal length mode.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setFocalLength:0.8];
-```
-2.
-```swift
-dce.setFocalLength = 0.8
-```
-
-## enableDCEAutoFocus
-
-This API is designed to turn on DCE autofocus mode which is specially designed and is separate from the systems default autofocus mode. DCE autofocus and the default autofocus can work together at the same time without any conflict. The above focus settings are also available for controlling system default autofocus. To turn on DCE autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableDCEAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the DCE autofocus.
-`false`: Disable the DCE autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableDCEAutoFocus:true];
-//To check the status of DCE autofocus.
-bool res = [dce enableDCEAutoFocus];
-```
-2.
-```swift
-dce.enableDCEAutoFocus = true
-//To check the status of DCE autofocus.
-let res = dce.enableDCEAutoFocus
-```
-
-## enableDefaultAutoFocus
-
-This API is designed for controlling the system default autofocus. To turn off default autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableDefaultAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the default autofocus.
-`false`: Disable the default autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableDefaultAutoFocus:false];
-//To check the status of system default autofocus.
-bool res = [dce enableDefaultAutoFocus];
-```
-2.
-```swift
-dce.enableDefaultAutoFocus = false
-//To check the status of system default autofocus.
-let res = dce.enableDefaultAutoFocus
-```
-
-## enableRegularAutoFocus
-
-Regular autofocus is an advanced setting that enables the camera to autofocus for every 3 seconds. It is contained in DCE autofocus. When DCE autofocus is enabled, regular autofocus is enabled as well. To turn off regular autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableRegularAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the regular autofocus.
-`false`: Disable the regular autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableRegularAutoFocus:false];
-//To check the status of DCE autofocus.
-bool res = [dce enableRegularAutoFocus];
-```
-2.
-```swift
-dce.enableRegularAutoFocus = false
-//To check the status of DCE regular autofocus.
-let res = dce.enableRegularAutoFocus
-```
-
-## setRegularAutoFocusParam
-
-Set the focus interval and termination time for the regular autofocus.
-
-```objc
-- (void)setRegularAutoFocusParam:(int)focusTimems terminateFocusByTime:(int)terminateFocusByTime NS_SWIFT_NAME(setRegularAutoFocusParam(_:terminateFocusByTime:));
-```
-
-**Parameters**
-
-`int`: Default value is 3000 (millisecond), which means the camera will auto focus for every 3000 milliseconds.
-`int`: Default value is 500 (millisecond), which means the camera will not focus once again within 500 milliseconds.
-
-**Code Snippet**
-
-```objc
-//The camera will autofocus for every 3s. It won't focus for a second time within 500ms.
-[_dce setRegularAutoFocusParam:3000 terminateFocusByTime:500];
-```
-2.
-```swift
-dce.setRegularAutoFocusParam(3000, terminateFocusByTime: 500)
-```
-
-## enableAutoFocusOnSharpnessChange
-
-This API is another advanced setting that enables the camera to autofocus when a change in sharpness is detected between contiguous frames. The same happens with regular autofocus, this focus mode is also enabled by default when DCE auto focus is enabled. To turn off camera autofocus when sharpness changes:
-
-```objc
-@property (nonatomic, assign) BOOL enableAutoFocusOnSharpnessChange;
-```
-
-**Parameters**
-
-`true`: Enable the sharpness autofocus.
-`false`: Disable the sharpness autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableAutoFocusOnSharpnessChange:false];
-//To check the status of DCE sharpness focus.
-bool res = [dce enableAutoFocusOnSharpnessChange];
-```
-2.
-```swift
-dce.enableAutoFocusOnSharpnessChange = false
-//To check the status of DCE sharpness focus.
-let res = dce.enableAutoFocusOnSharpnessChange
-```
-
-## enableAutoZoom
-
-DCE auto zoom mode can be enabled if user is using DCE to enhance decode performance. The auto zoom mode is based on decode region predicted algorithm. In DCE auto zoom mode, If the lastest decoded frame is predicted to contain a barcode but failing to decode, DCE will control the camera to zoom in to approach the barcode region. To enable auto zoom mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableAutoZoom;
-```
-
-**Parameters**
-
-`true`: Enable the autozoom.
-`false`: Disable the autozoom.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableAutoZoom:true];
-//To check the status of DCE autozoom.
-bool res = [dce enableAutoZoom];
-```
-2.
-```swift
-dce.enableAutoZoom = true
-//To check the status of DCE autozoom.
-let res = dce.enableAutoZoom
-```
-
-## setZoomFactor
-
-To set the zoom factor (float).
-
-```objc
-- (void)setZoomFactor:(CGFloat)zoomFactor;
-```
-
-**Parameters**
-
-`float`: A float value that stands for the zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setZoomFactor:1.5];
-```
-2.
-```swift
-dce.setZoomFactor = 1.5
-```
diff --git a/programming-old/ios/primary-api/zoom-focus.md b/programming-old/ios/primary-api/zoom-focus.md
deleted file mode 100644
index 477db0a2..00000000
--- a/programming-old/ios/primary-api/zoom-focus.md
+++ /dev/null
@@ -1,324 +0,0 @@
----
-layout: default-layout
-ignore: true
-title: Focus & Zoom Setting - Dynamsoft Camera Enhancer - Objective-C & Swift API references
-description: This is the documentation - Objective-C & Swift API references - Focus & Zoom Setting page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Objective-C & Swift API references, Zoom, Focus
-needAutoGenerateSidebar: true
-breadcrumbText: iOS Focus & Zoom Methods
-noTitleIndex: true
-permalink: /programming/ios/primary-api/zoom-focus.html
----
-
-# iOS API Reference - Focus & Zoom Methods
-
-> You are viewing a history document page of DCE v1.0.3.
-
-| Method | Description |
-|-----------------|---------------|
-| [`setDefaultAutoFocusPosition`](#setdefaultautofocusposition) | Set auto focus position (Change the default auto focus position). |
-| [`setManualFocusPosition`](#setmanualfocusposition) | Set manual focus position (This focus position only takes effect once for each time the API is called). |
-| [`setFocalLength`](#setfocallength) | Set focal length between 0 to 10 to enable fixed focal length mode. In fixed focal length mode, all focus parameters can't be changed until this mode is quit. To quit fixed focal length mode, please set focal length equals to -1. |
-| [`enableDCEAutoFocus`](#enabledceautofocus) | Set true/false to turn on/off DCE auto focus. |
-| [`enableDefaultAutoFocus`](#enabledefaultautofocus) | Set true/false to turn on/off default auto focus. |
-| [`enableRegularAutoFocus`](#enableregularautofocus) | If this is true, camera will auto focus for every 3 seconds. |
-| [`setRegularAutoFocusParam`](#setregularautofocusparam) | Set the focus interval and termination time for the regular autofocus. |
-| [`enableAutoFocusOnSharpnessChange`](#enableautofocusonsharpnesschange) | If this is enabled, camera will autofocus when clarity change is detected. |
-| [`enableAutoZoom`](#enableautozoom) | Set enableAutoZoom value true to enable auto zoom mode. |
-| [`setZoomFactor`](#setzoomfactor) | Set zoom factor |
-
----
-
-## setDefaultAutoFocusPosition
-
-Set the position you want to auto focus at. This setting will replace the default focus value and always focus on the set point.
-
-```objc
-- (void)setDefaultAutoFocusPosition:(CGPoint)point NS_SWIFT_NAME(setDefaultAutoFocusPosition(_:));
-```
-
-**Parameters**
-
-`float`: A float value that stands for the X coordinate of the focus position.
-`float`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setAutoFocusPosition:CGPointMake(0.5, 0.5)];
-```
-2.
-```swift
-dce.setAutoFocusPosition(CGPoint(x: 0.5, y: 0.5))
-```
-
-## setManualFocusPosition
-
-Set the position you want to manually focus at. This focus position only takes effect once each time this code is called.
-
-```objc
-- (void)setManualFocusPosition:(CGPoint)point NS_SWIFT_NAME(setManualFocusPosition(_:));
-```
-
-**Parameters**
-
-`float`: A float value that stands for the X coordinate of the focus position.
-`float`: A float value that stands for the Y coordinate of the focus position.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setManualFocusPosition:CGPointMake(0.5, 0.5)];
-```
-2.
-```swift
-dce.setManualFocusPosition(CGPoint(x: 0.5, y: 0.5))
-```
-
-## setFocalLength
-
-Set focal length (float). The range of focal length is from 0 to 1. The value is a precentage. If user sets `setFocalLength(0.5);` it means the focal length will be 50% of the maxium focal length of the camera. Please note, If this API is called to set a focal length, the focal length will be fixed and all other auto focus mode will be disabled. To quit this fixed focal length mode, please set the focal length into -1.
-
-```objc
-- (void)setFocalLength:(float)len NS_SWIFT_NAME(setFocalLength(_:));
-```
-
-**Parameters**
-
-`float`: A float value between 0 to 10 that stands for the focal length. You can input -1 to quit the fixed focal length mode.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setFocalLength:0.8];
-```
-2.
-```swift
-dce.setFocalLength = 0.8
-```
-
-## enableDCEAutoFocus
-
-This API is designed to turn on DCE autofocus mode which is specially designed and is separate from the systems default autofocus mode. DCE autofocus and the default autofocus can work together at the same time without any conflict. The above focus settings are also available for controlling system default autofocus. To turn on DCE autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableDCEAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the DCE autofocus.
-`false`: Disable the DCE autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableDCEAutoFocus:true];
-//To check the status of DCE autofocus.
-bool res = [dce enableDCEAutoFocus];
-```
-2.
-```swift
-dce.enableDCEAutoFocus = true
-//To check the status of DCE autofocus.
-let res = dce.enableDCEAutoFocus
-```
-
-## enableDefaultAutoFocus
-
-This API is designed for controlling the system default autofocus. To turn off default autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableDefaultAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the default autofocus.
-`false`: Disable the default autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableDefaultAutoFocus:false];
-//To check the status of system default autofocus.
-bool res = [dce enableDefaultAutoFocus];
-```
-2.
-```swift
-dce.enableDefaultAutoFocus = false
-//To check the status of system default autofocus.
-let res = dce.enableDefaultAutoFocus
-```
-
-## enableRegularAutoFocus
-
-Regular autofocus is an advanced setting that enables the camera to autofocus for every 3 seconds. It is contained in DCE autofocus. When DCE autofocus is enabled, regular autofocus is enabled as well. To turn off regular autofocus mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableRegularAutoFocus;
-```
-
-**Parameters**
-
-`true`: Enable the regular autofocus.
-`false`: Disable the regular autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableRegularAutoFocus:false];
-//To check the status of DCE autofocus.
-bool res = [dce enableRegularAutoFocus];
-```
-2.
-```swift
-dce.enableRegularAutoFocus = false
-//To check the status of DCE regular autofocus.
-let res = dce.enableRegularAutoFocus
-```
-
-## setRegularAutoFocusParam
-
-Set the focus interval and termination time for the regular autofocus.
-
-```objc
-- (void)setRegularAutoFocusParam:(int)focusTimems terminateFocusByTime:(int)terminateFocusByTime NS_SWIFT_NAME(setRegularAutoFocusParam(_:terminateFocusByTime:));
-```
-
-**Parameters**
-
-`int`: Default value is 3000 (millisecond), which means the camera will auto focus for every 3000 milliseconds.
-`int`: Default value is 500 (millisecond), which means the camera will not focus once again within 500 milliseconds.
-
-**Code Snippet**
-
-```objc
-//The camera will autofocus for every 3s. It won't focus for a second time within 500ms.
-[_dce setRegularAutoFocusParam:3000 terminateFocusByTime:500];
-```
-2.
-```swift
-dce.setRegularAutoFocusParam(3000, terminateFocusByTime: 500)
-```
-
-## enableAutoFocusOnSharpnessChange
-
-This API is another advanced setting that enables the camera to autofocus when a change in sharpness is detected between contiguous frames. The same happens with regular autofocus, this focus mode is also enabled by default when DCE auto focus is enabled. To turn off camera autofocus when sharpness changes:
-
-```objc
-@property (nonatomic, assign) BOOL enableAutoFocusOnSharpnessChange;
-```
-
-**Parameters**
-
-`true`: Enable the sharpness autofocus.
-`false`: Disable the sharpness autofocus.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableAutoFocusOnSharpnessChange:false];
-//To check the status of DCE sharpness focus.
-bool res = [dce enableAutoFocusOnSharpnessChange];
-```
-2.
-```swift
-dce.enableAutoFocusOnSharpnessChange = false
-//To check the status of DCE sharpness focus.
-let res = dce.enableAutoFocusOnSharpnessChange
-```
-
-## enableAutoZoom
-
-DCE auto zoom mode can be enabled if user is using DCE to enhance decode performance. The auto zoom mode is based on decode region predicted algorithm. In DCE auto zoom mode, If the lastest decoded frame is predicted to contain a barcode but failing to decode, DCE will control the camera to zoom in to approach the barcode region. To enable auto zoom mode:
-
-```objc
-@property (nonatomic, assign) BOOL enableAutoZoom;
-```
-
-**Parameters**
-
-`true`: Enable the autozoom.
-`false`: Disable the autozoom.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce enableAutoZoom:true];
-//To check the status of DCE autozoom.
-bool res = [dce enableAutoZoom];
-```
-2.
-```swift
-dce.enableAutoZoom = true
-//To check the status of DCE autozoom.
-let res = dce.enableAutoZoom
-```
-
-## setZoomFactor
-
-To set the zoom factor (float).
-
-```objc
-- (void)setZoomFactor:(CGFloat)zoomFactor;
-```
-
-**Parameters**
-
-`float`: A float value that stands for the zoom factor.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[dce setZoomFactor:1.5];
-```
-2.
-```swift
-dce.setZoomFactor = 1.5
-```
diff --git a/programming-old/ios/release-note/release-notes-1.x.md b/programming-old/ios/release-note/release-notes-1.x.md
deleted file mode 100644
index f30d86b4..00000000
--- a/programming-old/ios/release-note/release-notes-1.x.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: default-layout
-title: iOS Release Note V1.X - Dynamsoft Camera Enhancer
-description: This is the release notes page of Dynamsoft Camera Enhancer iOS edition v1.x.
-keywords: Camera Enhancer, iOS Release Note
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS Release Note
-permalink: /programming/ios/release-note/release-notes-1.x.html
----
-
-# Release Note for iOS
-
-## 1.0.3 (07/20/2021)
-
-### New
-
-- Add Interface `CameraDLSLicenseVerificationListener` and callback `DLSLicenseVerificationCallback` to replace `CameraLTSLicenseVerificationListener` and `LTSLicenseVerificationCallback`.
-- Added class `DCEDLSConnectionParameters` to replace class `DCELTSConnectionParameters`.
-- Added method `initLicenseFromDLS` in `CameraEnhancer` class to replace `initLicenseFromLTS`.
-
-## 1.0.1 (06/10/2021)
-
-### Update
-
-- Class `iDMLTSConnectionParameters` is renamed to [`iDCELTSConnectionParameters`]({{ site.ios-api-auxiliary }}dlsconnection.html)
-
-### New
-
-- Added a new property [`products`]({{ site.ios-api-auxiliary }}dlsconnection.html#products) in class `iDCELTSConnectionParameters`.
-- Added a new enumeration [`EnumProduct`]({{ site.dce-enums }}enum-1.html#enumproduct){:target="_blank"}.
-
-## 1.0.0 (04/29/2021)
-
-- Video frame queue is available.
-- Supports frame cropping mode.
-- Supports regular camera control.
-- Supports autofocus mode.
-- Supports sensor control mode.
-- Supports frame sharpness filter mode.
-- Supports autozoom mode.
diff --git a/programming-old/ios/release-note/release-notes-2.x.md b/programming-old/ios/release-note/release-notes-2.x.md
deleted file mode 100644
index cde2eb50..00000000
--- a/programming-old/ios/release-note/release-notes-2.x.md
+++ /dev/null
@@ -1,201 +0,0 @@
----
-layout: default-layout
-title: iOS 2.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS 2.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS 2.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS 2.x Release Notes
-permalink: /programming/ios/release-note/release-notes-2.x.html
----
-
-# Release Notes - iOS 2.x
-
-## 2.3.21 (03/21/2024)
-
-### Changed
-
-- Removed the support of `Bitcode`.
-
-## 2.3.20 (03/27/2023)
-
-### Fixed
-
-- Fixed a bug that might cause thread blocking on the simulator.
-
-## 2.3.12 (03/16/2023)
-
-### Fixed
-
-- Fixed a display bug when the display orientation is landscape.
-
-## 2.3.11 (01/10/2023)
-
-### Fixed
-
-- Fixed a bug that the **scan region** is not removed from `DCECameraView` when it is canceled.
-
-## 2.3.10 (12/13/2022)
-
-### New
-
-- Override method [`setFocus`](../primary-api/camera-enhancer.html#setfocussubsequentfocusmode) in `CameraEnhancer` class for users to specify the subsequent focus mode after triggering a focus. Enumeration [`EnumFocusMode`]({{ site.dce-enums }}focus-mode.html?lang=objc,swift) is added to specify the focus mode.
-- Added a new method [`setAutoZoomRange`](../primary-api/camera-enhancer.html#setautozoomrange) in `CameraEnhancer` for users to specify a range for the auto-zoom feature of the library.
-- Added a protocol [`DCECameraStateListener`](../auxiliary-api/protocol-dcecamerastatelistener.html) to receive a callback when the camera state changes. You can add the protocol via a new method [`setCameraStateListener`](../primary-api/camera-enhancer.html#setcamerastatelistener).
-- Added a new method [`getVisibleRegionOfVideo`](../auxiliary-api/dcecameraview.html#getvisibleregionofvideo) in `DCECameraView` class
-
-### Fix
-
-- Fixed a bug that might be caused by thread blocking when using an offline license.
-
-### Deprecated
-
-- Deprecated method `pause` and `resume` in `CameraEnhancer` class.
-
-## 2.3.5 (11/15/2022)
-
-### Fixed
-
-- Fixed a bug that `torchButton` was not clickable when it appeared outside `scanRegion`.
-
-## 2.3.4 (11/04/2022)
-
-### Fixed
-
-- Fixed a scan region deviation bug.
-- Fixed an overlay offset bug when `DCECamearView` is smaller than the screen size.
-- Fixed a bug that might cause high CPU occupancy when the camera is opened.
-
-## 2.3.3 (09/22/2022)
-
-### Changed
-
-- The `video buffer` will be cleared when camera is paused or closed.
-
-### Fixed
-
-- Fixed a bug that `scanRegion` is not correctly set when device was rotated horizontally.
-
-## 2.3.2 (08/02/2022)
-
-### New
-
-- Added a property [`cameraView`](../primary-api/camera-enhancer.html#cameraview) for users to bind a `DCECameraView` object to the `DynamsoftCameraEnhancer` object.
-- Added methods [`selectCameraWithPosition`](../primary-api/camera-enhancer.html#selectcamerawithposition) and [`getCameraPosition`](../primary-api/camera-enhancer.html#getcameraposition) for users to switch between the front-facing camera and the back-facing camera.
-- Added enumeration [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=objc,swift).
-
-### Changed
-
-- Changed the rotation control of `DCECameraView` from manual handling to system handling.
-
-## 2.3.1 (07/11/2022)
-
-### Fixed
-
-- Added x86_64 architecture back to the framework which was missing in 2.3.0.
-
-## 2.3.0 (06/28/2022)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.3.0.md -%}
-
-
-
-### Changelog
-
-- Added the following APIs for capturing photos:
- - [`DCEPhotoListener`]({{site.ios-api-auxiliary}}protocol-dcephotolistener.html): The protocol that includes method [`photoOutputCallback`]({{site.ios-api-auxiliary}}protocol-dcephotolistener.html#photooutputcallback) which is triggered when a photo is captured. JPEG-encoded photo can be received via the method [`photoOutputCallback`]({{site.ios-api-auxiliary}}protocol-dcephotolistener.html#photooutputcallback).
- - [`takePhoto`]({{site.ios-api}}camera-enhancer.html#takephoto): Triggers photo capturing.
-- Added a new class [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html). The following APIs are available in the class:
- - [`vibrate`]({{site.ios-api-auxiliary}}dcefeedback.html#vibrate): Triggers a vibration.
- - [`Beep`]({{site.ios-api-auxiliary}}dcefeedback.html#beep): Triggers a beep sound.
-- Added a new method [`getMaxZoomFactor`]({{site.ios-api}}camera-enhancer.html#getmaxzoomfactor) which returns the maximum available zoom factor of the device.
-
-## 2.1.4 (05/26/2022)
-
-### New
-
-- Added support for [ISO and exposure time settings]({{ site.reference }}).
-
-### Fixed
-
-- Fixed the memory leaks caused by incorrectly destroying NSTimer instances.
-- Fixed a bug where some delay might happen in initiating licenses when using along with Dynamsoft Barcode Reader Mobile Edition.
-
-### Deprecated
-
-- `CameraEnhancer.setFrameRate`
-- `EnumResolution.EnumResolution_HIGH`
-- `EnumResolution.EnumResolution_MID`
-- `EnumResolution.EnumResolution_LOW`
-
-## 2.1.3 (03/02/2022)
-
-### Fixed
-
-- Fixed a bug that might offset the position of highlight overlays on the decoded barcodes when used together with `DynamsoftBarcodeReader`.
-
-## 2.1.1 (12/28/2021)
-
-### New
-
-- Added a new feature `SMART_TORCH`. Users can enable this feature via the method [`enableFeatures`]({{site.ios-api}}camera-enhancer.html#enablefeatures) by specifying `EnumSMART_TORCH`. When `SMART_TORCH` is enabled, a torch button will be displayed automatically when the environment light level is low. Users can click on the torch button to turn on/off the torchlight.
-- Overwrite `DCECameraView` method [`setTorchButton`]({{site.ios-api-auxiliary}}dcecameraview.html#settorchbutton). Users can set the position, size and image of the torch button. The previous `setTorchButton` method is deprecated.
-
-### Fixed
-
-- Fixed a bug that might affect the processing speed.
-- Fixed a bug that `enableFeatures` might not have effects.
-
-## 2.1.0 (12/16/2021)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.1.0.md -%}
-
-
-
-### Changelog
-
-#### New
-
-- Added method [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion) and [`getScanRegion`]({{site.ios-api}}camera-enhancer.html#getscanregion) to [`CameraEnhancer`]({{site.ios-api}}camera-enhancer.html) class for users to set or get the region of interest. The scan region will determine how frames will be cropped.
-- Added class [`iRegionDefinition`]({{site.ios-api-auxiliary}}region-definition.html). The class will be used to define the parameters for method [`setScanRegion`]({{site.ios-api}}camera-enhancer.html#setscanregion).
-- Added property [`scanRegionVisible`]({{site.ios-api}}camera-enhancer.html#scanregionvisible) to control and check the visibility of the scan region.
-- Added method [`setTorchButton`]({{site.ios-api-auxiliary}}dcecameraview.html#settorchbutton) to [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html) class for users to set the position of the torch button. Property [`torchButtonVisible`]({{site.ios-api-auxiliary}}dcecameraview.html#torchbuttonvisible) is added to set and check the visibility of the torch button.
-- Extended the JSON template of [`updateAdvancedSettingsFromFile`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromfile) and [`updateAdvancedSettingsFromString`]({{site.ios-api}}camera-enhancer.html#updateadvancedsettingsfromstring). Added fast mode configuration parameters to the template.
-
-## 2.0.0 (10/19/2021)
-
-
-
-### Version Highlights
-
-
-
-{%- include release-notes/product-highlight-2.0.0.md -%}
-
-
-
-### Changelog
-
-#### Improved
-
-- Updated the mechanism of the video buffer. The capability of real-time frame processing and transferring is improved.
-
-#### Breaking Change(s)
-
-- Added method [`initLicense`]({{site.ios-api}}camera-enhancer.html#initlicense) to replace `initLicenseFromDLS`.
-- Upgraded the [`basic camera-control APIs`]({{site.ios-api}}camera-enhancer.html#basic-camera-control-methods).
-- Upgraded the usage of [`camera enhancer features`]({{site.ios-api}}camera-enhancer.html#enhanced-features).
-- Renamed class `CameraView` to [`DCECameraView`]({{site.ios-api-auxiliary}}dcecameraview.html). The features of the class are extended as well.
-- Renamed class `Frame` to [`DCEFrame`]({{site.ios-api-auxiliary}}dceframe.html). The features of the class are extended as well.
diff --git a/programming-old/ios/release-note/release-notes-3.x.md b/programming-old/ios/release-note/release-notes-3.x.md
deleted file mode 100644
index 23464309..00000000
--- a/programming-old/ios/release-note/release-notes-3.x.md
+++ /dev/null
@@ -1,53 +0,0 @@
----
-layout: default-layout
-title: iOS 3.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS 3.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS 3.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS 3.x Release Notes
-permalink: /programming/ios/release-note/release-notes-3.x.html
----
-
-# Release Notes - iOS 3.x
-
-## 3.0.3 (02/15/2023)
-
-* Fixed a bug where `QuadDrawingItem` is not correctly displayed.
-
-## 3.0.2 (02/02/2023)
-
-* Override method [`setFocus`](../primary-api/camera-enhancer.html#setfocussubsequentfocusmode) in `CameraEnhancer` class for users to specify the subsequent focus mode after triggering a focus. Enumeration [`EnumFocusMode`]({{ site.dce-enums }}focus-mode.html?lang=objc,swift) is added to specify the focus mode.
-* Added a new method [`setAutoZoomRange`](../primary-api/camera-enhancer.html#setautozoomrange) in `CameraEnhancer` for users to specify a range for the auto-zoom feature of the library.
-* Added an interface [`DCECameraStateListener`](../auxiliary-api/protocol-dcecamerastatelistener.html) to receive a callback when the camera state changes. You can add the protocol via a new method [`setCameraStateListener`](../primary-api/camera-enhancer.html#setcamerastatelistener).
-* Added a new method [`getVisibleRegionOfVideo`](../auxiliary-api/dcecameraview.html#getvisibleregionofvideo) in `DCECameraView` class
-* Deprecated method `pause` and `resume` in `CameraEnhancer` class.
-* Fixed a bug that might be caused by thread blocking when using an offline license.
-* Deprecated method `pause` and `resume` in `CameraEnhancer` class.
-* Fixed a bug that `torchButton` was not clickable when it appeared outside `scanRegion`.
-* Fixed a scan region deviation bug.
-* Fixed an overlay offset bug when `DCECamearView` is smaller than the screen size.
-* Fixed a bug that might cause high CPU occupancy when the camera is opened.
-* Fixed a bug that `scanRegion` is not correctly set when device was rotated horizontally.
-* The `video buffer` will be cleared when camera is paused or closed.
-
-## 3.0.1 (09/29/2022)
-
-* Added methods [`selectCamera(EnumCameraPosition)`](../primary-api/camera-enhancer.html#selectcamerawithposition) and [`getCameraPosition`](../primary-api/camera-enhancer.html#getcameraposition) for users to switch between the front-facing camera and the back-facing camera.
-* Added enumeration [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=iOS).
-* Added a new class [`DCEFeedback`]({{site.ios-api-auxiliary}}dcefeedback.html). The following APIs are available in the class:
- * [`vibrate`]({{site.ios-api-auxiliary}}dcefeedback.html#vibrate): Triggers a vibration.
- * [`Beep`]({{site.ios-api-auxiliary}}dcefeedback.html#beep): Triggers a beep sound.
-
-## 3.0.0 (06/21/2022)
-
-* Updated UI configuration APIs.
- * Added [`DCEImageEditorView`](../auxiliary-api/dceimageeditorview.html)
- * Added [`DCEDrawingLayer`](../auxiliary-api/dcedrawinglayer.html)
- * Added DrawingItem Classes
- * [`DrawingItem`](../auxiliary-api/drawingitem.html)
- * [`QuadDrawingItem`](../auxiliary-api/drawingitem-quad.html)
- * [`RectDrawingItem`](../auxiliary-api/drawingitem-rect.html)
- * [`TextDrawingItem`](../auxiliary-api/drawingitem-text.html)
- * Added [`DrawingStyle`]
- * Added [`DrawingStyleManager`]
diff --git a/programming/android/auxiliary-api/dcecameraview-v4.0.0.md b/programming/android/auxiliary-api/dcecameraview-v4.0.0.md
deleted file mode 100644
index 8d16b48f..00000000
--- a/programming/android/auxiliary-api/dcecameraview-v4.0.0.md
+++ /dev/null
@@ -1,296 +0,0 @@
----
-layout: default-layout
-title: CameraView - Dynamsoft Camera SDK API Reference
-description: The class CameraView of Dynamsoft Camera SDK represents a camera view that displays the camera preview and provides UI controlling APIs.
-keywords: camera view, Java, Kotlin
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# CameraView
-
-The `CameraView` class is used to display the camera preview and provides UI controlling APIs. Users can add interactable UI elements on the view.
-
-## Definition
-
-*Assembly:* package com.dynamsoft.dce
-
-```java
-class CameraView
-```
-
-## Methods
-
-| Method | Description |
-|------- |-------------|
-| [`CameraView`](#cameraview-1) | Create an instance of `CameraView`. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the specified `DrawingLayer`. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a new `DrawingLayer`. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-| [`setTorchButton`](#settorchbutton) | Add a torch button on your view. |
-| [`deleteUserDefinedDrawingLayer`](#deleteuserdefineddrawinglayer) | Delete the specified drawing layer. |
-| [`clearUserDefinedDrawingLayers`](#clearuserdefineddrawinglayers) | Clear all the user-defined drawing layers. |
-| [`getAllDrawingLayers`](#getalldrawinglayers) | Get all the drawing layers on the view. |
-| [`setScanRegionMaskStyle`](#setscanregionmaskstyle) | Set the style of the scan region mask. |
-| [`setTorchButtonVisible`](#settorchbuttonvisible) | Set/get the visibility of the torch button. |
-| [`isTorchButtonVisible`](#istorchbuttonvisible) | Set/get the visibility of the torch button. |
-| [`setScanRegionMaskVisible`](#setscanregionmaskvisible) | Set/get the visibility of the scan region mask. |
-| [`isScanRegionMaskVisible`](#isscanregionmaskvisible) | Set/get the visibility of the scan region mask. |
-| [`setScanLaserVisible`](#setscanlaservisible) | Set the visibility of the scan laser. |
-| [`isScanLaserVisible`](#isscanlaservisible) | Get the visibility of the scan laser. |
-| [`setTipConfig`](#settipconfig) | Set/get the tip configurations. |
-| [`getTipConfig`](#gettipconfig) | Set/get the tip configurations. |
-| [`setTipVisible`](#settipvisible) | Set the visibility of tip. |
-| [`isTipVisible`](#istipvisible) | Get the visibility of tip. |
-| [`updateTipMessage`](#updatetipmessage) | Update the tip message. |
-
-### CameraView
-
-The constructor. Create an instance of `CameraView`.
-
-```java
-CameraView(android.content.Context context);
-```
-
-**Parameters**
-
-`frame`: A CGRect value that defines the position of the view.
-
-**Return Value**
-
-An instance of `CameraView`.
-
-### getDrawingLayer
-
-Get the specified `DrawingLayer`.
-
-```java
-DrawingLayer getDrawingLayer(int id);
-```
-
-**Parameters**
-
-`layerId`: The ID of the layer that you want to get.
-
-**Return Value**
-
-The object of the targeting layer.
-
-### createDrawingLayer
-
-Create a new `DrawingLayer`.
-
-```java
-DrawingLayer createDrawingLayer();
-```
-
-**Return Value**
-
-The object of the layer you created.
-
-### getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-```java
-DSRect getVisibileRegionOfVideo();
-```
-
-**Return Value**
-
-A [`DSRect`]({{ site.dcv_android_api }}core/basic-structures/rect.html) object (measuredInPercentage = 1) that defines the visible region of the video.
-
-### setTorchButton
-
-Add a torch button on your view. If you are using enhanced feature - smart torch, the style of this torch button will be applied to the smart torch as well.
-
-```java
-void setTorchButton(Point torchButtonPosition, int width, int height, Drawable torchOnImage, Drawable torchOffImage);
-```
-
-**Parameters**
-
-`torchButtonPosition`: Set the top-left point of the torch button.
-`width`: Set the width of the torch button.
-`height`: Set the height of the torch button.
-`torchOnImage`: The torch button image that you want to display when the torch is on.
-`torchOffImage`: The torch button image that you want to display when the torch is off.
-
-### setTorchButtonVisible
-
-Set/get the visibility of the torch button.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible);
-```
-
-**Parameters**
-
-`isVisible`: A boolean value that indicate the torch button is visible.
-
-### isTorchButtonVisible
-
-Set/get the visibility of the torch button.
-
-```java
-void setTorchButtonVisible(boolean isTorchButtonVisible);
-```
-
-**Return Value**
-
-A boolean value that indicate the torch button is visible.
-
-### deleteUserDefinedDrawingLayer
-
-Delete the specified drawing layer.
-
-**Parameters**
-
-`frame`: The ID of the layer that you want to delete.
-
-```java
-void deleteUserDefinedDrawingLayer(int id);
-```
-
-### clearUserDefinedDrawingLayers
-
-Clear all the user-defined drawing layers.
-
-```java
-void clearUserDefinedDrawingLayers();
-```
-
-### getAllDrawingLayers
-
-Get all the drawing layers on the view.
-
-**Return Value**
-
-All the drawing layers. The return value includes both system drawing layers and user defined drawing layers.
-
-```java
-DrawingLayer[] getAllDrawingLayers();
-```
-
-### setScanRegionMaskVisible
-
-Set the visibility of the scan region mask.
-
-```java
-void setScanRegionMaskVisible(boolean isScanRegionVisible);
-```
-
-**Parameters**
-
-`isScanRegionVisible`: A boolean value that indicates whether the scan region mask is visible.
-
-### isScanRegionMaskVisible
-
-Get the visibility of the scan laser.
-
-```java
-boolean isScanRegionMaskVisible();
-```
-
-**Return Value**
-
-A boolean value that indicates whether the scan region mask is visible.
-
-### setScanRegionMaskStyle
-
-Set the style of the scan region mask.
-
-```java
-void setScanRegionMaskStyle(int strokeColor, int surroundingColour, float strokeWidth);
-```
-
-**Parameters**
-
-`strokeColour`: The stroke colour of the scan region box.
-`surroundingColour`: The colour of the mask around the scan region.
-`strokeWidth`: The width of the stroke.
-
-### setScanLaserVisible
-
-Set the visibility of the scan laser.
-
-```java
-void setScanLaserVisible(boolean isScanRegionVisible);
-```
-
-**Parameters**
-
-`isScanRegionVisible`: A boolean value that indicates whether the scan laser is visible.
-
-### isScanLaserVisible
-
-Get the visibility of the scan laser.
-
-```java
-boolean isScanLaserVisible();
-```
-
-**Return Value**
-
-A boolean value that indicates whether the scan laser is visible.
-
-### setTipConfig
-
-Set/get the tip configurations.
-
-```java
-void setTipConfig(TipConfig tipConfig);
-```
-
-**Parameters**
-
-`tipConfig`: A `TipConfig` object that stores the tip configuration.
-
-### getTipConfig
-
-Set/get the tip configurations.
-
-```java
-TipConfig getTipConfig();
-```
-
-**Return Value**
-
-Get a `TipConfig` object that stores the tip configuration.
-
-### setTipVisible
-
-Set the visibility of tip.
-
-```java
-void setTipVisible(boolean isVisible);
-```
-
-**Parameters**
-
-`isVisible`: A boolean value that indicate the tip is visible.
-
-### isTipVisible
-
-Get the visibility of tip.
-
-```java
-boolean isTipVisible();
-```
-
-**Return Value**
-
-A boolean value that indicate the tip is visible.
-
-### updateTipMessage
-
-Update the tip message. The new tip message will be immediately displayed on the view. Generally, tip messages are uploaded internally.
-
-```java
-void updateTipMessage(String tipMessage);
-```
-
-**Parameters**
-
-`tipMessage` The new message that you want to display.
diff --git a/programming/android/auxiliary-api/dceimageeditorview-v4.0.0.md b/programming/android/auxiliary-api/dceimageeditorview-v4.0.0.md
deleted file mode 100644
index 9fda5ff3..00000000
--- a/programming/android/auxiliary-api/dceimageeditorview-v4.0.0.md
+++ /dev/null
@@ -1,215 +0,0 @@
----
-layout: default-layout
-title: ImageEditorView - DynamsoftCameraEnhancer Android Edition API Reference
-description: The class ImageEditorView of DynamsoftCameraEnhancer represents an image editor view, which allows users to add interactable UI elements on the view.
-keywords: image editor view, Java, Kotlin
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# ImageEditorView
-
-The `ImageEditorView` class represents an image editor view, which allows users to add interactable UI elements on the view.
-
-## Definition
-
-*Assembly:* package com.dynamsoft.dce
-
-```java
-class ImageEditorView : UIView
-```
-
-## Methods
-
-| Method | Description |
-|------- |-------------|
-| [`ImageEditorView`](#imageeditorview-1) | Create an instance of CameraView. |
-| [`setOriginalImage`](#setoriginalimage) | Set the original image that displayed on the view. |
-| [`setOriginalImage(bitmapImage)`](#setoriginalimagebitmapimage) | Set the original image that displayed on the view. |
-| [`getOriginalImage`](#getoriginalimage) | Get the original image that displayed on the view. |
-| [`getSelectedDrawingItem`](#getselecteddrawingitem) | Get the selected DrawingItem. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the specified DrawingLayer. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a new DrawingLayer. |
-| [`deleteUserDefinedDrawingLayer`](#deleteuserdefineddrawinglayer) | Delete the specified drawing layer. |
-| [`clearUserDefinedDrawingLayers`](#clearuserdefineddrawinglayers) | Clear all the user-defined drawing layers. |
-| [`setOriginalImage(bitmapImage)`](#setoriginalimagebitmapimage) | Set the original image that displayed on the view. |
-| [`updateTipMessage`](#updatetipmessage) | Update the tip message. |
-| [`setTipConfig`](#settipconfig) | Set/get the tip configurations. |
-| [`getTipConfig`](#gettipconfig) | Set/get the tip configurations. |
-| [`setTipVisible`](#settipvisible) | Set the visibility of tip. |
-| [`isTipVisible`](#istipvisible) | Get the visibility of tip. |
-
-### ImageEditorView
-
-The consturctor. Create an instance of `ImageEditorView`.
-
-```java
-ImageEditorView(android.content.Context context){}
-```
-
-**Parameters**
-
-`context`: The context of the view.
-
-**Return Value**
-
-An instance of `ImageEditorView`.
-
-### setOriginalImage
-
-Set the original image that displayed on the view.
-
-```java
-void setOriginalImage(com.dynamsoft.core.ImageData imageData){}
-```
-
-**Parameters**
-
-`imageData`: A [`com.dynamsoft.core.ImageData`]({{ site.dcv_android_api }}core/basic-structures/image-data.html) object as the original.
-
-### setOriginalImage(bitmapImage)
-
-Set the original image that displayed on the view with a Bitmap.
-
-```java
-void setOriginalImage(Bitmap bitmapImage){}
-```
-
-**Parameters**
-
-`bitmapImage`: A `Bitmap` object as the original.
-
-### getOriginalImage
-
-Get the original image that displayed on the view.
-
-```java
-com.dynamsoft.core.ImageData getOriginalImage(){}
-```
-
-**Return Value**
-
-A [`com.dynamsoft.core.ImageData`]({{ site.dcv_android_api }}core/basic-structures/image-data.html) object as the original image.
-
-**Code Snippet**
-
-### getSelectedDrawingItem
-
-Get the selected DrawingItem.
-
-```java
-DrawingItem getSelectedDrawingItem(){}
-```
-
-**Return Value**
-
-The selected `DrawingItem`.
-
-### getDrawingLayer
-
-Get the specified DrawingLayer.
-
-```java
-DrawingLayer getDrawingLayer(int id){}
-```
-
-**Parameters**
-
-`id`: The ID of the layer that you want to get.
-
-**Return Value**
-
-The object of the targeting layer.
-
-### createDrawingLayer
-
-Create a new DrawingLayer.
-
-```java
-DrawingLayer createDrawingLayer(){}
-```
-
-**Return Value**
-
-The object of the layer you created.
-
-### deleteUserDefinedDrawingLayer
-
-Delete the specified drawing layer.
-
-```java
-void deleteUserDefinedDrawingLayer(int id){}
-```
-
-**Parameters**
-
-`id`: The ID of the layer that you want to delete.
-
-### clearUserDefinedDrawingLayers
-
-Clear all the user-defined drawing layers.
-
-```java
-void clearUserDefinedDrawingLayers(){}
-```
-
-### updateTipMessage
-
-Update the tip message.
-
-```java
-void updateTipMessage(String tipMessage){}
-```
-
-**Parameters**
-
-`tipMessage`: The new message that you want to display.
-
-### setTipConfig
-
-Set/get the tip configurations.
-
-```java
-void setTipConfig(TipConfig tipConfig);
-```
-
-**Parameters**
-
-`tipConfig`: A `TipConfig` object that stores the tip configuration.
-
-### getTipConfig
-
-Set/get the tip configurations.
-
-```java
-TipConfig getTipConfig();
-```
-
-**Return Value**
-
-Get a `TipConfig` object that stores the tip configuration.
-
-### setTipVisible
-
-Set the visibility of tip.
-
-```java
-void setTipVisible(boolean isVisible);
-```
-
-**Parameters**
-
-`isVisible`: A boolean value that indicate the tip is visible.
-
-### isTipVisible
-
-Get the visibility of tip.
-
-```java
-boolean isTipVisible();
-```
-
-**Return Value**
-
-A boolean value that indicate the tip is visible.
diff --git a/programming/android/auxiliary-api/drawingitem-arc.md b/programming/android/auxiliary-api/drawingitem-arc.md
new file mode 100644
index 00000000..acbef467
--- /dev/null
+++ b/programming/android/auxiliary-api/drawingitem-arc.md
@@ -0,0 +1,113 @@
+---
+layout: default-layout
+title: ArcDrawingItem - Dynamsoft Camera Enhancer Android Edition API Reference
+description: The class ArcDrawingItem of Dynamsoft Camera Enhancer represents a drawing item that draws Arcs on the view.
+keywords: Arc drawing item, Java, Kotlin
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# ArcDrawingItem
+
+The `ArcDrawingItem` class is a subclass of `DrawingItem`. It represents a drawing item that draws Arcs on the view.
+
+## Definition
+
+*Assembly:* package com.dynamsoft.dce
+
+```java
+class ArcDrawingItem extends DrawingItem
+```
+
+## Methods
+
+| Method | Description |
+|------- |-------------|
+| [`getCentre`](#getcentre) | Get the centre of the `ArcDrawingItem`. |
+| [`getRadius`](#getradius) | Get the radius of the `DrawingItem`. |
+| [`getMediaType`](#getmediatype) | Get the media type of the `DrawingItem`. |
+| [`ArcDrawingItem`](#arcdrawingitemcentre-radius) | Create an instance of `ArcDrawingItem`. |
+| [`ArcDrawingItem(coordinateBase)`](#arcdrawingitemcentre-radius-coordinatebase) | Create an instance of `ArcDrawingItem` and set the coordinate base. |
+
+## Interited Methods
+
+The following methods are inherited from the superclass [`DrawingItem`](drawingitem.html).
+
+| Method | Description |
+|------- |-------------|
+| [`setDrawingStyleId`](drawingitem.html#setdrawingstyleid) | Set the `DrawingStyle` of the `DrawingItem`. If a `DrawingItem` holds a drawing style ID, it will not use the default style of its layer. |
+| [`getDrawingStyleId`](drawingitem.html#getdrawingstyleid) | Get the DrawingStyle of the `DrawingItem`. |
+| [`setState`](drawingitem.html#setstate) | Set the state of the `DrawingItem`. |
+| [`getState`](drawingitem.html#getstate) | Get the state of the `DrawingItem`. |
+| [`getCoordinateBase`](drawingitem.html#getcoordinatebase) | Get the coordinate base of the `DrawingItem`. The coordinate base is image by default. |
+| [`getMediaType`](drawingitem.html#getmediatype) | Get the media type of the `DrawingItem`. |
+| [`addNote`](drawingitem.html#addnote) | Add a note to the `DrawingItem`. |
+| [`getNote`](drawingitem.html#getnote) | Get the specified `Note`. |
+| [`hasNote`](drawingitem.html#hasnote) | Check whether the specified Note exists. |
+| [`updateNote`](drawingitem.html#updatenote) | Update the content of the specified `Note`. |
+| [`deleteNote`](drawingitem.html#deletenote) | Remove the specified `Note` with the specified name. |
+| [`getAllNotes`](drawingitem.html#getallnotes) | Get all `Notes` of this DrawingItem. |
+| [`clearNotes`](drawingitem.html#clearnotes) | Remove all `Notes` of this DrawingItem. |
+
+### getCentre
+
+Get the centre of the `ArcDrawingItem`.
+
+```java
+android.graphics.Point getCentre(){}
+```
+
+### getRadius
+
+Get the radius of the `DrawingItem`.
+
+```java
+int getRadius(){}
+```
+
+### getMediaType
+
+Get the media type of the `DrawingItem`.
+
+```java
+EnumDrawingItemMeidaType getMediaType;
+```
+
+## ArcDrawingItem(centre, radius)
+
+Create an instance of `ArcDrawingItem`.
+
+```java
+ArcDrawingItem(Point centre, int radius){}
+```
+
+**Parameters**
+
+`centre`: The centre of the `ArcDrawingItem`.
+
+`radius`: The radius of the `ArcDrawingItem`.
+
+**Return Value**
+
+An instance of `ArcDrawingItem`.
+
+## ArcDrawingItem(centre, radius, coordinateBase)
+
+Create an instance of `ArcDrawingItem`.
+
+```java
+ArcDrawingItem(Point centre, int radius, EnumCoordinateBase coordinateBase){}
+```
+
+**Parameters**
+
+`centre`: The centre of the `ArcDrawingItem`.
+
+`radius`: The radius of the `ArcDrawingItem`.
+
+`coordinateBase`: The coordinate base of the `ArcDrawingItem`.
+
+**Return Value**
+
+An instance of `ArcDrawingItem`.
diff --git a/programming/android/guide/guide-v4.0.1.md b/programming/android/guide/guide-v4.0.1.md
deleted file mode 100644
index 6285778e..00000000
--- a/programming/android/guide/guide-v4.0.1.md
+++ /dev/null
@@ -1,300 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v4.0.1.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App Prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
-
- ```java
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
-
- ```java
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
-
- ```java
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:4.0.2@aar'
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.md#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-To activate the license:
-
-1. Include the library
-
- ```java
- dependencies {
- implementation 'com.dynamsoft:dynamsoftlicense:3.0.10@aar'
- }
- ```
-
-2. Initialize the license in your code.
-
- ```java
- LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this, (isSuccess, error) -> {
- if (!isSuccess) {
- Log.e(TAG, "InitLicense Error: " + error);
- }
- });
- ```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Create Camera View
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- private CameraView cameraView;
- ...
- mCameraView = findViewById(R.id.cameraView);
- ```
-
-### Initialize the CameraEnhancer and Bind the CameraView
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(cameraView, this);
-```
-
-### Add Code to Open the Camera
-
-Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
-```java
-@Override
-protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- // open the default camera.
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-@Override
-protected void onPause() {
- super.onPause();
- try {
- // close the default camera.
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
-
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- Button btnCapture;
- ...
- btnCapture = findViewById(R.id.btn_capture);
-
- btnCapture.setOnClickListener(v -> {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- });
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static ImageData mFrame;
- ...
- mCameraEnhancer.addListener((frame, nowTime) -> {
- if(needCapture){
- needCapture = false;
-
- // Capture a frame, display it in the image view of the other activity.
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
-
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- private Toolbar toolbar;
- ImageView ivPicture;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- toolbar = findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onBackPressed();
- }
- });
- ImageData frame = MainActivity.mFrame;
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = null;
- try {
- bitmap = frame.toBitmap();
- } catch (CoreException e) {
- e.printStackTrace();
- }
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- }
- ```
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming/android/guide/guide-v4.0.2.md b/programming/android/guide/guide-v4.0.2.md
deleted file mode 100644
index cea03c28..00000000
--- a/programming/android/guide/guide-v4.0.2.md
+++ /dev/null
@@ -1,302 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide-v4.0.2.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App Prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
-
- ```java
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
-
- ```java
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
-
- ```java
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:4.0.3@aar'
- implementation 'com.dynamsoft:dynamsoftcore:3.0.20@aar'
- implementation 'com.dynamsoft:dynamsoftlicense:3.0.30@aar'
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.md#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-To activate the license:
-
-1. Include the library
-
- ```java
- dependencies {
- implementation 'com.dynamsoft:dynamsoftlicense:3.0.10@aar'
- }
- ```
-
-2. Initialize the license in your code.
-
- ```java
- LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this, (isSuccess, error) -> {
- if (!isSuccess) {
- Log.e(TAG, "InitLicense Error: " + error);
- }
- });
- ```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Create Camera View
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- private CameraView cameraView;
- ...
- mCameraView = findViewById(R.id.cameraView);
- ```
-
-### Initialize the CameraEnhancer and Bind the CameraView
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(cameraView, this);
-```
-
-### Add Code to Open the Camera
-
-Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
-```java
-@Override
-protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- // open the default camera.
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-@Override
-protected void onPause() {
- super.onPause();
- try {
- // close the default camera.
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
-
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- Button btnCapture;
- ...
- btnCapture = findViewById(R.id.btn_capture);
-
- btnCapture.setOnClickListener(v -> {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- });
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static ImageData mFrame;
- ...
- mCameraEnhancer.addListener((frame, nowTime) -> {
- if(needCapture){
- needCapture = false;
-
- // Capture a frame, display it in the image view of the other activity.
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
-
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- private Toolbar toolbar;
- ImageView ivPicture;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- toolbar = findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onBackPressed();
- }
- });
- ImageData frame = MainActivity.mFrame;
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = null;
- try {
- bitmap = frame.toBitmap();
- } catch (CoreException e) {
- e.printStackTrace();
- }
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- }
- ```
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming/android/guide/guide-v4.0.3.md b/programming/android/guide/guide-v4.0.3.md
deleted file mode 100644
index 25bbc013..00000000
--- a/programming/android/guide/guide-v4.0.3.md
+++ /dev/null
@@ -1,302 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App Prerequisites
-
-- System Requirements:
- - Supported OS: Android 5 or higher (Android 7 or higher recommended).
- - Supported ABI: arm64-v8a/armeabi-v7a/x86/x86_64.
-
-- Environment: Android Studio 3.4+.
-
-## Installation
-
-If you don't have SDK yet, please download the Dynamsoft Camera Enhancer(DCE) SDK from the Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `[INSTALLATION FOLDER]`.
-
-## Build Your First Application
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
->Note:
->- The following steps are completed in Android Studio 4.2.
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-There are two ways to include the Dynamsoft Camera Enhancer SDK into your project:
-
-#### Local Binary Dependency
-
-1. Copy the file `[INSTALLATION FOLDER]\Lib\DynamsoftCameraEnhancerAndroid.aar` to the target directory `HelloWorld\app\libs`
-
-2. Open the file `HelloWorld\app\build.gradle`, and add reference in the dependencies:
-
- ```groovy
- dependencies {
- implementation fileTree(dir: 'libs', include: ['*.aar'])
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package int the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-#### Remote Binary Dependency
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
-
- ```groovy
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
-
- ```groovy
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:4.0.3@aar'
- implementation 'com.dynamsoft:dynamsoftcore:3.0.20@aar'
- implementation 'com.dynamsoft:dynamsoftlicense:3.0.30@aar'
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.md#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-To activate the license:
-
-1. Include the library
-
- ```groovy
- dependencies {
- implementation 'com.dynamsoft:dynamsoftlicense:3.0.10@aar'
- }
- ```
-
-2. Initialize the license in your code.
-
- ```java
- LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this, (isSuccess, error) -> {
- if (!isSuccess) {
- Log.e(TAG, "InitLicense Error: " + error);
- }
- });
- ```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Create Camera View
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- private CameraView cameraView;
- ...
- mCameraView = findViewById(R.id.cameraView);
- ```
-
-### Initialize the CameraEnhancer and Bind the CameraView
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(cameraView, this);
-```
-
-### Add Code to Open the Camera
-
-Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
-```java
-@Override
-protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- // open the default camera.
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-@Override
-protected void onPause() {
- super.onPause();
- try {
- // close the default camera.
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
-
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- Button btnCapture;
- ...
- btnCapture = findViewById(R.id.btn_capture);
-
- btnCapture.setOnClickListener(v -> {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- });
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static ImageData mFrame;
- ...
- mCameraEnhancer.addListener((frame, nowTime) -> {
- if(needCapture){
- needCapture = false;
-
- // Capture a frame, display it in the image view of the other activity.
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
-
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- private Toolbar toolbar;
- ImageView ivPicture;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- toolbar = findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onBackPressed();
- }
- });
- ImageData frame = MainActivity.mFrame;
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = null;
- try {
- bitmap = frame.toBitmap();
- } catch (CoreException e) {
- e.printStackTrace();
- }
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- }
- ```
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- You can download the similar complete source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/android/HelloWorld).
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming/android/guide/guide-v4.2.0.md b/programming/android/guide/guide-v4.2.0.md
deleted file mode 100644
index 50e94b1d..00000000
--- a/programming/android/guide/guide-v4.2.0.md
+++ /dev/null
@@ -1,269 +0,0 @@
----
-layout: default-layout
-title: Guide on Android - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Android page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Android
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: Android Guide
-permalink: /programming/android/guide/guide.html
----
-
-# Dynamsoft Camera Enhancer User Guide for Android (Java)
-
-The Dynamsoft Camera Enhancer Android SDK enables you to easily control cameras from your Android applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader Android User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/android/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your Android app:
-
-## App Prerequisites
-
-- Supported OS: Android 5.0 (API Level 21) or higher.
-- Supported ABI: **armeabi-v7a, arm64-v8a, x86 and x86_64**.
-- Development Environment: Android Studio 2022.2.1 or higher.
-
-## Build Your First Application
-
->Note:
->- The following steps are completed in Android Studio 2022.2.1.
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
-
-### Create a New Project
-
-1. Open Android Studio and select New Project… in the File > New > New Project… menu to create a new project.
-
-2. Choose the correct template for your project. In this sample, we'll use `Empty Activity`.
-
-3. When prompted, choose your app name (`HelloWorld`) and set the Save location, Language, and Minimum SDK (21)
- >Note: With minSdkVersion set to 21, your app is available on more than 94.1% of devices on the Google Play Store (last update: March 2021).
-
-### Include the library
-
-1. Open the file `HelloWorld\app\build.gradle`, and add the remote repository:
-
- ```groovy
- repositories {
- maven {
- url "https://download2.dynamsoft.com/maven/aar"
- }
- }
- ```
-
-2. Add reference in the dependencies:
-
- ```groovy
- dependencies {
- implementation 'com.dynamsoft:dynamsoftcameraenhancer:4.2.0@aar'
- implementation 'com.dynamsoft:dynamsoftcore:3.2.10@aar'
- implementation 'com.dynamsoft:dynamsoftlicense:3.2.10@aar'
- }
- ```
-
-3. Click `Sync Now`. After the synchronization completes, the SDK is added to the project.
-
-4. import the package in the file `MainActivity.java`
-
- ```java
- import com.dynamsoft.dce.*;
- ```
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.md#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-To activate the license:
-
-1. Include the library
-
- ```groovy
- dependencies {
- implementation 'com.dynamsoft:dynamsoftlicense:3.2.10@aar'
- }
- ```
-
-2. Initialize the license in your code.
-
- ```java
- LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", this, (isSuccess, error) -> {
- if (!isSuccess) {
- Log.e(TAG, "InitLicense Error: " + error);
- }
- });
- ```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Create Camera View
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, create a DCE camera view section under the root node.
-
- ```xml
-
- ```
-
-2. Initialize the camera view, and bind to the Camera Enhancer object.
-
- ```java
- private CameraView cameraView;
- ...
- mCameraView = findViewById(R.id.cameraView);
- ```
-
-### Initialize the CameraEnhancer and Bind the CameraView
-
-Create an instance of Dynamsoft Camera Enhancer
-
-```java
-CameraEnhancer mCameraEnhancer;
-mCameraEnhancer = new CameraEnhancer(cameraView, this);
-```
-
-### Add Code to Open the Camera
-
-Override the MainActivity.onResume and MainActivity.onPause function to open and close camera.
-
-```java
-@Override
-protected void onResume() {
- super.onResume();
- needCapture = false;
- try {
- // open the default camera.
- mCameraEnhancer.open();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-@Override
-protected void onPause() {
- super.onPause();
- try {
- // close the default camera.
- mCameraEnhancer.close();
- } catch (CameraEnhancerException e) {
- e.printStackTrace();
- }
-}
-```
-
-### Capture Frame
-
-1. In the Project window, open app > res > layout > `activity_main.xml`, and add a `Button` to capture frame.
-
- ```xml
-
- ```
-
-2. Add UI variables and event response codes
-
- ```java
- Button btnCapture;
- ...
- btnCapture = findViewById(R.id.btn_capture);
-
- btnCapture.setOnClickListener(v -> {
- // Here we just set a flag, the actual capture action will be executed in the `frameOutputCallback`
- needCapture = true;
- });
- ```
-
-3. Add a frame listener to acquire the latest frame from video streaming. Here we capture a frame and show it on the other activity(`ShowPictureActivity`).
-
- ```java
- static ImageData mFrame;
- ...
- mCameraEnhancer.addListener((frame, nowTime) -> {
- if(needCapture){
- needCapture = false;
-
- // Capture a frame, display it in the image view of the other activity.
- mFrame = frame;
- Intent intent = new Intent(MainActivity.this,ShowPictureActivity.class);
- startActivity(intent);
- }
- });
- ```
-
-### Additional Steps
-
-1. In the Project window, open app > res > layout > `activity_show_picture.xml`, and add a `ImageView`.
-
- ```xml
-
- ```
-
-2. Display the captured frame in ImageView.
-
- ```java
- public class ShowPictureActivity extends AppCompatActivity {
- private Toolbar toolbar;
- ImageView ivPicture;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_show_picture);
- ivPicture = findViewById(R.id.iv_picture);
-
- toolbar = findViewById(R.id.toolbar);
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- onBackPressed();
- }
- });
- ImageData frame = MainActivity.mFrame;
- // Convert to Bitmap from the captured frame.
- Bitmap bitmap = null;
- try {
- bitmap = frame.toBitmap();
- } catch (CoreException e) {
- e.printStackTrace();
- }
- // Display it in ImageView
- ivPicture.setImageBitmap(bitmap);
- }
-
- }
- ```
-
-### Build and Run the Project
-
-1. Select the device that you want to run your app on from the target device drop-down menu in the toolbar.
-
-2. Click `Run app` button, then Android Studio installs your app on your connected device and starts it.
-
->Note:
->- For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/android/).
diff --git a/programming/android/guide/guide.md b/programming/android/guide/guide.md
index 73ec7750..dd2f70e5 100644
--- a/programming/android/guide/guide.md
+++ b/programming/android/guide/guide.md
@@ -107,7 +107,7 @@ To activate the license:
>Note:
>- Network connection is required for the license to work.
>- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
+>- You can request a 30-day offline trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=android){:target="_blank"} link.
### Create Camera View
diff --git a/programming/android/primary-api/camera-enhancer-v4.2.10.md b/programming/android/primary-api/camera-enhancer-v2.2.3000.md
similarity index 97%
rename from programming/android/primary-api/camera-enhancer-v4.2.10.md
rename to programming/android/primary-api/camera-enhancer-v2.2.3000.md
index 90ede1c5..6565cc77 100644
--- a/programming/android/primary-api/camera-enhancer-v4.2.10.md
+++ b/programming/android/primary-api/camera-enhancer-v2.2.3000.md
@@ -25,6 +25,8 @@ class CameraEnhancer extends ImageSourceAdapter
| Method | Description |
|------- |-------------|
+| [`CameraEnhancer`](#cameraenhancer) | The constructor. |
+| [`CameraEnhancer`](#cameraenhancer) | The constructor. |
| [`addListener`](#addlistener) | Add a VideoFrameListener to receive callback when video frames are output. |
| [`removeListener`](#removelistener) | Remove a VideoFrameListener. |
| [`takePhoto`](#takephoto) | Take a photo. |
@@ -95,6 +97,32 @@ The following methods are inherited from superclass [`ImageSourceAdapter`]({{ si
| [`clearBuffer`]({{ site.dcv_android_api }}core/basic-structures/image-source-adapter.html#clearbuffer) | Clears the image buffer. |
| [`setErrorListener`]({{ site.dcv_android_api }}core/basic-structures/image-source-adapter.html#seterrorlistener) | Register an error listener to receive callback when error occurs in the [`ImageSourceAdapter`]({{ site.dcv_android_api }}core/basic-structures/image-source-adapter.html). |
+### CameraEnhancer(lifecycleOwner)
+
+The constructor.
+
+```java
+CameraEnhancer(@NonNull final LifecycleOwner lifecycleOwner)
+```
+
+**Parameters**
+
+`lifecycleOwner`: An implementation of `LifecycleOwner` such as an `AppCompatActivity` object.
+
+### CameraEnhancer(cameraView, lifecycleOwner)
+
+The constructor.
+
+```java
+CameraEnhancer(@NonNull CameraView cameraView, @NonNull final LifecycleOwner lifecycleOwner)
+```
+
+**Parameters**
+
+`cameraView`: An object of `CameraView`.
+
+`lifecycleOwner`: An implementation of `LifecycleOwner` such as an `AppCompatActivity` object.
+
### addListener
Add a VideoFrameListener to receive callback when video frames are output.
diff --git a/programming/android/primary-api/camera-enhancer.md b/programming/android/primary-api/camera-enhancer.md
index 6565cc77..aa338f43 100644
--- a/programming/android/primary-api/camera-enhancer.md
+++ b/programming/android/primary-api/camera-enhancer.md
@@ -55,10 +55,7 @@ class CameraEnhancer extends ImageSourceAdapter
| [`close`](#close) | Close the camera. |
| [`setResolution`](#setresolution) | Set the resolution. If the targeting resolution is not available for your device, a closest available resolutionll be selected. |
| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`getAllCameras`](#getallcameras) | Get the IDs of all available cameras. |
-| [`selectCamera`](#selectcamera) | Select a camera with a camera ID. |
| [`selectCamera(position)`](#selectcameraposition) | Select a camera with a camera position. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the currently actived camera. |
| [`getFrameRate`](#getframerate) | Get the frame rate. |
| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
@@ -71,6 +68,9 @@ class CameraEnhancer extends ImageSourceAdapter
| [`setAutoZoomRange`](#setautozoomrange) | Set the range of auto zoom. |
| [`getAutoZoomRange`](#getautozoomrange) | Get the range of auto zoom. |
| [`cameraView`](#setcameraview) | Set/get the CameraView instance that bind with this CameraEnhancer instance. |
+| [`getAllCameras`](#getallcameras) | Get the IDs of all available cameras. |
+| [`selectCamera`](#selectcamera) | Select a camera with a camera ID. |
+| [`getSelectedCamera`](#getselectedcamera) | Get the currently actived camera. |
## Inherited Methods
@@ -500,35 +500,6 @@ List getAvailableResolutions(){}
All available resolutions in a list.
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-```java
-String[] getAllCameras(){}
-```
-
-**Return Value**
-
-An array of camera IDs.
-
-### selectCamera
-
-Select a camera with a camera ID.
-
-```java
-void selectCamera(String cameraID) throws CameraEnhancerException{}
-```
-
-**Parameters**
-
-`position`: One of the Camera IDs.
-`error`: A NSError pointer. An error occurs when failed to switch the camera.
-
-**Return Value**
-
-A bool value that indicates whether the camera selection is successful.
-
### selectCamera(position)
Select a camera with a camera position.
@@ -546,18 +517,6 @@ selectCamera(EnumCameraPosition position){}
A bool value that indicates whether the camera selection is successful.
-### getSelectedCamera
-
-Get the currently actived camera.
-
-```java
-String getSelectedCamera(){}
-```
-
-**Return Value**
-
-The ID of the currently actived camera.
-
### getFrameRate
Get the frame rate.
@@ -690,3 +649,50 @@ Bind a `CameraView` instance with this `CameraEnhancer` instance.
```java
void setCameraView(CameraView view){}
```
+
+### getAllCameras
+
+> This method is deprecated.
+
+Get the IDs of all available cameras.
+
+```java
+String[] getAllCameras(){}
+```
+
+**Return Value**
+
+An array of camera IDs.
+
+### selectCamera
+
+> This method is deprecated.
+
+Select a camera with a camera ID.
+
+```java
+void selectCamera(String cameraID) throws CameraEnhancerException{}
+```
+
+**Parameters**
+
+`position`: One of the Camera IDs.
+`error`: A NSError pointer. An error occurs when failed to switch the camera.
+
+**Return Value**
+
+A bool value that indicates whether the camera selection is successful.
+
+### getSelectedCamera
+
+> This method is deprecated.
+
+Get the currently actived camera.
+
+```java
+String getSelectedCamera(){}
+```
+
+**Return Value**
+
+The ID of the currently actived camera.
diff --git a/programming/android/release-note/index.md b/programming/android/release-note/index.md
deleted file mode 100644
index 56af8e0a..00000000
--- a/programming/android/release-note/index.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-layout: default-layout
-title: Android Release Note - Dynamsoft Camera Enhancer
-description: This is the documentation - Android Release Note page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android Release Note
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android Release Note
-permalink: /programming/android/release-note/index.html
----
-
-# Dynamsoft Camera Enhancer Android SDK - Release Notes
-
-- [4.2.11 (06/20/2024)](release-notes-4.x.html#4211-06202024)
-- [4.2.10 (05/15/2024)](release-notes-4.x.html#4210-05152024)
-- [4.2.0 (03/07/2024)](release-notes-4.x.html#420-03072024)
-- [4.0.3 (12/28/2023)](release-notes-4.x.html#403-12282023)
-- [4.0.2 (12/07/2023)](release-notes-4.x.html#402-12072023)
-- [4.0.1 (10/26/2023)](release-notes-4.x.html#401-10262023)
-- [4.0.0 (08/10/2023)](release-notes-4.x.html#400-08102023)
-- [3.0.3 (02/15/2023)](release-notes-3.x.html#303-02152023)
-- [3.0.2 (02/02/2023)](release-notes-3.x.html#302-02022023)
-- [3.0.1 (09/29/2022)](release-notes-3.x.html#301-09292022)
-- [3.0.0 (06/21/2022)](release-notes-3.x.html#300-06212022)
-- [2.3.20 (03/21/2024)](release-notes-2.x.html#2320-03212024)
-- [2.3.12 (12/19/2023)](release-notes-2.x.html#2312-12192023)
-- [2.3.11 (02/14/2023)](release-notes-2.x.html#2311-02142023)
-- [2.3.10 (12/13/2022)](release-notes-2.x.html#2310-12132022)
-- [2.3.5 (11/04/2022)](release-notes-2.x.html#235-11042022)
-- [2.3.4 (09/22/2022)](release-notes-2.x.html#234-09222022)
-- [2.3.3 (08/18/2022)](release-notes-2.x.html#233-08182022)
-- [2.3.2 (08/02/2022)](release-notes-2.x.html#232-08022022)
-- [2.3.0 (06/28/2022)](release-notes-2.x.html#230-06282022)
-- [2.1.4 (05/26/2022)](release-notes-2.x.html#214-05262022)
-- [2.1.3 (03/02/2022)](release-notes-2.x.html#213-03022022)
-- [2.1.1 (12/28/2021)](release-notes-2.x.html#211-12282021)
-- [2.1.0 (12/16/2021)](release-notes-2.x.html#210-12162021)
-- [2.0.0 (10/19/2021)](release-notes-2.x.html#200-10192021)
-- [1.0.3 (07/20/2021)](release-notes-1.x.html#103-07202021)
-- [1.0.1 (06/10/2021)](release-notes-1.x.html#101-06102021)
-- [1.0.0 (04/29/2021)](release-notes-1.x.html#100-04292021)
diff --git a/programming/android/release-note/release-notes-4.x.md b/programming/android/release-note/release-notes-4.x.md
deleted file mode 100644
index 7d7cee7a..00000000
--- a/programming/android/release-note/release-notes-4.x.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-layout: default-layout
-title: Android 4.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - Android 4.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Android 4.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: Android 4.x Release Notes
-permalink: /programming/android/release-note/release-notes-4.x.html
----
-
-# Release Notes - Android 4.x
-
-## 4.2.11 (06/20/2024)
-
-* Added a new constructor of class [`CameraEnhancer`]({{ site.android-api }}camera-enhancer.html).
-* Updated the enumeration value of [`EnumCameraPosition`]({{ site.dce-enums }}camera-position.html?lang=android).
-
-## 4.2.10 (05/15/2024)
-
-* Small fixes and tweaks.
-
-## 4.2.0 (03/07/2024)
-
-* Internal changes to be compatible with `DynamsoftCaptureVisionRouter` v2.2.10.
-
-## 4.0.3 (12/28/2023)
-
-* Fixed a bug crash bug caused by auto-zoom feature.
-
-## 4.0.2 (12/07/2023)
-
-* Fixed a bug where method `getSelectedDrawingItem` might not return correctly.
-
-## 4.0.1 (10/26/2023)
-
-* Added a new method `setDrawingItemClickListener` to class `CameraView` & `ImageEditorView`. You can set a `DrawingItemClickListener` to the view to monitor the click events of the `DrawingItems`.
-* Fixed a bug where `getDrawingItems` returns the previous coordinate information when `DrawingItems` are edited on the `ImageEditorView`.
-* Applied some internal changes to the resolution control and scan region UI setting APIs.
-
-## 4.0.0 (08/10/2023)
-
-* Refactored the camera-controlling APIs of the `CameraEnhancer` class.
-* Refactored the UI configuration APIs.
- * Updated the scan region setting APIs. Support scan laser setting.
- * Added new features to set the coordinate base of the DrawingItems and tip messages.
- * Other minor changes on the API names and behaviors.
-* Added tip configuration APIs to display tip messages.
-* A new class Note has been added to enable DrawingItems to carry additional information.
diff --git a/programming/ios/auxiliary-api/dcecameraview-v4.0.0.md b/programming/ios/auxiliary-api/dcecameraview-v4.0.0.md
deleted file mode 100644
index adeb0d3b..00000000
--- a/programming/ios/auxiliary-api/dcecameraview-v4.0.0.md
+++ /dev/null
@@ -1,424 +0,0 @@
----
-layout: default-layout
-title: DSCameraView - Dynamsoft Camera SDK API Reference
-description: The class DSCameraView of Dynamsoft Camera SDK represents a camera view that displays the camera preview and provides UI controlling APIs.
-keywords: camera view, objective-c, swift
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# DSCameraView
-
-The `DSCameraView` class is used to display the camera preview and provides UI controlling APIs. Users can add interactable UI elements on the view.
-
-## Definition
-
-*Assembly:* DynamsoftCameraSDK.xcframework
-
-```objc
-@interface DSCameraView: UIView
-```
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DSCameraView: UIView
-```
-2.
-```swift
-class CameraView: UIView {}
-```
-
-## Attributes
-
-| Attributes | Type | Description |
-| ---------- | ---- | ----------- |
-| [`torchButtonVisible`](#torchbuttonvisible) | *BOOL* | Set/get the visibility of the torch button. |
-| [`scanRegionMaskVisible`](#scanregionmaskvisible) | *BOOL* | Set/get the visibility of the scan region mask. |
-| [`scanLaserVisible`](#scanlaservisible) | *BOOL* | Set/get the visibility of the scan laser. |
-| [`tipConfig`](#tipconfig) | *DSTipConfig* | Set/get the tip configurations. |
-| [`tipVisible`](#tipvisible) | *BOOL* | Set/get the visibility of tip. |
-
-## Methods
-
-| Method | Description |
-|------- |-------------|
-| [`initWithFrame`](#initwithframe) | Create an instance of DSCameraView. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the specified DrawingLayer. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a new DrawingLayer. |
-| [`getVisibleRegionOfVideo`](#getvisibleregionofvideo) | Get the visible region of the video streaming. |
-| [`setTorchButton`](#settorchbutton) | Add a torch button on your view. |
-| [`deleteUserDefinedDrawingLayer`](#deleteuserdefineddrawinglayer) | Delete the specified drawing layer. |
-| [`clearUserDefinedDrawingLayers`](#clearuserdefineddrawinglayers) | Clear all the user-defined drawing layers. |
-| [`getAllDrawingLayers`](#getalldrawinglayers) | Get all the drawing layers on the view. |
-| [`setScanRegionMaskStyle`](#setscanregionmaskstyle) | Set the style of the scan region mask. |
-| [`updateTipMessage`](#updatetipmessage) | Update the tip message. |
-
-### initWithFrame
-
-Create an instance of DSCameraView.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-2.
-```swift
-init(frame: CGRect)
-```
-**Parameters**
-
-`frame`: A CGRect value that defines the position of the view.
-
-**Return Value**
-
-An instance of DSCameraView.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSCameraView *cameraView = [[DSCameraView alloc] initWithFrame:frame];
-```
-2.
-```swift
-let cameraView = CameraView(frame: frame)
-```
-
-### getDrawingLayer
-
-Get the specified DrawingLayer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DSDrawingLayer *)getDrawingLayer:(NSInteger)layerId;
-```
-2.
-```swift
-func getDrawingLayer(_ layerId: Int) -> DSDrawingLayer?
-```
-
-**Parameters**
-
-`layerId`: The ID of the layer that you want to get.
-
-**Return Value**
-
-The object of the targeting layer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSDrawingLayer *drawingLayer = [cameraView getDrawingLayer:layerId];
-```
-2.
-```swift
-let drawingLayer = cameraView.getDrawingLayer(layerId)
-```
-
-### createDrawingLayer
-
-Create a new DrawingLayer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DSDrawingLayer *)createDrawingLayer;
-```
-2.
-```swift
-func createDrawingLayer() -> DSDrawingLayer
-```
-**Return Value**
-
-The object of the layer you created.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSDrawingLayer *drawingLayer = [cameraView createDrawingLayer];
-```
-2.
-```swift
-let drawingLayer = cameraView.createDrawingLayer()
-```
-
-### getVisibleRegionOfVideo
-
-Get the visible region of the video streaming.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DSRect *)getVisibleRegionOfVideo;
-```
-2.
-```swift
-func getVisibleRegionOfVideo() -> DSRect
-```
-**Return Value**
-
-A [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) object (measuredInPercentage = true) that defines the visible region of the video.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSRect *visibleRegion = [cameraView getVisibleRegionOfVideo];
-```
-2.
-```swift
-let visibleRegion = cameraView.getVisibleRegionOfVideo()
-```
-
-### setTorchButton
-
-Add a torch button on your view. If you are using enhanced feature - smart torch, the style of this torch button will be applied to the smart torch as well.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setTorchButton:(CGRect)frame
- torchOnImage:(UIImage* _Nullable)torchOnImage
- torchOffImage:(UIImage* _Nullable)torchOffImage
-NS_SWIFT_NAME(setTorchButton(frame:torchOnImage:torchOffImage:));
-```
-2.
-```swift
-func setTorchButton(_ frame: CGRect, torchOnImage: UIImage, torchOffImage: UIImage)
-```
-
-**Parameters**
-
-`frame`: The place that you want to locate the torch button.
-`torchOnImage`: The torch button image that you want to display when the torch is on.
-`torchOffImage`: The torch button image that you want to display when the torch is off.
-
-### torchButtonVisible
-
-Set/get the visibility of the torch button.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL torchButtonVisible;
-```
-2.
-```swift
-var torchButtonVisible: BOOL { get set }
-```
-
-### deleteUserDefinedDrawingLayer
-
-Delete the specified drawing layer.
-
-**Parameters**
-
-`frame`: The ID of the layer that you want to delete.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)deleteUserDefinedDrawingLayer:(NSInteger)layerId;
-```
-2.
-```swift
-func deleteUserDefinedDrawingLayer(_ layerId:Int)
-```
-
-### clearUserDefinedDrawingLayers
-
-Clear all the user-defined drawing layers.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)clearUserDefinedDrawingLayers;
-```
-2.
-```swift
-func deleteUserDefinedDrawingLayer()
-```
-
-### getAllDrawingLayers
-
-Get all the drawing layers on the view.
-
-**Return Value**
-
-All the drawing layers. The return value includes both system drawing layers and user defined drawing layers.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSArray*)getAllDrawingLayers;
-```
-2.
-```swift
-func getAllDrawingLayers() -> [DrawingLayer]
-```
-
-### scanRegionMaskVisible
-
-Set/get the visibility of the scan region mask.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, assign) BOOL scanRegionMaskVisible;
-```
-2.
-```swift
-var scanRegionMaskVisible: BOOL { get set }
-```
-
-### scanLaserVisible
-
-Set/get the visibility of the scan laser.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (nonatomic, assign) BOOL scanLaserVisible;
-```
-2.
-```swift
-var scanLaserVisible: BOOL { get set }
-```
-
-### setScanRegionMaskStyle
-
-Set the style of the scan region mask.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setScanRegionMaskStyle:(UIColor)strokeColour
- strokeWidth:(CGFloat)strokeWidth
- surroundingColour:(UIColor)surroundingColour;
-```
-2.
-```swift
-func setScanRegionMaskStyle(_ strokeColour: UIColor, strokeWidth: CGFloat, surroundingColour: UIColor)
-```
-
-**Parameters**
-
-`strokeColour` The stroke colour of the scan region box.
-`strokeWidth` The width of the stroke.
-`surroundingColour` The colour of the mask around the scan region.
-
-### tipConfig
-
-Set/get the tip configurations.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) DSTipConfig * tipConfig;
-```
-2.
-```swift
-var tipConfig: DSTipConfig { get set }
-```
-
-### tipVisible
-
-Set/get the visibility of tip.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL tipVisible;
-```
-2.
-```swift
-var tipConfig: BOOL { get set }
-```
-
-### updateTipMessage
-
-Update the tip message. The new tip message will be immediately displayed on the view. Generally, tip messages are uploaded internally.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)updateTipMessage:(NSString*)tipMessage;
-```
-2.
-```swift
-func updateTipMessage(_ tipMessage: String)
-```
-
-**Parameters**
-
-`tipMessage` The new message that you want to display.
diff --git a/programming/ios/auxiliary-api/dceimageeditorview-v4.0.0.md b/programming/ios/auxiliary-api/dceimageeditorview-v4.0.0.md
deleted file mode 100644
index 43681bc6..00000000
--- a/programming/ios/auxiliary-api/dceimageeditorview-v4.0.0.md
+++ /dev/null
@@ -1,434 +0,0 @@
----
-layout: default-layout
-title: DSImageEditorView - DynamsoftCameraEnhancer iOS Edition API Reference
-description: The class DSImageEditorView of DynamsoftCameraEnhancer represents an image editor view, which allows users to add interactable UI elements on the view.
-keywords: image editor view, objective-c, swift
-needGenerateH3Content: true
-needAutoGenerateSidebar: true
-noTitleIndex: true
----
-
-# DSImageEditorView
-
-The `DSImageEditorView` class represents an image editor view, which allows users to add interactable UI elements on the view.
-
-## Definition
-
-*Assembly:* DynamsoftCore.xcframework
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface DSImageEditorView : UIView
-```
-2.
-```swift
-class ImageEditorView : UIView
-```
-
-## Attributes
-
-| Attributes | Type | Description |
-| ---------- | ---- | ----------- |
-| [`image`](#image) | The property stores the original image that displayed on the view in a `UIImage`. |
-| [`imageData`](#imagedata) | The property stores the original image that displayed on the view in a [`ImageData`]({{ site.dcv_ios_api }}core/basic-structures/image-data.html). |
-| [`tipConfig`](#tipconfig) | *DSTipConfig* | Set/get the tip configurations. |
-| [`tipVisible`](#tipvisible) | *BOOL* | Set/get the visibility of tip. |
-
-## Methods
-
-| Method | Description |
-|------- |-------------|
-| [`initWithFrame`](#initwithframe) | Create an instance of DSCameraView. |
-| [`getSelectedDrawingItem`](#getselecteddrawingitem) | Get the selected DrawingItem. |
-| [`getDrawingLayer`](#getdrawinglayer) | Get the specified DrawingLayer. |
-| [`createDrawingLayer`](#createdrawinglayer) | Create a new DrawingLayer. |
-| [`deleteUserDefinedDrawingLayer`](#deleteuserdefineddrawinglayer) | Delete the specified drawing layer. |
-| [`clearUserDefinedDrawingLayers`](#clearuserdefineddrawinglayers) | Clear all the user-defined drawing layers. |
-| [`getAllDrawingLayers`](#getalldrawinglayers) | Get all the drawing layers on the view. |
-| [`updateTipMessage`](#updatetipmessage) | Update the tip message. |
-| [`setOriginalImageWithUIImage`](#setoriginalimagewithuiimage) | Set the original image that displayed on the view. |
-
-### image
-
-The property stores the original image that displayed on the view in a `UIImage`.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) UIImage *image;
-```
-2.
-```swift
-var image:UIImage { get, set }
-```
-
-### imageData
-
-The property stores the original image that displayed on the view in a [`ImageData`]({{ site.dcv_ios_api }}core/basic-structures/image-data.html).
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) DSImageData *imageData;
-```
-2.
-```swift
-var image:DSImageData { get, set }
-```
-
-### tipConfig
-
-Set/get the tip configurations.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) DSTipConfig * tipConfig;
-```
-2.
-```swift
-var tipConfig: DSTipConfig { get set }
-```
-
-### tipVisible
-
-Set/get the visibility of tip.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@property (assign, nonatomic) BOOL tipVisible;
-```
-2.
-```swift
-var tipConfig: BOOL { get set }
-```
-
-### initWithFrame
-
-Create an instance of DSImageEditorView.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (instancetype)initWithFrame:(CGRect)frame;
-```
-2.
-```swift
-init(frame: CGRect)
-```
-
-**Parameters**
-
-`frame`: A CGRect value that defines the position of the view.
-
-**Return Value**
-
-An instance of DSImageEditorView.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSImageEditorView *editorView = [[DSImageEditorView alloc] initWithFrame:frame];
-```
-2.
-```swift
-let editorView = DSImageEditorView(frame: frame)
-```
-
-### getSelectedDrawingItem
-
-Get the selected DrawingItem.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (nullable DSDrawingItem *)getSelectedDrawingItem;
-```
-2.
-```swift
-func getSelectedDrawingItem() -> DSDrawingItem?
-```
-
-**Return Value**
-
-The selected DrawingItem.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSDrawingItem *selectedItem = [editorView getSelectedDrawingItem];
-```
-2.
-```swift
-let selectedItem = editorView.getSelectedDrawingItem()
-```
-
-### getDrawingLayer
-
-Get the specified DrawingLayer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DSDrawingLayer *)getDrawingLayer:(NSInteger)layerId;
-```
-2.
-```swift
-func getDrawingLayer(_ layerId: Int) -> DSDrawingLayer
-```
-
-**Parameters**
-
-`layerId`: The ID of the layer that you want to get.
-
-**Return Value**
-
-The object of the targeting layer.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSDrawingLayer *drawingLayer = [editorView getDrawingLayer:layerId];
-```
-2.
-```swift
-let drawingLayer = editorView.getDrawingLayer(layerId)
-```
-
-### createDrawingLayer
-
-Create a new DrawingLayer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (DSDrawingLayer *)createDrawingLayer;
-```
-2.
-```swift
-func createDrawingLayer() -> DSDrawingLayer
-```
-
-**Return Value**
-
-The object of the layer you created.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-DSDrawingLayer *drawingLayer = [editorView createDrawingLayer];
-```
-2.
-```swift
-let drawingLayer = editorView.createDrawingLayer()
-```
-
-### deleteUserDefinedDrawingLayer
-
-Delete the specified drawing layer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)deleteUserDefinedDrawingLayer:(NSInteger)layerId;
-```
-2.
-```swift
-func deleteUserDefinedDrawingLayer(_ layerId: Int)
-```
-
-**Parameters**
-
-`layerId`: The ID of the layer that you want to delete.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[editorView deleteUserDefinedDrawingLayer:layerId];
-```
-2.
-```swift
-editorView.deleteUserDefinedDrawingLayer(layerId)
-```
-
-### clearUserDefinedDrawingLayers
-
-Clear all the user-defined drawing layers.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)clearUserDefinedDrawingLayers;
-```
-2.
-```swift
-func clearUserDefinedDrawingLayers()
-```
-
-### getAllDrawingLayers
-
-Get all the drawing layers on the view.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSArray*)getAllDrawingLayers;
-```
-2.
-```swift
-func getAllDrawingLayers() -> [DrawingLayer]
-```
-
-**Return Value**
-
-All the drawing layers. The return value includes both system drawing layers and user defined drawing layers.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-NSArray *drawingLayers = [editorView getAllDrawingLayers];
-```
-2.
-```swift
-let drawingLayers = editorView.getAllDrawingLayers()
-```
-
-### updateTipMessage
-
-Update the tip message.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)updateTipMessage:(NSString *)tipMessage;
-```
-2.
-```swift
-func updateTipMessage(_ tipMessage: String)
-```
-
-**Parameters**
-
-`tipMessage`: The new message that you want to display.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-[editorView updateTipMessage:tipMessage];
-```
-2.
-```swift
-editorView.updateTipMessage(tipMessage)
-```
-
-### setOriginalImageWithUIImage
-
-Set the original image that displayed on the view.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setOriginalImageWithUIImage:(UIImage *)image;
-```
-2.
-```swift
-func setOriginalImage(_ image: UIImage)
-```
-
-**Parameters**
-
-`image`: A UIImage object as the original.
-
-**Code Snippet**
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setOriginalImageWithUIImage:(UIImage *)image;
-```
-2.
-```swift
-func setOriginalImage(_ image: UIImage)
-```
diff --git a/programming/ios/auxiliary-api/drawingitem-arc.md b/programming/ios/auxiliary-api/drawingitem-arc.md
new file mode 100644
index 00000000..75c5e9f4
--- /dev/null
+++ b/programming/ios/auxiliary-api/drawingitem-arc.md
@@ -0,0 +1,155 @@
+---
+layout: default-layout
+title: ArcDrawingItem - Dynamsoft Camera Enhancer iOS Edition API Reference
+description: The class ArcDrawingItem of Dynamsoft Camera Enhancer represents a drawing item that draws Arcs on the view.
+keywords: Arc drawing item, Objective-C, Swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# ArcDrawingItem
+
+The `ArcDrawingItem` class is a subclass of `DrawingItem`. It represents a drawing item that draws Arcs on the view.
+
+## Definition
+
+*Assembly:* DynamsoftCameraEnhancer.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSArcDrawingItem : DSDrawingItem
+```
+2.
+```swift
+class ArcDrawingItem : DSDrawingItem
+```
+
+## Methods & Attributes
+
+| Method | Description |
+|------- |-------------|
+| [`initWithDrawingStyleId`](#initwithdrawingstyleid) | Create an instance of `ArcDrawingItem` with style, state, centre and radius. |
+| [`initWithCentre`](#initwithcentre) | Create an instance of `ArcDrawingItem` with centre and radius. |
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`centre`](#centre) | *CGPoint* | The centre of the `ArcDrawingItem`. |
+| [`radius`](#radius) | *CGFloat* | The radius of the `ArcDrawingItem`. |
+
+## Interited Methods
+
+The following methods are inherited from the superclass [`DrawingItem`](drawingitem.html).
+
+| Method | Description |
+|------- |-------------|
+| [`setDrawingStyleId`](drawingitem.html#setdrawingstyleid) | Set the `DrawingStyle` of the `DrawingItem`. If a `DrawingItem` holds a drawing style ID, it will not use the default style of its layer. |
+| [`getDrawingStyleId`](drawingitem.html#getdrawingstyleid) | Get the DrawingStyle of the `DrawingItem`. |
+| [`setState`](drawingitem.html#setstate) | Set the state of the `DrawingItem`. |
+| [`getState`](drawingitem.html#getstate) | Get the state of the `DrawingItem`. |
+| [`getCoordinateBase`](drawingitem.html#getcoordinatebase) | Get the coordinate base of the `DrawingItem`. The coordinate base is image by default. |
+| [`getMediaType`](drawingitem.html#getmediatype) | Get the media type of the `DrawingItem`. |
+| [`addNote`](drawingitem.html#addnote) | Add a note to the `DrawingItem`. |
+| [`getNote`](drawingitem.html#getnote) | Get the specified `Note`. |
+| [`hasNote`](drawingitem.html#hasnote) | Check whether the specified Note exists. |
+| [`updateNote`](drawingitem.html#updatenote) | Update the content of the specified `Note`. |
+| [`deleteNote`](drawingitem.html#deletenote) | Remove the specified `Note` with the specified name. |
+| [`getAllNotes`](drawingitem.html#getallnotes) | Get all `Notes` of this DrawingItem. |
+| [`clearNotes`](drawingitem.html#clearnotes) | Remove all `Notes` of this DrawingItem. |
+
+### initWithDrawingStyleId
+
+Create an instance of `ArcDrawingItem` with style, state, centre and radius.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (instancetype)initWithDrawingStyleId:(NSUInteger)styleId
+ state:(DSDrawingItemState)state
+ centre:(CGPoint)centre
+ radius:(CGFloat)radius;
+```
+2.
+```swift
+func initWithDrawingStyleId(styleId: UInt, state: DSDrawingItemState, centre: CGPoint, radius: CGFloat) -> ArcDrawingItem
+```
+
+**Parameters**
+
+`styleId`: The drawing style ID of the `ArcDrawingItem`. If the style ID is 0, the `ArcDrawingItem` will use the default style.
+
+`state`: The state of the `ArcDrawingItem`.
+
+`centre`: The centre of the `ArcDrawingItem`.
+
+`radius`: The radius of the `ArcDrawingItem`.
+
+**Return Value**
+
+An `ArcDrawingItem` object.
+
+### initWithCentre
+
+Create an instance of `ArcDrawingItem` with centre and radius.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (instancetype)initWithCentre:(CGPoint)centre radius:(CGFloat)radius;
+```
+2.
+```swift
+func initWithCentre(centre: CGPoint, radius: CGFloat) -> ArcDrawingItem
+```
+
+**Parameters**
+
+`centre`: The centre of the `ArcDrawingItem`.
+
+`radius`: The radius of the `ArcDrawingItem`.
+
+**Return Value**
+
+An `ArcDrawingItem` object.
+
+### centre
+
+Get the centre of the `ArcDrawingItem`.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, assign, readonly) CGPoint centre;
+```
+2.
+```swift
+var centre: CGPoint { get }
+```
+
+### radius
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, assign, readonly) CGFloat radius;
+```
+2.
+```swift
+var radius: CGFloat { get }
+```
diff --git a/programming/ios/guide/guide-v4.2.0.md b/programming/ios/guide/guide-v4.2.0.md
deleted file mode 100644
index 9563993a..00000000
--- a/programming/ios/guide/guide-v4.2.0.md
+++ /dev/null
@@ -1,437 +0,0 @@
----
-layout: default-layout
-title: Guide on iOS - Dynamsoft Camera Enhancer
-description: This is the documentation - Guide on Objective-C & Swift page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Guide on Objective-C & Swift
-needAutoGenerateSidebar: true
-noTitleIndex: true
-needGenerateH3Content: true
-breadcrumbText: iOS Guide
-permalink: /programming/ios/guide/guide.html
----
-
-# User Guide on iOS
-
-The Dynamsoft Camera Enhancer iOS SDK enables you to easily control cameras from your iOS applications to stream live video and acquire realtime frames.
-
-> **Example Usage**
->
-> See how Dynamsoft Camera Enhancer helps in camera control and video recognition:
-> - **Barcode scanning from video stream**: check [Dynamsoft Barcode Reader iOS User Guide](https://www.dynamsoft.com/barcode-reader/docs/mobile/programming/objectivec-swift/user-guide.html?ver=latest)
-
-Step-by-step guide on how to integrate Dynamsoft Camera Enhancer SDK to your iOS app:
-
-## App Prerequisites
-
-- System Requirements:
- - macOS 10.11 and above.
- - iOS 9.0 and above.
-- Environment: Xcode 7.1 - 11.5 and above.
-- Recommended: macOS 10.15.4+, Xcode 11.5+, iOS 11+
-
-## Add the SDK
-
-There are three ways to add the SDK into your project - **Manually**, or via **CocoaPods**.
-
-### Add the Frameworks Manually
-
-1. Download the SDK package from the Dynamsoft Website. After unzipping, you can find the following **xcframeworks** under the **Dynamsoft\Frameworks** directory:
-
- | File | Description |
- | :--- | :---------- |
- | DynamsoftCore.xcframework | The core library, which includes common basic structures and intermediate result related APIs. |
- | DynamsoftLicense.xcframework | The license library, which includes license related APIs. |
- | DynamsoftCameraEnhancer.xcframework | The library provides camera control, camera enhancements, and basic UI configuration features. |
-
-2. Drag and drop the **xcframeworks** into your Xcode project. Make sure to check `Copy items if needed` and `Create groups` to copy the framework into your project's folder.
-
-3. Click on the project settings then go to **General –> Frameworks, Libraries, and Embedded Content**. Set the **Embed** field to **Embed & Sign** for all above **xcframeworks**.
-
-### Add the Frameworks via CocoaPods
-
-1. Add the frameworks in your **Podfile**, replace `TargetName` with your real target name.
-
- ```sh
- target 'HelloWorld' do
- use_frameworks!
-
- pod 'DynamsoftCameraEnhancer','4.2.0'
- pod 'DynamsoftCore','3.2.10'
- pod 'DynamsoftLicense','3.2.10'
-
- end
- ```
-
-2. Execute the pod command to install the frameworks and generate workspace(**[TargetName].xcworkspace**):
-
- ```sh
- pod install
- ```
-
-## Installation
-
-If you don't have SDK yet, please download Dynamsoft Camera Enhancer (DCE) SDK from Dynamsoft website and unzip the package. After decompression, the root directory of the DCE installation package is `DynamsoftCameraEnhancer`, which is represented by `INSTALLATION FOLDER`.
-
-## Build Your First Application with Dynamsoft Camera Enhancer
-
-The following sample will demonstrate how to acquire a frame from video streaming by DCE.
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-### Create a New Project and Include Dynamsoft Camera Enhancer
-
-1. Create a new Objective-C or Swift project.
-
-2. Drag and drop the **DynamsoftCameraEnhancer.xcframework** into your Xcode project. Make sure to **check Copy items if needed** and **Create groups** to copy the framework into your project's folder.
-
-3. Click on the project. Go to the **General --> Frameworks --> Libraries and Embedded Content**. Set the **Embed type** to **Embed & Sign**.
-
-4. Go to the **Build Settings --> Build Options --> Validate Workspace**. Set the **Validate Workspace** to **yes**.
-
-5. In the `ViewController.m` or `ViewController.swift` Import Dynamsoft Camera Enhancer.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-#import
-```
-2.
-```swift
-import DynamsoftCameraEnhancer
-```
-
-Now Dynamsoft Camera Enhancer is added to your project.
-
-
-
-### License Activation (Optional)
-
-A valid license is required when using the following features:
-
-- Frame Sharpness Filter
-- Sensor Filter
-- Auto Zoom
-- Enhanced Focus
-- Fast Mode
-- Smart torch
-
-The above features are enabled by triggering method [`enableFeatures`](../primary-api/camera-enhancer.md#enablefeatures). If you are not using these features, you can skip the license activation step.
-
-To activate the license:
-
-1. Add **DynamsoftLicense.xcframework** to your project and include `DynamsoftLicense` in your `AppDelegate`
-
-
- >- Objective-C
- >- Swift
- >
- >1.
- ```objc
- #import
- ```
- 2.
- ```swift
- import DynamsoftLicense
- ```
-
-2. Initialize the license in your code.
-
-
- >- Objective-C
- >- Swift
- >
- >1.
- ```objc
- @interface AppDelegate ()
- ...
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- [DSLicenseManager initLicense:@"DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9" verificationDelegate:self];
- ...
- }
- - (void)onLicenseVerified:(BOOL)isSuccess error:(NSError *)error {
- [self verificationCallback:error];
- }
- ```
- 2.
- ```swift
- class AppDelegate: UIResponder, UIApplicationDelegate, DBRLicenseVerificationListener {
- ...
- func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
- ...
- LicenseManager.initLicense("DLS2eyJvcmdhbml6YXRpb25JRCI6IjIwMDAwMSJ9", verificationDelegate: self)
- ...
- }
- func onLicenseVerified(_ isSuccess: Bool, error: Error?) {
- if !isSuccess {
- if let error = error {
- print("\(error.localizedDescription)")
- }
- }
- }
- }
- ```
-
->Note:
->- Network connection is required for the license to work.
->- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=ios){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
-
-### Initialize the Camera View and Control the Camera
-
-In this section, we continue working on the `ViewController` file in the project. You will learn how to create a simple camera app.
-
-#### Step 1.1
-
-Delcare the DCE & DCECameraView property.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-@property (nonatomic, strong) DSCameraView *cameraView;
-@property (nonatomic, strong) DSCameraEnhancer *dce;
-@end
-```
-2.
-```swift
-var cameraView:CameraView!
-let dce:CameraEnhancer = .init()
-```
-
-#### Step 1.2
-
-Initialize the DCE & DCECameraView in a method.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)setUpCamera {
- self.cameraView = [[DSCameraView alloc] initWithFrame:self.view.bounds];
- self.cameraView.autoresizingMask = UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight;
- [self.view insertSubview:self.cameraView atIndex:0];
- self.dce = [[DSCameraEnhancer alloc] init];
- self.dce.cameraView = self.cameraView;
- [self.dce addListener:self];
-}
-```
-2.
-```swift
-func setUpCamera() {
- cameraView = .init(frame: view.bounds)
- cameraView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
- view.insertSubview(cameraView, at: 0)
- dce.cameraView = cameraView
- dce.addListener(self)
-}
-```
-
-Add the `setUpCamera` to the `viewDidLoad` method and open the camera when the view appear.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view.
- [self setUpCamera];
-}
-- (void)viewWillAppear:(BOOL)animated {
- [super viewWillAppear:animated];
- [self.dce open];
-}
-```
-2.
-```swift
-override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view.
- setUpCamera()
-}
-override func viewWillAppear(_ animated: Bool) {
- super.viewWillAppear(animated)
- dce.open()
-}
-```
-
-#### Step 1.3
-
-Go to the file **info.plist** under your project folder. Under **Information Property List**, add **Privacy - Camera Usage Description**.
-
-Build the app. Now, a simple camera app is created. After permitting the camera usage, you will see the camera view on the app.
-
-
-
-### Capture Frames From the Video Streaming
-
-In this section, you will learn how to capture video frames with `DynamsoftCameraEnhancer`.
-
-Dynamsoft Camera Enhancer provides two solutions for fetching the video frames:
-
-- Use the method [`getFrameFromBuffer`]({{site.ios-api}}camera-enhancer.html#getframefrombuffer) to fetch a single frame from the video buffer.
-- Use callback method [`FrameOutputCallback`]({{ site.ios-api-auxiliary }}protocol-dceframelistener.html) to continuously fetching the video frames.
-
-> Note:
-> - All the following code will be added to the `ViewController` file in your project.
-
-#### Step 2.1
-
-Add `DCEFrameListener` to your `ViewController` so that you can use `FrameOutputCallback` to get video frames.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@interface ViewController ()
-```
-2.
-```swift
-class ViewController: UIViewController,VideoFrameListener{
- //...
-}
-```
-
-Add `FrameOutputCallback` to your project to get frames from camera output. DCEFrame is the class that stores frame data. You can use Image processing tools to parse the image information from a DCEFrame object or use `DCEFrame.toUIImage` to convert it into a UIImage for other usages.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (void)onFrameOutPut:(nonnull DSImageData *)frame {
- if (self.isClicked) {
- self.isClicked = false;
- dispatch_async(dispatch_get_main_queue(), ^{
- self.button.enabled = false;
- self.imageView.image = [frame toUIImage:nil];
- self.imageView.hidden = false;
- [self addBack];
- });
- }
-}
-```
-2.
-```swift
-func onFrameOutPut(_ frame: ImageData) {
- if isClicked {
- isClicked = false
- DispatchQueue.main.async { [self] in
- button.isEnabled = false
- imageView.image = try? frame.toUIImage()
- imageView.isHidden = false
- addBack()
- }
- }
-}
-```
-
-#### Step 2.2
-
-Add the trigger of the capture button.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-@implementation ViewController{
- // Add these varibles to capture and display images.
- UIButton *photoButton;
- UIImageView* imageView;
- bool isview;
-}
-// The UI for displaying the captured image.
-- (void)configurationUI{
- CGFloat w = [[UIScreen mainScreen] bounds].size.width;
- CGFloat h = [[UIScreen mainScreen] bounds].size.height;
- CGFloat SafeAreaBottomHeight = [[UIApplication sharedApplication] statusBarFrame].size.height > 20 ? 34 : 0;
- photoButton = [[UIButton alloc] initWithFrame:CGRectMake(w / 2 - 60, h - 170 - SafeAreaBottomHeight, 120, 120)];
- photoButton.adjustsImageWhenDisabled = NO;
- [photoButton setImage:[UIImage imageNamed:@"icon_capture"] forState:UIControlStateNormal];
- self->imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, w, h)];
- [photoButton addTarget:self action:@selector(takePictures) forControlEvents:UIControlEventTouchUpInside];
- dispatch_async(dispatch_get_main_queue(), ^{
- [self.view addSubview:self->photoButton];
- });
-}
-// Method for capturing image
-- (void)takePictures{
- isview = true;
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-- (void)addBack{
- self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemReply target:self action:@selector(BackToHome)];
-}
-- (void)BackToHome{
- [imageView removeFromSuperview];
- self.navigationItem.leftBarButtonItem = nil;
- [photoButton setEnabled:true];
-}
-```
-2.
-```swift
-// Add these varibles to capture and display images.
-var photoButton:UIButton! = UIButton()
-var imageView:UIImageView!
-var isview:Bool = false
-// The UI for displaying the captured image.
-func configurationUI() {
- let w = UIScreen.main.bounds.size.width
- let h = UIScreen.main.bounds.size.height
- let safeAreaBottomHeight:CGFloat = UIApplication.shared.statusBarFrame.size.height > 20 ? 34 : 0
- photoButton = UIButton(frame: CGRect(x:w / 2 - 60, y: h - 170 - safeAreaBottomHeight, width: 120, height: 120))
- photoButton.adjustsImageWhenDisabled = false
- photoButton.setImage(UIImage(named: "icon_capture"), for: .normal)
- self.imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: w, height: h))
- photoButton.addTarget(self, action: #selector(takePictures), for: .touchUpInside)
- DispatchQueue.main.async {
- self.view.addSubview(self.photoButton)
- }
-}
-// Method for capturing image
-@objc func takePictures() {
- isview = true
-}
-// The captured image will be displayed on another view. Add back button to get back to the camera.
-func addBack(){
- self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(barButtonSystemItem: .reply, target: self, action: #selector(backToHome))
-}
-@objc func backToHome(){
- self.imageView.removeFromSuperview()
- self.photoButton?.isEnabled = true
- self.navigationItem.leftBarButtonItem = nil
-}
-```
-
-Run the project. Now, you can try to capture video frames with Dynamsoft Camera Enhancer.
-
-
-
-> Note:
-> - You can download the similar complete Objective-C source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldObjc).
-> - You can download the similar complete Swift source code from [Here](https://github.com/Dynamsoft/camera-enhancer-mobile-samples/tree/main/ios/HelloWorldSwift).
-> - For more samples on using Dynamsoft Camera Enhancer supporting Barcode Reader please [click here](https://github.com/Dynamsoft/barcode-reader-mobile-samples/tree/main/ios/).
-
-## What's Next?
-
-### How to integration with barcode reader
-
-This article guides you to integrate the barcode reader function into your app.
diff --git a/programming/ios/guide/guide.md b/programming/ios/guide/guide.md
index 68137d1a..ca953be7 100644
--- a/programming/ios/guide/guide.md
+++ b/programming/ios/guide/guide.md
@@ -151,7 +151,7 @@ To activate the license:
>Note:
>- Network connection is required for the license to work.
>- "DLS2***" is a time-limited public trial license used in the sample.
->- You can request a 30-day trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=ios){:target="_blank"} link. Offline trial license is also available by [contacting us](https://www.dynamsoft.com/contact/){:target="_blank"}.
+>- You can request a 30-day offline trial license via the [Request a Trial License](https://www.dynamsoft.com/customer/license/trialLicense?product=cvs&utm_source=guide&package=ios){:target="_blank"} link.
### Initialize the Camera View and Control the Camera
diff --git a/programming/ios/primary-api/camera-enhancer-v2.2.3000.md b/programming/ios/primary-api/camera-enhancer-v2.2.3000.md
new file mode 100644
index 00000000..f55e25e8
--- /dev/null
+++ b/programming/ios/primary-api/camera-enhancer-v2.2.3000.md
@@ -0,0 +1,1056 @@
+---
+layout: default-layout
+title: DSCameraEnhancer - Dynamsoft Camera Enhancer API Reference
+description: The class DSCameraEnhancer of Dynamsoft Camera Enhancer defines the camera controlling APIs.
+keywords: camera enhancer, objective-c, swift
+needGenerateH3Content: true
+needAutoGenerateSidebar: true
+noTitleIndex: true
+---
+
+# DSCameraEnhancer
+
+The `DSCameraEnhancer` class is the primary class of Dynamsoft Camera Enhancer that defines the camera controlling APIs. It is a subclass of `DSImageSourceAdapter`.
+
+## Definition
+
+*Assembly:* DynamsoftCameraEnhancer.xcframework
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@interface DSCameraEnhancer: DSImageSourceAdapter
+```
+2.
+```swift
+class CameraEnhancer : ImageSourceAdapter
+```
+
+## Methods
+
+| Method | Description |
+|------- |-------------|
+| [`addListener`](#addlistener) | Add a DSVideoFrameListener to receive callback when video frames are output. |
+| [`removeListener`](#removelistener) | Remove a DSVideoFrameListener. |
+| [`takePhoto`](#takephoto) | Take a photo. |
+| [`getCameraPosition`](#getcameraposition) | Get the camera position. |
+| [`setZoomFactor`](#setzoomfactor) | Set the zoom factor of the camera. You can use getCapabilities to check the maximum available zoom factor. |
+| [`getZoomFactor`](#getzoomfactor) | Get the zoom factor of the camera. |
+| [`getFocusMode`](#getfocusmode) | Get the currently actived focus mode. |
+| [`initSystemSettingsFromFile`](#initsystemsettingsfromfile) | Initialize system settings from a JSON file. The system settings contain more precise camera control parameters. |
+| [`initSystemSettings`](#initsystemsettings) | Initialize system settings from a JSON string. The system settings contain more precise camera control parameters. |
+| [`resetSystemSettings`](#resetsystemsettings) | Reset the system settings to default value. |
+| [`initEnhancedSettingsFromFile`](#initenhancedsettingsfromfile) | Initialize enhanced settings from a JSON file. The enhanced settings contain auxiliary parameters of enhanced features. |
+| [`initEnhancedSettings`](#initenhancedsettings) | Initialize enhanced settings from a JSON string. The enhanced settings contain auxiliary parameters of enhanced features. |
+| [`outputEnhancedSettings`](#outputenhancedsettings) | Output the enhanced settings to a JSON string. The enhanced settings contain auxiliary parameters of enhanced features. |
+| [`outputEnhancedSettingsToFile`](#outputenhancedsettingstofile) | Output the enhanced settings to a JSON file. The enhanced settings contain auxiliary parameters of enhanced features. |
+| [`resetEnhancedSettings`](#resetenhancedsettings) | Reset the enhanced settings to default value. |
+| [`getCapabilities`](#getcapabilities) | Get the device capabilities including zoom factor, ISO, exposure time, etc. |
+| [`getCameraState`](#getcamerastate) | Tells you whether the camera is open, opening, closing, or closed - each state being represented by a member of the [CameraState]({{ site.dce-enums }}camera-state.html?lang=objc,swift) enumeration. |
+| [`setCameraStateListener`](#setcamerastatelistener) | Set a DSCameraStateListener to receive callback when the camera state changed. |
+| [`enableEnhancedFeatures`](#enableenhancedfeatures) | Enable the specified enhanced features. View DSEnhancedFeatures for more details. |
+| [`disableEnhancedFeatures`](#disableenhancedfeatures) | Disable the specified enhanced features. View DSEnhancedFeatures for more details. |
+| [`initWithView`](#initwithview) | Create an instance of DSCameraEnhancer. |
+| [`init`](#init) | Create an instance of DSCameraEnhancer. |
+| [`setScanRegion`](#setscanregion) | Set a scan region. The video frame is cropped based on the scan region. |
+| [`getScanRegion`](#getscanregion) | Get a scan region. |
+| [`open`](#open) | Open the camera. |
+| [`close`](#close) | Close the camera. |
+| [`setResolution`](#setresolution) | Set the resolution. If the targeting resolution is not available for your device, a closest available resolutionll be selected. |
+| [`getResolution`](#getresolution) | Get the current resolution. |
+| [`getAllCameras`](#getallcameras) | Get the IDs of all available cameras. |
+| [`selectCamera`](#selectcamera) | Select a camera with a camera ID. |
+| [`selectCameraWithPosition`](#selectcamerawithposition) | Select a camera with a camera position. |
+| [`getSelectedCamera`](#getselectedcamera) | Get the currently actived camera. |
+| [`getFrameRate`](#getframerate) | Get the frame rate. |
+| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
+| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
+| [`setFocus`](#setfocus) | Set the focus point of interest and trigger an one-off auto-focus. |
+| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Set the focus point of interest and trigger an one-off auto-focus. After the focus, you can either lock the focalngth or keep the continuous auto focus enabled by configuring the subsequent focus mode. |
+| [`convertRectToViewCoordinates`](#convertrecttoviewcoordinates) | Convert the coordinates of a [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) under video coordinate system to a CGRect under camera view coordinate system. |
+| [`convertPointToViewCoordinates`](#convertpointtoviewcoordinates) | Convert the coordinates of a CGPoint under video coordinate system to another CGPoint under camera view coordinate system. |
+
+## Attributes
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`imageCaptureDistanceMode`](#imagecapturedistancemode) | Set/get the capture distance property of the video frame. The capture distance property will be recorded by DSVideoFrameTag. |
+| [`autoZoomRange`](#autozoomrange) | Set/get the range of auto zoom. |
+| [`cameraView`](#cameraview) | Set/get the DSCameraView instance that bind with this DSCameraEnhancer instance. |
+
+## Inherited Methods
+
+The following methods are inherited from base class [`ImageSourceAdapter`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html)
+
+| Method | Description |
+| ------ | ----------- |
+| [`startFetching`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#startfetching) | Start fetching images from the source to the Video Buffer of ImageSourceAdapter. |
+| [`stopFetching`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#stopfetching) | Stop fetching images from the source to the Video Buffer of ImageSourceAdapter. |
+| [`getImage`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#getimage) | Get an image from the Video Buffer. |
+| [`setNextImageToReturn`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#setnextimagetoreturn) | Specify the next image that is returned by method getImage. |
+| [`hasImage`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#hasimage) | Check the availability of the specified image. |
+| [`addImageToBuffer`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#addimagetobuffer) | Adds an image to the buffer of the adapter. |
+| [`clearBuffer`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#clearbuffer) | Clears the image buffer. |
+| [`setErrorListener`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#seterrorlistener) | Registers a [`ImageSourceErrorListener`]({{ site.dcv_ios_api }}core/basic-structures/image-source-error-listener.html) to be used as a callback when an error occurs in the [`ImageSourceAdapter`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html). |
+
+## Inherited Properties
+
+The following properties are inherited from base class [`ImageSourceAdapter`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html)
+
+| Attributes | Type | Description |
+| ---------- | ---- | ----------- |
+| [`hasNextImageToFetch`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#hasnextimagetofetch) | *BOOL* |Determines whether there are more images left to fetch. |
+| [`maxImageCount`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#maximagecount) | *NSUInteger* | The property defines the maximum capability of the Video Buffer. |
+| [`bufferOverflowProtectionMode`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#bufferoverflowprotectionmode) | *DSBufferOverflowProtectionMode* | Sets a mode that determines the action to take when there is a new incoming image and the buffer is full. You can either block the Video Buffer or push out the oldest image and append a new one. |
+| [`imageCount`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#imagecount) | *NSUInteger* | The property defines current image count in the Video Buffer. |
+| [`bufferEmpty`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#bufferempty) | *BOOL* | The read only property indicates whether the Video Buffer is empty. |
+| [`colourChannelUsageType`]({{ site.dcv_ios_api }}core/basic-structures/image-source-adapter.html#colourchannelusagetype) | *colourChannelUsageType* | The usage type of a color channel in an image. |
+
+### addListener
+
+Add a DSVideoFrameListener to receive callback when video frames are output.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)addListener:(nonnull id)listener NS_SWIFT_NAME(addListener(_:));
+```
+2.
+```swift
+func addListener(_ listener: DSVideoFrameListener)
+```
+
+**Parameters**
+
+`listener`: A delegate object of DSVideoFrameListener to receive video frame as a DSImageData.
+
+### removeListener
+
+Remove a DSVideoFrameListener.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)removeListener:(nonnull id)listener NS_SWIFT_NAME(removeListener(_:));
+```
+2.
+```swift
+func removeListener(_ listener: DSVideoFrameListener)
+```
+
+**Parameters**
+
+`listener`: A delegate object of VideoFrameListener.
+
+### takePhoto
+
+Take a photo.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)takePhoto:(DSPhotoListener)photoListener;
+```
+2.
+```swift
+func takePhoto(_ photoListener: PhotoListener)
+```
+
+**Parameters**
+
+`photolistener`: A delegate object of DSPhotoListener to receive the captured photo.
+
+### getCameraPosition
+
+Get the camera position.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (DSCameraPosition)getCameraPosition;
+```
+2.
+```swift
+func getCameraPosition() -> CameraPosition
+```
+
+**Return Value**
+
+The camera position.
+
+### setZoomFactor
+
+Set the zoom factor of the camera. You can use getCapabilities to check the maximum available zoom factor.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setZoomFactor:(CGFloat)factor;
+```
+2.
+```swift
+func setZoomFactor(_ factor: CGFloat)
+```
+
+**Parameters**
+
+`factor`: The zoom factor.
+
+### getZoomFactor
+
+Get the zoom factor of the camera.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (CGFloat)getZoomFactor;
+```
+2.
+```swift
+func getZoomFactor() -> CGFloat
+```
+
+**Return Value**
+
+The zoom factor.
+
+### getFocusMode
+
+Get the currently actived focus mode.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (DSFocusMode)getFocusMode;
+```
+2.
+```swift
+func getFocusMode() -> FocusMode
+```
+
+**Return Value**
+
+The focus mode.
+
+### initSystemSettingsFromFile
+
+Initialize system settings from a JSON file. The system settings contain more precise camera control parameters.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)initSystemSettingsFromFile:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(initSettingsFromFile(_:));
+```
+2.
+```swift
+func initSystemSettingsFromFile(_ filePath: String) throws -> BOOL
+```
+
+**Parameters**
+
+`filePath`: The path of the JSON file.
+
+`error`: A NSError pointer. An error occurs when the file path is not available or the JSON datacludes invalid keys or values.
+
+**Return Value**
+
+A bool value that indicates whether the system settings are initialized successfully.
+
+### initSystemSettings
+
+Initialize system settings from a JSON string. The system settings contain more precise camera control parameters.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)initSystemSettings:(NSString*)JsonString error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(initSettings(_:));
+```
+2.
+```swift
+func initSystemSettings(_ filePath: String) throws -> BOOL
+```
+
+**Parameters**
+
+`JsonString`: The JSON string.
+
+`error`: A NSError pointer. An error occurs when the JSON data includes invalid keys or values.
+
+**Return Value**
+
+A bool value that indicates whether the system settings are initialized successfully.
+
+### resetSystemSettings
+
+Reset the system settings to default value.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)resetSystemSettings;
+```
+2.
+```swift
+func resetSystemSettings()
+```
+
+### initEnhancedSettingsFromFile
+
+Initialize enhanced settings from a JSON file. The enhanced settings contain auxiliary parameters of enhanced features.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)initEnhancedSettingsFromFile:(NSString*)filePath error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(initSettingsFromFile(_:));
+```
+2.
+```swift
+func initEnhancedSettingsFromFile(_ filePath: String) throws -> BOOL
+```
+
+**Parameters**
+
+`filePath`: The JSON string.
+
+`error`: A NSError pointer. An error occurs when the file path is not available or the JSON data includes invalid keys or values.
+
+**Return Value**
+
+A bool value that indicates whether the enhanced settings are initialized successfully.
+
+### initEnhancedSettings
+
+Initialize enhanced settings from a JSON string. The enhanced settings contain auxiliary parameters of enhanced features.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)initEnhancedSettings:(NSString*)JsonString error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(initSettings(_:));
+```
+2.
+```swift
+func initEnhancedSettings(_ JsonString: String) throws -> BOOL
+```
+
+**Parameters**
+
+`JsonString`: The JSON string.
+
+`error`: A NSError pointer. An error occurs when the JSON data includes invalid keys or values.
+
+**Return Value**
+
+A bool value that indicates whether the enhanced settings are initialized successfully.
+
+### outputEnhancedSettings
+
+Output the enhanced settings to a JSON string. The enhanced settings contain auxiliary parameters of enhanced features.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (nullable NSString *)outputEnhancedSettings:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(outputSettings());
+```
+2.
+```swift
+func outputEnhancedSettings() throws -> String
+```
+
+**Parameters**
+
+`error`: A NSError pointer. An error occurs when the JSON data includes invalid keys or values.
+
+**Return Value**
+
+The enhanced settings in a JSON string.
+
+### outputEnhancedSettingsToFile
+
+Output the enhanced settings to a JSON file. The enhanced settings contain auxiliary parameters of enhanced features.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)outputEnhancedSettingsToFile:(NSString *)file error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(outputSettingsToFile(_:templateName:));
+```
+2.
+```swift
+func outputEnhancedSettingsToFile(_ file: String) throws -> String
+```
+
+**Parameters**
+
+`file` The path that you want to output the JSON file.
+
+`error` A NSError pointer. An error occurs when the file path is not available.
+
+**Return Value**
+
+A bool value that indicates whether the enhanced settings are output successfully.
+
+### resetEnhancedSettings
+
+Reset the enhanced settings to default value.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)resetEnhancedSettings;
+```
+2.
+```swift
+func resetEnhancedSettings()
+```
+
+### getCapabilities
+
+Get the device capabilities including zoom factor, ISO, exposure time, etc.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (DSCapabilities *)getCapabilities;
+```
+2.
+```swift
+func getCapabilities() -> Capabilities
+```
+
+**Return Value**
+
+A [DSCapabilities](../auxiliary-api/capabilities.md) object.
+
+### getCameraState
+
+Tells you whether the camera is open, opening, closing, or closed - each state being represented by a member of the [CameraState]({{ site.dce-enums }}camera-state.html?lang=objc,swift) enumeration.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (DSCameraState)getCameraState;
+```
+2.
+```swift
+func getCameraState() -> CameraState
+```
+
+**Return Value**
+
+The camera state.
+
+### setCameraStateListener
+
+Set a [DSCameraStateListener](../auxiliary-api/protocol-dcecamerastatelistener.md) to receive callback when the camera state changes.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setCameraStateListener:(nullable id)listener;
+```
+2.
+```swift
+func setCameraStateListener(_ listener: CameraStateListener)
+```
+
+**Parameters**
+
+`listener`: A delegate object of DSCameraStateListener to the camera state.
+
+### enableEnhancedFeatures
+
+Enable the specified enhanced features. View [DSEnhancedFeatures]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift) to learn about these enhanced features. By default, these enhanced features are all disabled.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (bool)enableEnhancedFeatures:(NSInteger)enhancedFeatures;
+```
+2.
+```swift
+func enableEnhancedFeatures(_ enhancedFeatures: Int) -> BOOL
+```
+
+**Parameters**
+
+`enhancedFeatures`: A combined value of `DSEnhancedFeatures` which indicates a series of enhanced features.
+
+**Return Value**
+
+A bool value that indicates whether the enhanced features are enabled successfully.
+
+### disableEnhancedFeatures
+
+Disable any enhanced features that have been previously enabled. View [DSEnhancedFeatures]({{ site.dce-enums }}enhanced-features.html?lang=objc,swift) to learn about these enhanced features.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)disableEnhancedFeatures:(NSInteger)enhancedFeatures;
+```
+2.
+```swift
+func disableEnhancedFeatures(_ enhancedFeatures: Int)
+```
+
+**Parameters**
+
+`enhancedFeatures`: A combined value of `DSEnhancedFeatures` which indicates a series of enhanced features.
+
+### initWithView
+
+Create an instance of DSCameraEnhancer with a [DSCameraView](../auxiliary-api/dcecameraview.md) object.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (instancetype)initWithView:(DSCameraView *)view NS_SWIFT_NAME(init(view:));
+```
+2.
+```swift
+init(view: CameraView)
+```
+
+**Parameters**
+
+`view` A DSCameraView instance.
+
+**Return Value**
+
+An instance of DSCameraEnhancer.
+
+### init
+
+Create an instance of DSCameraEnhancer.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (instancetype)init;
+```
+2.
+```swift
+init()
+```
+
+**Return Value**
+
+An instance of DSCameraEnhancer.
+
+### setScanRegion
+
+Set a scan region. The video frame is cropped based on the scan region. To learn the full code to setting a scan region, please refer to the [scan region](../guide/scan-region.md) article.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)setScanRegion:(DSRect* _Nullable)scanRegion error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(setScanRegion(_:));
+```
+2.
+```swift
+func setScanRegion(_ scanRegion: DSRect) -> BOOL
+```
+
+**Parameters**
+
+`scanRegion`: A [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) object.
+
+`error`: A NSError pointer. An error occurs when the [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) data is invalid.
+
+**Return Value**
+
+A bool value that indicates whether the scan region has been successfully set or not.
+
+### getScanRegion
+
+Get the scan region if one has been set.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (nullable DSRect*)getScanRegion;
+```
+2.
+```swift
+func getScanRegion() -> DSRect
+```
+
+**Return Value**
+
+A [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) object that represent the scan region area.
+
+### open
+
+Open the camera.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)open;
+```
+2.
+```swift
+func open()
+```
+
+### close
+
+Close the camera.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)close;
+```
+2.
+```swift
+func close()
+```
+
+### setResolution
+
+Set the resolution. If the targeted resolution is not available for your device, the closest available resolution will be selected.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setResolution:(DSResolution)resolution;
+```
+2.
+```swift
+func setResolution(_ resolution: Resolution)
+```
+
+**Parameters**
+
+`resolution` One of the DSResolution value.
+
+### getResolution
+
+Get the current resolution.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSString*)getResolution;
+```
+2.
+```swift
+func getResolution() -> Resolution
+```
+
+**Return Value**
+
+The current resolution.
+
+### getAllCameras
+
+Get the IDs of all available cameras.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSArray*)getAllCameras;
+```
+2.
+```swift
+func getAllCameras() -> [String]
+```
+
+**Return Value**
+
+An array of camera IDs.
+
+### selectCamera
+
+Select a camera with a camera ID.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(selectCamera(_:));
+```
+2.
+```swift
+func selectCamera(_ cameraId: String) -> BOOL
+```
+
+**Parameters**
+
+`position`: One of the Camera IDs.
+
+`error`: A NSError pointer. An error occurs when failed to switch the camera.
+
+**Return Value**
+
+A bool value that indicates whether the camera selection is successful.
+
+### selectCameraWithPosition
+
+Select a camera with a camera position.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)selectCameraWithPosition:(DSCameraPosition)position error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(selectCameraWithPosition(_:));
+```
+2.
+```swift
+func selectCameraWithPosition(_ position: CameraPosition) -> BOOL
+```
+
+**Parameters**
+
+`position`: One of the DSCameraPosition value.
+
+`error`: A NSError pointer. An error occurs when failed to switch the camera.
+
+**Return Value**
+
+A bool value that indicates whether the camera selection is successful.
+
+### getSelectedCamera
+
+Get the currently actived camera.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSString*)getSelectedCamera;
+```
+2.
+```swift
+func getSelectedCamera() -> String
+```
+
+**Return Value**
+
+The ID of the currently actived camera.
+
+### getFrameRate
+
+Get the frame rate.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSInteger)getFrameRate;
+```
+2.
+```swift
+func getFrameRate() -> Int
+```
+
+**Return Value**
+
+The current frame rate.
+
+### turnOnTorch
+
+Turn on the torch.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)turnOnTorch;
+```
+2.
+```swift
+func turnOnTorch()
+```
+
+### turnOffTorch
+
+Turn off the torch.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)turnOffTorch;
+```
+2.
+```swift
+func turnOffTorch()
+```
+
+### setFocus
+
+Set the focus point of interest and trigger an one-off auto-focus.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setFocus:(CGPoint)focusPoint;
+```
+2.
+```swift
+func setFocus(_ focusPoint: CGPoint)
+```
+
+**Parameters**
+
+`focusPoint`: The focus point of interest. The coordinate base of the point is "image".
+
+### setFocus(subsequentFocusMode)
+
+Set the focus point of interest and trigger an one-off auto-focus. After the focus, you can either lock the focalngth or keep the continuous auto focus enabled by configuring the subsequent focus mode.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (void)setFocus:(CGPoint)focusPoint focusMode:(DSFocusMode)subsequentFocusMode;
+```
+2.
+```swift
+func setFocus(_ focusPoint: CGPoint, subsequentFocusMode: FocusMode)
+```
+
+**Parameters**
+
+`focusPoint`: The focus point of interest. The coordinate base of the point is "image".
+
+`subsequentFocusMode`: The subsequent focus mode.
+
+### convertRectToViewCoordinates
+
+Convert the coordinates of a [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) under video coordinate system to a CGRect under camera view coordinate system.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (CGRect)convertRectToViewCoordinates:(DSRect)videoRect;
+```
+2.
+```swift
+func convertRectToViewCoordinates(_ videoRect: DSRect) -> CGRect
+```
+
+**Parameters**
+
+`videoRect`: The [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) that you want to convert.
+
+**Return Value**
+
+A CGRect (coordinate measured in PT) converted from the [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html).
+
+**Code Snippet**
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+CGRect rect = [cameraView convertRectToViewCoordinates:videoRect];
+```
+2.
+```swift
+let rect = cameraView.convertRectToViewCoordinates(videoRect)
+```
+
+### convertPointToViewCoordinates
+
+Convert the coordinates of a CGPoint under video coordinate system to another CGPoint under camera view coordinate system.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (CGPoint)convertPointToViewCoordinates:(CGPoint)point;
+```
+2.
+```swift
+func convertPointToViewCoordinates(_ point: CGPoint) -> CGPoint
+```
+
+**Parameters**
+
+`point`: The CGPoint that you want to convert.
+
+**Return Value**
+
+A CGPoint (coordinate measured in PT) converted from the video CGPoint measured in PT.
+
+**Code Snippet**
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+CGPoint convertedPoint = [cameraView convertPointToViewCoordinates:videoPoint];
+```
+2.
+```swift
+let convertedPoint = cameraView.convertPointToViewCoordinates(point)
+```
+
+### imageCaptureDistanceMode
+
+Set/get the capture distance property of the video frame. The capture distance property will be recorded by DSVideoFrameTag.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, assign) DSImageCaptureDistanceMode imageCaptureDistanceMode;
+```
+2.
+```swift
+var imageCaptureDistanceMode: CGPoint { get set }
+```
+
+### autoZoomRange
+
+Set/get the range of auto zoom.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, assign) UIFloatRange autoZoomRange;
+```
+2.
+```swift
+var autoZoomRange: UIFloatRange { get set }
+```
+
+### cameraView
+
+Set/get the DSCameraView instance that bind with this DSCameraEnhancer instance.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+@property (nonatomic, assign) DSCameraView * cameraView;
+```
+2.
+```swift
+var cameraView: CameraView { get set }
+```
diff --git a/programming/ios/primary-api/camera-enhancer.md b/programming/ios/primary-api/camera-enhancer.md
index f55e25e8..73fb3256 100644
--- a/programming/ios/primary-api/camera-enhancer.md
+++ b/programming/ios/primary-api/camera-enhancer.md
@@ -61,10 +61,7 @@ class CameraEnhancer : ImageSourceAdapter
| [`close`](#close) | Close the camera. |
| [`setResolution`](#setresolution) | Set the resolution. If the targeting resolution is not available for your device, a closest available resolutionll be selected. |
| [`getResolution`](#getresolution) | Get the current resolution. |
-| [`getAllCameras`](#getallcameras) | Get the IDs of all available cameras. |
-| [`selectCamera`](#selectcamera) | Select a camera with a camera ID. |
| [`selectCameraWithPosition`](#selectcamerawithposition) | Select a camera with a camera position. |
-| [`getSelectedCamera`](#getselectedcamera) | Get the currently actived camera. |
| [`getFrameRate`](#getframerate) | Get the frame rate. |
| [`turnOnTorch`](#turnontorch) | Turn on the torch. |
| [`turnOffTorch`](#turnofftorch) | Turn off the torch. |
@@ -72,6 +69,9 @@ class CameraEnhancer : ImageSourceAdapter
| [`setFocus(subsequentFocusMode)`](#setfocussubsequentfocusmode) | Set the focus point of interest and trigger an one-off auto-focus. After the focus, you can either lock the focalngth or keep the continuous auto focus enabled by configuring the subsequent focus mode. |
| [`convertRectToViewCoordinates`](#convertrecttoviewcoordinates) | Convert the coordinates of a [`DSRect`]({{ site.dcv_ios_api }}core/basic-structures/rect.html) under video coordinate system to a CGRect under camera view coordinate system. |
| [`convertPointToViewCoordinates`](#convertpointtoviewcoordinates) | Convert the coordinates of a CGPoint under video coordinate system to another CGPoint under camera view coordinate system. |
+| [`getAllCameras`](#getallcameras) | Get the IDs of all available cameras. |
+| [`selectCamera`](#selectcamera) | Select a camera with a camera ID. |
+| [`getSelectedCamera`](#getselectedcamera) | Get the currently actived camera. |
## Attributes
@@ -729,54 +729,6 @@ func getResolution() -> Resolution
The current resolution.
-### getAllCameras
-
-Get the IDs of all available cameras.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSArray*)getAllCameras;
-```
-2.
-```swift
-func getAllCameras() -> [String]
-```
-
-**Return Value**
-
-An array of camera IDs.
-
-### selectCamera
-
-Select a camera with a camera ID.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (BOOL)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(selectCamera(_:));
-```
-2.
-```swift
-func selectCamera(_ cameraId: String) -> BOOL
-```
-
-**Parameters**
-
-`position`: One of the Camera IDs.
-
-`error`: A NSError pointer. An error occurs when failed to switch the camera.
-
-**Return Value**
-
-A bool value that indicates whether the camera selection is successful.
-
### selectCameraWithPosition
Select a camera with a camera position.
@@ -804,27 +756,6 @@ func selectCameraWithPosition(_ position: CameraPosition) -> BOOL
A bool value that indicates whether the camera selection is successful.
-### getSelectedCamera
-
-Get the currently actived camera.
-
-
->- Objective-C
->- Swift
->
->1.
-```objc
-- (NSString*)getSelectedCamera;
-```
-2.
-```swift
-func getSelectedCamera() -> String
-```
-
-**Return Value**
-
-The ID of the currently actived camera.
-
### getFrameRate
Get the frame rate.
@@ -1054,3 +985,78 @@ Set/get the DSCameraView instance that bind with this DSCameraEnhancer instance.
```swift
var cameraView: CameraView { get set }
```
+
+### getAllCameras
+
+> This method is deprecated.
+
+Get the IDs of all available cameras.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSArray*)getAllCameras;
+```
+2.
+```swift
+func getAllCameras() -> [String]
+```
+
+**Return Value**
+
+An array of camera IDs.
+
+### selectCamera
+
+> This method is deprecated.
+
+Select a camera with a camera ID.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (BOOL)selectCamera:(NSString*)cameraId error:(NSError * _Nullable * _Nullable)error NS_SWIFT_NAME(selectCamera(_:));
+```
+2.
+```swift
+func selectCamera(_ cameraId: String) -> BOOL
+```
+
+**Parameters**
+
+`position`: One of the Camera IDs.
+
+`error`: A NSError pointer. An error occurs when failed to switch the camera.
+
+**Return Value**
+
+A bool value that indicates whether the camera selection is successful.
+
+### getSelectedCamera
+
+> This method is deprecated.
+
+Get the currently actived camera.
+
+
+>- Objective-C
+>- Swift
+>
+>1.
+```objc
+- (NSString*)getSelectedCamera;
+```
+2.
+```swift
+func getSelectedCamera() -> String
+```
+
+**Return Value**
+
+The ID of the currently actived camera.
diff --git a/programming/ios/release-note/index.md b/programming/ios/release-note/index.md
deleted file mode 100644
index 4bbf3cd7..00000000
--- a/programming/ios/release-note/index.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-layout: default-layout
-title: iOS SDK Release Note - Dynamsoft Camera Enhancer
-description: Index of iOS release notes - Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS Release Note
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS Release Note
-permalink: /programming/ios/release-note/index.html
----
-
-# Dynamsoft Camera Enhancer iOS SDK - Release Notes
-
-- [4.2.10 (05/15/2024)](release-notes-4.x.html#4210-05152024)
-- [4.2.1 (04/16/2024)](release-notes-4.x.html#421-04162024)
-- [4.2.0 (03/07/2024)](release-notes-4.x.html#420-03072024)
-- [4.0.2 (12/07/2023)](release-notes-4.x.html#402-12072023)
-- [4.0.1 (10/26/2023)](release-notes-4.x.html#401-10262023)
-- [4.0.0 (08/10/2023)](release-notes-4.x.html#400-08102023)
-- [3.0.3 (05/24/2023)](release-notes-3.x.html#303-05242023)
-- [3.0.2 (02/02/2023)](release-notes-3.x.html#302-02022023)
-- [3.0.1 (09/29/2022)](release-notes-3.x.html#301-09292022)
-- [3.0.0 (06/21/2022)](release-notes-3.x.html#300-06212022)
-- [2.3.21 (03/21/2024)](release-notes-2.x.html#2320-03212024)
-- [2.3.20 (03/27/2023)](release-notes-2.x.html#2320-03272023)
-- [2.3.12 (03/16/2023)](release-notes-2.x.html#2312-03162023)
-- [2.3.11 (01/10/2023)](release-notes-2.x.html#2311-01102023)
-- [2.3.10 (12/13/2022)](release-notes-2.x.html#2310-12132022)
-- [2.3.5 (11/15/2022)](release-notes-2.x.html#235-11152022)
-- [2.3.4 (11/04/2022)](release-notes-2.x.html#234-11042022)
-- [2.3.3 (09/22/2022)](release-notes-2.x.html#233-09222022)
-- [2.3.2 (08/02/2022)](release-notes-2.x.html#232-08022022)
-- [2.3.1 (07/11/2022)](release-notes-2.x.html#231-07112022)
-- [2.3.0 (06/28/2022)](release-notes-2.x.html#230-06282022)
-- [2.1.4 (05/26/2022)](release-notes-2.x.html#214-05262022)
-- [2.1.3 (03/02/2022)](release-notes-2.x.html#213-03022022)
-- [2.1.1 (12/28/2021)](release-notes-2.x.html#211-12282021)
-- [2.1.0 (12/16/2021)](release-notes-2.x.html#210-12162021)
-- [2.0.0 (10/19/2021)](release-notes-2.x.html#200-10192021)
-- [1.0.3 (07/20/2021)](release-notes-1.x.html#103-07202021)
-- [1.0.1 (06/10/2021)](release-notes-1.x.html#101-06102021)
-- [1.0.0 (04/29/2021)](release-notes-1.x.html#100-04292021)
diff --git a/programming/ios/release-note/release-notes-4.x.md b/programming/ios/release-note/release-notes-4.x.md
deleted file mode 100644
index 502ba616..00000000
--- a/programming/ios/release-note/release-notes-4.x.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-layout: default-layout
-title: iOS 4.x Release Notes - Dynamsoft Camera Enhancer
-description: This is the documentation - iOS 4.x Release Notes page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, iOS 4.x Release Notes
-needAutoGenerateSidebar: true
-noTitleIndex: true
-breadcrumbText: iOS 4.x Release Notes
-permalink: /programming/ios/release-note/release-notes-4.x.html
----
-
-# Release Notes - iOS 4.x
-
-## 4.2.10 (05/15/2024)
-
-* Small fixes and tweaks.
-
-## 4.2.1 (04/16/2024)
-
-* Updated the privacy list of the library.
-
-## 4.2.0 (03/07/2024)
-
-* Internal changes to be compatible with `DynamsoftCaptureVisionRouter` v2.2.10.
-
-## 4.0.2 (12/07/2023)
-
-* Some internal changes.
-
-## 4.0.1 (10/26/2023)
-
-* Added a new method `setDrawingItemClickListener` to class `CameraView` & `ImageEditorView`. You can set a `DrawingItemClickListener` to the view to monitor the click events of the `DrawingItems`.
-* Fixed a bug where `getDrawingItems` returns the previous coordinate information when `DrawingItems` are edited on the `ImageEditorView`.
-* Applied some internal changes to the resolution control and scan region UI setting APIs.
-
-## 4.0.0 (08/10/2023)
-
-* Refactored the camera-controlling APIs of the [`CameraEnhancer`]({{ site.ios }}primary-api/camera-enhancer.html) class.
-* Refactored the UI configuration APIs.
- * Updated the scan region setting APIs of the [`CameraView`]({{ site.ios }}auxiliary-api/dcecameraview.html) class. Added supports of scan region mask style setting and scan laser setting.
- * Added new features to set the coordinate base of the [`DrawingItems`]({{ site.ios }}auxiliary-api/drawingitem.html) and tip messages.
- * Other minor changes on the API names and behaviors.
-* Added tip configuration APIs to display tip messages.
-* A new class [`Note`]({{ site.ios }}auxiliary-api/note.html) has been added to enable DrawingItems to carry additional information.
diff --git a/release-notes/index.md b/release-notes/index.md
deleted file mode 100644
index 5b47be08..00000000
--- a/release-notes/index.md
+++ /dev/null
@@ -1,121 +0,0 @@
----
-layout: default-layout
-title: Release Note - Dynamsoft Camera Enhancer
-description: This is the documentation - Release Note page of Dynamsoft Camera Enhancer.
-keywords: Camera Enhancer, Release Note
-needAutoGenerateSidebar: true
-needGenerateH3Content: false
-noTitleIndex: true
-breadcrumbText: Release Note
----
-
-# Release Notes
-
-## 3.0
-
-> First released: 07-27-2022
-
-### Highlights
-
-* Added flexible shape drawing logic.
-
-| Versions | Available Editions |
-| -------- | ------------------ |
-| 3.3.4 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#334-04172023) |
-| 3.3.3 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#333-04112023) |
-| 3.3.2 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#332-04042023) |
-| 3.3.1 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#331-02202023) |
-| 3.3.0 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#330-02092023) |
-| 3.2.0 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#320-12132022) |
-| 3.1.0 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#310-10202022) |
-| 3.0.1 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#301-08042022) |
-| 3.0.0 | [JavaScript]({{ site.js-rn }}release-notes-3.x.html#300-07272022) |
-
-
-
-## 2.3
-
-> First released: 03-21-2022
-
-### Highlights
-
-{%- include release-notes/product-highlight-2.3.0.md -%}
-
-| Versions | Available Editions |
-| -------- | ------------------ |
-| 2.3.20 | [iOS]({{ site.ios-release-note }}release-notes-2.x.html#2320-03272023) |
-| 2.3.12 | [iOS]({{ site.ios-release-note }}release-notes-2.x.html#2312-03162023) |
-| 2.3.11 | [Android]({{ site.android-release-note }}release-notes-2.x.html#2311-02142023) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#2311-01102023) |
-| 2.3.10 | [Android]({{ site.android-release-note }}release-notes-2.x.html#2310-12132022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#2310-12132022) |
-| 2.3.5 | [Android]({{ site.android-release-note }}release-notes-2.x.html#235-11042022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#235-11152022) |
-| 2.3.4 | [Android]({{ site.android-release-note }}release-notes-2.x.html#234-09222022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#234-11042022) |
-| 2.3.3 | [Android]({{ site.android-release-note }}release-notes-2.x.html#233-08182022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#233-09222022) |
-| 2.3.2 | [JavaScript]({{ site.js-rn }}release-notes-2.x.html#232-03282022) / [Android]({{ site.android-release-note }}release-notes-2.x.html#232-08022022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#232-08022022) |
-| 2.3.1 | [JavaScript]({{ site.js-rn }}release-notes-2.x.html#231-03212022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#231-07112022) |
-| 2.3.0 | [Android]({{ site.android-release-note }}release-notes-2.x.html#230-06282022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#230-06282022) |
-
-
-
-## 2.1
-
-> First released: 12-16-2021
-
-### Highlights
-
-* Added class scan region configuration APIs and `RegionDefinition` for users to set the region of interest. The frames will be cropped based on the scan region to accelerate further frame processing.
-* Fast mode setting parameters are opened for users to set via `updateAdvancedSettings`. The fast mode will be more flexible.
-
-| Versions | Available Editions |
-| -------- | ------------------ |
-| 2.1.4 | [Android]({{ site.android-release-note }}release-notes-2.x.html#214-05262022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#214-05262022) |
-| 2.1.3 | [Android]({{ site.android-release-note }}release-notes-2.x.html#213-03022022) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#213-03022022) |
-| 2.1.1 | [Android]({{ site.android-release-note }}release-notes-2.x.html#211-12282021) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#211-12282021) |
-| 2.1.0 | [Android]({{ site.android-release-note }}release-notes-2.x.html#210-12162021) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#210-12162021) / [JavaScript]({{ site.js-rn }}release-notes-2.x.html#210-01202022)|
-
-
-
-## 2.0
-
-> First released: 10-19-2021
-
-### Highlights
-
-* Simplified the usage of camera-control APIs. The new APIs are easier to use and covers more scenarios.
-* Simplified the usage of camera enhancer features. Users can enable all required features via the method `enableFeatures` by inputting the combined enumeration value.
-* Extended the features of `DCECameraView`. Users can add and personalize the overlays and viewfinder on the camera UI.
-* Extended the features of `DCEFrame`. `DCEFrame` will store more frame information to cover more scenarios. In addition, the method `toBitmap/toUIImage` is added to enable users to convert `DCEFrame` to a system built-in image object.
-
-| Versions | Available Editions |
-| -------- | ------------------ |
-| 2.0.0 | [JavaScript]({{ site.js-rn }}release-notes-2.x.html#200-10202021) / [Android]({{ site.android-release-note }}release-notes-2.x.html#200-10192021) / [iOS]({{ site.ios-release-note }}release-notes-2.x.html#200-10192021) |
-
-
-
-
-
-## 1.x Versions
-
-
-
-
-
-### 1.0
-
-> First released: 04-29-2021
-
-#### Highlights
-
-* Dynamsoft Camera Enhancer is released. The following features are available:
- + Video Buffer
- + Frame Filter
- + Fast Mode
- + Auto-Zoom
- + Enhanced-Focus
-
-| Versions | Available Editions |
-| -------- | ------------------ |
-| 1.0.3 | [Android]({{ site.android-release-note }}release-notes-1.x.html#103-07202021) / [iOS]({{ site.ios-release-note }}release-notes-1.x.html#103-07202021) |
-| 1.0.1 | [Android]({{ site.android-release-note }}release-notes-1.x.html#101-06102021) / [iOS]({{ site.ios-release-note }}release-notes-1.x.html#101-06102021) |
-| 1.0.0 | [Android]({{ site.android-release-note }}release-notes-1.x.html#100-04292021) / [iOS]({{ site.ios-release-note }}release-notes-1.x.html#100-04292021) |
-
-
diff --git a/search.md b/search.md
index 3b2af767..f29b837c 100644
--- a/search.md
+++ b/search.md
@@ -3,4 +3,5 @@ layout: search-page
title: Dynamsoft Camera Enhancer SDK Documentation Search
keywords: Dynamsoft Camera Enhancer SDK Documentation Search
breadcrumbText: HomePage
+cx: 90b37820e9a5e454e
---
\ No newline at end of file