Camera API
Still-photo operations, permissions, and typed failures.
Native enablement is internalPlugins.camera. The required dependency is @capacitor/camera@8.2.6. The config selector is Camera, with required usageDescription and photoLibraryUsageDescription strings.
Operations
@akshatowo/radical/client export | Result | Requirements |
|---|---|---|
capturePhoto | Photo | Bridge, BrowserCamera |
choosePhoto | Photo | Bridge, BrowserCamera |
checkCameraPermission | CameraPermission | Bridge, BrowserCamera |
requestCameraPermission | CameraPermission | Bridge, BrowserCamera |
These are Effect values, not functions. cameraLive(effect) provides BrowserCameraLive. BrowserCamera is injectable for tests. PhotoSchema and CameraPermissionSchema validate results.
Photo has dataUrl, mimeType, and optional width and height. Dimensions are decoded after orientation correction. The data URL remains valid after hook unmount. choosePhoto selects one image.
CameraPermission is "granted" | "denied" | "prompt". A check can return "denied" without failure. A denied request fails with PermissionDenied.
Runtime behavior
| Capability | Android | iOS | Browser |
|---|---|---|---|
| Capture | Camera permission; no gallery save | Camera permission; no gallery save | Image input with capture="environment"; camera or file UI depends on browser |
| Generation | CAMERA permission; optional camera hardware | Camera and photo-library usage descriptions | No native generation |
| Permission check | Native camera status | Native camera status | Permissions API or "prompt" |
| Permission request | Native prompt | Native prompt | Secure-context getUserMedia; temporary stream stopped |
Errors and hooks
| Contract | Value |
|---|---|
CameraError | PermissionDenied | Cancelled | Unavailable | BridgeError |
| Native permission or cancellation rejection | Mapped to capability errors |
| Unknown rejection | BridgeCallFailed |
| Invalid bridge result | BridgeDecodeError |
useCamera() | capture, choose, and action state |
useCameraPermission() | Check after mount; check and request |
Source: camera implementation.