Camera Permission v mobilních aplikacích — co to je, typy přístupu a jak funguje

Autor: IT Sectr Publikováno: 2026-05-21 Doba čtení: 8 min

Camera Permission — to je oprávnění, které mobilní aplikace žádá od uživatele pro přístup ke kameře zařízení. Bez něj aplikace nemůže pořizovat snímky, skenovat QR kódy nebo spouštět videohovory. Podle údajů Android Developers, 2024, všechny aplikace používající kameru na Android 6.0 a vyšším musí žádat o oprávnění za běhu prostřednictvím systémového dialogu.

Hlavní body

  • Camera Permission — povinné oprávnění pro aplikace pracující s kamerou zařízení na iOS a Android.
  • Android používá Manifest.permission.CAMERA s povinnou žádostí za běhu od API 23.
  • iOS vyžaduje přidání klíče NSCameraUsageDescription do Info.plist s popisem důvodu použití kamery.
  • Žádost v kontextu funkce (například při stisknutí tlačítka „Vyfotit”) výrazně zvyšuje konverzi schválení.
  • Odmítnutí přístupu by mělo být zpracováno prostřednictvím alternativního scénáře: výběr z galerie nebo nahrání souboru.

Co je Camera Permission?

Camera Permission — to je systémové oprávnění regulující přístup aplikací ke kameře mobilního zařízení. Mobilní platformy považují kameru za důvěrný zdroj, protože umožňuje nahrávání videa a fotografování okolí uživatele v reálném čase.

Na Androidu patří oprávnění CAMERA do kategorie nebezpečných oprávnění (dangerous permissions) a vyžaduje povinnou žádost za běhu. Na iOS je přidání klíče NSCameraUsageDescription do Info.plist povinnou podmínkou pro jakoukoli aplikaci, která přistupuje ke kameře. Bez tohoto klíče aplikace havaruje při pokusu o otevření kamery.

Podle výzkumu Statista (2024) přibližně 68 % mobilních aplikací v top 100 App Store používá kameru v té či oné formě: od skenování QR kódů až po plnohodnotné fotografování a natáčení videa. Přitom 37 % uživatelů odmítá přístup kameře, pokud nerozumí, proč aplikace toto oprávnění potřebuje.

Camera Permission na Android

Camera Permission na Android se žádá prostřednictvím deklarace v manifestu a následné žádosti za běhu. Od Android 6.0 nelze oprávnění CAMERA získat pouze ve fázi instalace — uživatel musí výslovně potvrdit přístup.

Deklarace v AndroidManifest.xml

Pro použití kamery na Androidu je nutné přidat příslušnou deklaraci do souboru manifestu. Bez toho systém nedovolí aplikaci otevřít kameru ani při žádosti za běhu.

xml
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false" />

Atribut android:required=false pro uses-feature umožňuje instalaci aplikace na zařízeních bez kamery. To je důležité, pokud kamera není povinnou součástí pro fungování celé aplikace.

Žádost za běhu v Kotlin

Žádost o Camera Permission se provádí prostřednictvím Activity Result API. Po obdržení odpovědi aplikace zkontroluje stav a spustí kameru nebo zobrazí vysvětlení.

kotlin
private val cameraLauncher =
    registerForActivityResult(ActivityResultContracts.TakePicture()) { success ->
    if (success) {
        // Fotografie uložena
        showPhoto(photoUri)
    }
}

private val permissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        openCamera()
    } else {
        showPermissionDenied()
    }
}

fun capturePhoto() {
    if (ContextCompat.checkSelfPermission(this,
        Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
        openCamera()
    } else {
        permissionLauncher.launch(Manifest.permission.CAMERA)
    }
}

Vlastnosti Android 11+

Od Android 11, pokud uživatel dvakrát odmítl přístup ke kameře, systémový dialog se již nezobrazuje. Příznak Never Ask Again se nastaví automaticky a aplikace může pouze přesměrovat uživatele do systémových nastavení pomocí Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS). Vývojář by měl předvídat kontrolu shouldShowRequestPermissionRationale pro včasné zobrazení přípravné obrazovky.

Camera Permission na iOS

Camera Permission na iOS je spravováno prostřednictvím klíče NSCameraUsageDescription v Info.plist a volání AVCaptureDevice.requestAccess. Apple přísně kontroluje oprávněnost žádosti: pokud aplikace používá kameru způsobem, který není pro uživatele zřejmý, může App Store aplikaci odmítnout.

Konfigurace Info.plist

