1e41f4b71Sopenharmony_ci# Camera Development Preparations 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ciThe main process of camera application development includes development preparations, device input management, session management, preview, photographing, and video recording. 4e41f4b71Sopenharmony_ci 5e41f4b71Sopenharmony_ciBefore developing a camera application, you must request camera-related permissions (as described in the table below) to ensure that the application has the permission to access the camera hardware and other services. Before requesting permissions, ensure that the [basic principles for using permissions](../../security/AccessToken/app-permission-mgmt-overview.md#basic-principles-for-using-permissions) are met. 6e41f4b71Sopenharmony_ci 7e41f4b71Sopenharmony_ci 8e41f4b71Sopenharmony_ci| Permission| Description| Authorization Mode| 9e41f4b71Sopenharmony_ci| -------- | -------- | -------- | 10e41f4b71Sopenharmony_ci| ohos.permission.CAMERA | Allows an application to use the camera to take photos and record videos.| user_grant | 11e41f4b71Sopenharmony_ci| ohos.permission.MICROPHONE | Allows an application to access the microphone.<br>This permission is required only if the application is used to record audio.| user_grant | 12e41f4b71Sopenharmony_ci| ohos.permission.WRITE_MEDIA | Allows an application to read media files from and write media files into the user's external storage. This permission is optional.| user_grant | 13e41f4b71Sopenharmony_ci| ohos.permission.READ_MEDIA | Allows an application to read media files from the user's external storage. This permission is optional.| user_grant | 14e41f4b71Sopenharmony_ci| ohos.permission.MEDIA_LOCATION | Allows an application to access geographical locations in the user's media file. This permission is optional.| user_grant | 15e41f4b71Sopenharmony_ci 16e41f4b71Sopenharmony_ci 17e41f4b71Sopenharmony_ciAfter configuring the permissions in the **module.json5** file, the application must call [abilityAccessCtrl.requestPermissionsFromUser](../../reference/apis-ability-kit/js-apis-abilityAccessCtrl.md#requestpermissionsfromuser9) to check whether the required permissions are granted. If not, request the permissions from the user by displaying a dialog box. 18e41f4b71Sopenharmony_ci 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_ciFor details about how to request and verify the permissions, see [Requesting User Authorization](../../security/AccessToken/request-user-authorization.md). 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci 23e41f4b71Sopenharmony_ci> **NOTE** 24e41f4b71Sopenharmony_ci> Even if the user has granted a permission, the application must check for the permission before calling an API protected by the permission. It should not persist the permission granted status, because the user can revoke the permission through the system application **Settings**. 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci## How to Develop 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ciYou can use either ArkTS or C++ APIs for camera development. 29e41f4b71Sopenharmony_ci 30e41f4b71Sopenharmony_ci| Procedure| ArkTS Development| C++ Development| 31e41f4b71Sopenharmony_ci| ------- | ------------- | --------- | 32e41f4b71Sopenharmony_ci| Input management| [Device Input Management (ArkTS)](camera-device-input.md)| [Device Input Management (C/C++)](native-camera-device-input.md)| 33e41f4b71Sopenharmony_ci| Session management| [Camera Session Management (ArkTS)](camera-session-management.md)| [Camera Session Management (C/C++)](native-camera-session-management.md)| 34e41f4b71Sopenharmony_ci| Preview | [Camera Preview (ArkTS)](camera-preview.md)| [Camera Preview (C/C++)](native-camera-preview.md)| 35e41f4b71Sopenharmony_ci| Secondary processing of preview streams| - | [Secondary Processing of Preview Streams (C/C++)](native-camera-preview-imageReceiver.md)| 36e41f4b71Sopenharmony_ci| Photographing| [Camera Photographing (ArkTS)](camera-shooting.md)| [Camera Photographing (C/C++)](native-camera-shooting.md)| 37e41f4b71Sopenharmony_ci| Deferred photo delivery| [Deferred Photo Delivery (ArkTS)](camera-deferred-capture.md)| - | 38e41f4b71Sopenharmony_ci| Moving photos| [Moving Photos (ArkTS)](camera-moving-photo.md)| - | 39e41f4b71Sopenharmony_ci| Recording| [Camera Recording (ArkTS)](camera-recording.md)| [Camera Recording (C/C++)](native-camera-recording.md)| 40e41f4b71Sopenharmony_ci| Secondary processing of video streams| - | [Secondary Processing of Video Streams (C/C++)](native-camera-recording-imageReceiver.md)| 41e41f4b71Sopenharmony_ci| Metadata| [Camera Metadata (ArkTS)](camera-metadata.md)| [Camera Metadata (C/C++)](native-camera-metadata.md)| 42