Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 11 / 14 QR skenavimas ~45 min
📖 Teorija

Kamera, leidimai ir QR

9 pamokoje užsakymai jau veikė, bet tableNumber buvo null — serveris nežinojo, prie kurio staliuko sėdi. Pica idėja: ant kiekvieno staliuko — QR lipdukas (pvz., table:12). Nuskenuoji jį, ir pica atkeliauja būtent pas tave.

Tam reikia trijų dalykų:

  • Kameros leidimo. Android kamera — „pavojingas" (dangerous) leidimas. Neužtenka jo įrašyti manifeste; nuo Android 6 (API 23) jo reikia prašyti vykdymo metu, per dialogą, ir tik gavus rodyti peržiūrą.
  • CameraX peržiūros. CameraX — modernus Jetpack kameros API. LifecycleCameraController + PreviewView parodo vaizdą; į Compose jį įdedam per AndroidView (nes PreviewView — sena View, ne composable).
  • QR skaitymo. ML Kit brūkšninių kodų skaitytuvas analizuoja kadrus ir grąžina rastą kodą. MlKitAnalyzer prijungiamas prie kameros kaip analizatorius.

Srautas:

Kamera (CameraX) ──kadrai──▶ ML Kit analizatorius ──"table:12"──▶ TableSession ──▶ užsakymas

Nuskaitytą staliuką laikysim TableSession klasėje (vienas Koin single), kad tą patį staliuką matytų ir krepšelis, ir apmokėjimas, ir užsakymas.

Verify-docs. CameraX (1.6.x) + camera-mlkit-vision + ML Kit barcode (17.3.0) — šių API paviršius (ypač MlKitAnalyzer ir LifecycleCameraController) juda tarp versijų. Autorystės metu patikrink dabartinį pavyzdį Android dokumentacijoje.