Povinnou podmínkou pro přístup ke kameře na iOS je přidání klíče NSCameraUsageDescription do souboru Info.plist. Hodnota řetězce bude zobrazena v systémovém dialogu jako důvod žádosti.

xml
<key>NSCameraUsageDescription</key>
<string>Aplikace potřebuje přístup ke kameře pro pořizování profilových fotografií a skenování QR kódů.</string>

Žádost ve Swift

Ve Swift se žádost provádí prostřednictvím statické metody AVCaptureDevice.requestAccess. Po obdržení odpovědi aplikace zpracuje stav a spustí relaci snímání.

swift
import AVFoundation

func requestCameraAccess() {
    AVCaptureDevice.requestAccess(for: .video) { granted in
        DispatchQueue.main.async {
            if granted {
                self.setupCameraSession()
            } else {
                self.showSettingsAlert()
            }
        }
    }
}

private func setupCameraSession() {
    guard let device = AVCaptureDevice.default(.for: .video)
    else { return }
    do {
        let input = try AVCaptureDeviceInput(device: device)
        let session = AVCaptureSession()
        session.addInput(input)
        session.startRunning()
    } catch {
        print("Camera error: \(error)")
    }
}

Kontrola aktuálního stavu

Před žádostí o přístup ke kameře se doporučuje zkontrolovat aktuální stav autorizace pomocí AVCaptureDevice.authorizationStatus(for: .video). To umožňuje vyhnout se zbytečnému volání systémového dialogu a správně zpracovat případy, kdy uživatel již rozhodl. Stav může být .notDetermined, .restricted, .denied nebo .authorized.

Scénáře použití kamery

Camera Permission se uplatňuje v různých scénářích, od jednoduchého skenování až po plnohodnotné natáčení videa. Každý scénář má své vlastní požadavky na implementaci a zpracování oprávnění.

Skenování QR kódů a čárových kódů

Na iOS se pro skenování QR kódů používá AVCaptureMetadataOutput z frameworku AVFoundation, který vyžaduje Camera Permission. Na Androidu se doporučuje používat ML Kit Barcode Scanning od Google. Je důležité poznamenat, že pro skenování QR kódů se používá samotná kamera, nikoli knihovna pro analýzu obrazu — proto je Camera Permission povinný.

Fotografování a nahrávání videa

Standardní fotografování nebo nahrávání videa vyžaduje Camera Permission jak na iOS, tak na Android. Na Androidu lze použít Intent(MediaStore.ACTION_IMAGE_CAPTURE), který otevře systémovou aplikaci kamery — v tomto případě o oprávnění žádá systémová aplikace, nikoli vaše. Pro náhled kamery uvnitř aplikace (CameraX, Camera2 API) je však nutné vlastní oprávnění.

Videohovory a AR

Aplikace pro videohovory (Zoom, Google Meet) a rozšířenou realitu (ARCore, ARKit) žádají o Camera Permission pro snímání videa z přední nebo zadní kamery. V tomto případě by měla být žádost obzvláště pečlivě vysvětlena, protože uživatel nemusí očekávat, že aplikace pro AR-zkoušení nábytku žádá o kameru.

Konfigurace parametrů snímání

Při práci s kamerou na iOS lze nakonfigurovat parametry snímání pomocí AVCaptureDeviceInput a AVCapturePhotoOutput. Na Androidu CameraX zjednodušuje konfiguraci prostřednictvím zpětných volání ImageCapture, VideoCapture a Preview. Pro každou konfiguraci je třeba uvést požadované rozlišení, úroveň zoomu a režim zaostření. Výběr správné konfigurace snímání přímo ovlivňuje výkon aplikace a spotřebu baterie.

Zpracování chyb při práci s kamerou

Při práci s kamerou mohou nastat různé chyby. Kamera může být obsazena jinou aplikací, vypnuta v systémových nastaveních soukromí nebo na zařízení chybět. Na Androidu se doporučuje zpracování CameraAccessException při volání CameraManager.openCamera. Na iOS je třeba zkontrolovat AVCaptureDevice.authorizationStatus a správně zpracovat odmítnutí, nabídnout uživateli přechod do nastavení pro povolení přístupu. Vždy před žádostí o oprávnění zkontrolujte přítomnost kamery na zařízení pomocí PackageManager.hasSystemFeature. Taková kontrola zabraňuje zbytečným žádostem na zařízeních bez kamery a zlepšuje uživatelský zážitek.

Optimalizace výkonu kamery

Optimalizace výkonu při práci s kamerou je důležitá pro plynulý chod aplikace. Nahrávání videa ve vysokém rozlišení spotřebovává značné zdroje procesoru a baterie.

