1# Camera Development Preparations 2 3The main process of camera application development includes development preparations, device input management, session management, preview, photo capture, and video recording. 4 5## Requesting Permissions 6 7Before 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. 8 9- To use the camera for photo capture, request the ohos.permission.CAMERA permission. 10- To use the microphone to record audio, request the ohos.permission.MICROPHONE permission. 11- To display location information in photos or videos captured, request the ohos.permission.MEDIA_LOCATION permission. 12 13All these permissions must be authorized by users through a dialog box. For details about how to request and verify the permissions, see [Requesting User Authorization](../../security/AccessToken/request-user-authorization.md). 14 15- To read images or videos, you are advised to use the media library [Picker to access them](../medialibrary/photoAccessHelper-photoviewpicker.md). 16- To save images or videos, use the [security components to save them](../medialibrary/photoAccessHelper-savebutton.md). 17 18> **NOTE** 19> 20> When the application needs to clone, back up, or synchronize images and videos in users' public directory, request the ohos.permission.READ_IMAGEVIDEO and ohos.permission.WRITE_IMAGEVIDEO permissions for reading and writing audio files. For details, see <!--RP1-->[Requesting Restricted Permissions](../../security/AccessToken/declare-permissions-in-acl.md)<!--RP1End-->. 21 22## How to Develop 23 24You can use either ArkTS or C++ APIs for camera development. 25 26| Procedure| ArkTS Development| C++ Development| 27| ------- | ------------- | --------- | 28| Input management| [Device Input Management (ArkTS)](camera-device-input.md)| [Device Input Management (C/C++)](native-camera-device-input.md)| 29| Session management| [Camera Session Management (ArkTS)](camera-session-management.md)| [Camera Session Management (C/C++)](native-camera-session-management.md)| 30| Preview | [Preview (ArkTS)](camera-preview.md)| [Preview (C/C++)](native-camera-preview.md)| 31| Secondary processing of preview streams| - | [Secondary Processing of Preview Streams (C/C++)](native-camera-preview-imageReceiver.md)| 32| Photo capture| [Photo Capture (ArkTS)](camera-shooting.md)| [Photo Capture (C/C++)](native-camera-shooting.md)| 33| Deferred photo delivery| [Deferred Photo Delivery (ArkTS)](camera-deferred-capture.md)| - | 34| Moving photos| [Moving Photos (ArkTS)](camera-moving-photo.md)| - | 35| Video Recording| [Video Recording (ArkTS)](camera-recording.md)| [Video Recording (C/C++)](native-camera-recording.md)| 36| Metadata| [Camera Metadata (ArkTS)](camera-metadata.md)| [Camera Metadata (C/C++)](native-camera-metadata.md)| 37