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