📖 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+PreviewViewparodo vaizdą; į Compose jį įdedam perAndroidView(nesPreviewView— senaView, ne composable). - QR skaitymo.
ML Kitbrūkšninių kodų skaitytuvas analizuoja kadrus ir grąžina rastą kodą.MlKitAnalyzerprijungiamas 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čMlKitAnalyzerirLifecycleCameraController) juda tarp versijų. Autorystės metu patikrink dabartinį pavyzdį Android dokumentacijoje.