Skip to content
Back to skills

Add Expo Camera Android

ASecurity

Add expo-camera with Android-specific permission handling and CameraX-backed performance. Use when the user says 'add camera android', 'expo camera', 'qr scanner android'.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 4, 2026
developmentgobashperformance

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned October 4, 2026

npx -y skills add khadinakbarlabs/expo-mobile-app-builder --skill add-expo-camera-android --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Add Expo Camera Android?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Add Expo Camera Android
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/khadinakbarlabs-add-expo-camera-android/badge)](https://www.skillsdirectory.com/skills/khadinakbarlabs-add-expo-camera-android)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "add-expo-camera-android"
description: "Add expo-camera with Android-specific permission handling and CameraX-backed performance. Use when the user says 'add camera android', 'expo camera', 'qr scanner android'."
---

# Add Expo Camera (Android)

CameraX-backed camera with permission handling.

## Install
```bash
npm exec --no -- expo install expo-camera
```

## Permissions in app.json
```json
{
  "expo": {
    "plugins": [
      ["expo-camera", { "cameraPermission": "Allow $(PRODUCT_NAME) to access your camera." }]
    ]
  }
}
```

## Request runtime permission
```tsx
import { CameraView, useCameraPermissions } from 'expo-camera';

const [permission, requestPermission] = useCameraPermissions();

if (!permission) return null;
if (!permission.granted) return <Button title="Grant" onPress={requestPermission} />;

<CameraView style={{ flex: 1 }} facing="back" />
```

## QR / barcode scanning
```tsx
<CameraView
  barcodeScannerSettings={{ barcodeTypes: ['qr', 'ean13'] }}
  onBarcodeScanned={({ data }) => console.log(data)}
/>
```

## Photo capture
```tsx
const cam = useRef<CameraView>(null);
const photo = await cam.current?.takePictureAsync({ quality: 0.8 });
// photo.uri — local file path
```

## Video recording (Android 13+)
```tsx
const video = await cam.current?.recordAsync({ maxDuration: 60 });
```

## Android-specific gotchas

- "Camera not available" → emulator without webcam; enable webcam in AVD config
- Permission denied permanently → show settings deep link: `Linking.openSettings()`
- Recording requires `RECORD_AUDIO` permission too
- Some manufacturers (Xiaomi, OnePlus) restrict camera even with permission — check manufacturer-specific docs

## Pair with
- `add-expo-secure-store-keystore` if saving images encrypted
- Use `expo-image-picker` for gallery access instead of camera

Files in this skill

  • SKILL.md1.8 KB
  • agents/openai.yaml200 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…