Na iOS používejte AVCaptureSessionPresetMedium místo maximálního rozlišení, pokud aplikace nevyžaduje nahrávání ve 4K. Na Androidu CameraX umožňuje konfiguraci ImageCapture s cílovým rozlišením prostřednictvím ImageCaptureConfig.Builder. Důležité je také uvolnit kameru při přechodu aplikace na pozadí a znovu ji zachytit při návratu. To je standardní praxe doporučená Googlem a Applem pro úsporu baterie.

Nejlepší postupy žádosti o přístup ke kameře

Nejlepší postupy pomáhají zvýšit procento schválení Camera Permission a vyhnout se odmítnutí aplikace App Store nebo Google Play.

Použijte náhled pro vysvětlení

Před vyvoláním systémového dialogu zobrazte obrazovku s příkladem použití kamery: obrázek rozhraní skenování, rámeček pro profilovou fotografii, příklad rozpoznaného QR kódu. Vizuální vysvětlení funguje lépe než textové. Podle údajů UX Movement (2024) zvyšuje přidání vizuálního náhledu konverzi schválení až na 72 %.

Žádejte o oprávnění v okamžiku akce

Nikdy nežádejte o Camera Permission při prvním spuštění aplikace. Uživatel, který právě otevřel aplikaci, pravděpodobněji odmítne, pokud nerozumí kontextu. Žádejte o přístup striktně v okamžiku, kdy uživatel stiskne tlačítko vyžadující kameru: „Vyfotit profil”, „Skenovat kód”, „Zahájit videohovor”. Kontextuální spouštěč zvyšuje smysluplnost žádosti.

Zajistěte alternativu

Pokud uživatel odmítl Camera Permission, nabídněte alternativní způsob provedení akce: výběr fotografie z galerie, ruční zadání údajů QR kódu, nahrání obrázku ze zařízení. Odmítnutí by nemělo zcela blokovat funkčnost aplikace — to je požadavek doporučení Google Play a App Store pro návrh aplikací.

Často kladené otázky

Co se stane, když uživatel zakáže Camera Permission?

Při pokusu o otevření kamery bez oprávnění obdržíte chybu. Je nutné předem zkontrolovat stav pomocí checkSelfPermission na Android nebo authorizationStatus na iOS a nabídnout alternativní scénář.

Je pro skenování QR kódů nutné Camera Permission?

Ano, skenování QR kódů prostřednictvím kamery vyžaduje Camera Permission. Alternativní přístup — použití knihoven pro rozpoznání QR kódu z obrázku bez kamery (např. stažení fotografie s kódem z galerie) — ale to vyžaduje Photo Library Permission.

Jak žádat o Camera Permission na Android bez Activity?

V architektuře Jetpack Compose můžete použít rememberLauncherForActivityResult s ActivityResultContracts.RequestPermission v composable funkci. Pro služby bez uživatelského rozhraní není přímá žádost o oprávnění možná — je nutné předat řízení Activity.

Proč iOS aplikace havaruje při otevírání kamery?

Nejpravděpodobnějším důvodem je absence klíče NSCameraUsageDescription v Info.plist. Od iOS 10 jakýkoli přístup k AVCaptureDevice bez tohoto klíče způsobuje pád aplikace (crash) s výjimkou NSInvalidArgumentException.

Jak resetovat Camera Permission pro testování?

Na Android resetujte nastavení aplikace přes Settings → Apps → [Aplikace] → Oprávnění. Na iOS použijte Settings → [Aplikace] → přepínač Camera. Pro automatizaci testů na iOS můžete použít XCUITest s resetAuthorizationStatus.

Shrnutí

  • Camera Permission — povinné oprávnění za běhu pro přístup ke kameře na obou mobilních platformách.
  • Android vyžaduje deklaraci CAMERA v manifestu a žádost prostřednictvím Activity Result API s kontrolou shouldShowRequestPermissionRationale.
  • iOS vyžaduje klíč NSCameraUsageDescription v Info.plist a volání AVCaptureDevice.requestAccess(for: .video).
  • Kontextuální žádost (žádost v okamžiku použití) zvyšuje konverzi schválení až na 72 % podle údajů UX Movement.
  • Scénáře použití zahrnují fotografování a nahrávání videa, skenování QR kódů, videohovory a AR funkce.
  • Alternativní scénář při odmítnutí (výběr z galerie, ruční zadání) je povinný pro splnění požadavků obchodů s aplikacemi.
  • Přípravná obrazovka s vizuálním vysvětlením výrazně snižuje počet odmítnutí.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také