package Ġcom . wallet connect . wallet . ui . accounts . uri Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . result . Activity Result Launcher Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . camera . core . Camera Selector Ċ import Ġandroidx . camera . core . Image Analysis Ċ import Ġandroidx . camera . core . Image Proxy Ċ import Ġandroidx . camera . core . Preview Ċ import Ġandroidx . camera . lifecycle . Process Camera Provider Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . google . ml kit . vision . barcode . Barcode Ċ import Ġcom . google . ml kit . vision . barcode . Barcode Scanner Ċ import Ġcom . google . ml kit . vision . barcode . Barcode Scanner Options Ċ import Ġcom . google . ml kit . vision . barcode . Barcode Sc anning Ċ import Ġcom . google . ml kit . vision . common . Input Image Ċ import Ġcom . wallet connect . sample _ common . tag Ċ import Ġcom . wallet connect . sample _ common . view Binding Ċ import Ġcom . wallet connect . wallet . ACCOUNT S _ ARGUMENT _ KEY Ċ import Ġcom . wallet connect . wallet . R Ċ import Ġcom . wallet connect . wallet . databinding . Fragment Scanner Binding Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġjava . util . concurrent . Executors Ċ Ċ @ Experimental Cor outines Api Ċ class ĠScanner Fragment Ġ: ĠFragment ( R . layout . fragment _ scanner ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġbinding : ĠFragment Scanner Binding Ġby Ġview Binding ( Fragment Scanner Binding :: bind ) ĊĠĠĠ Ġprivate Ġval Ġcamera Permission Callback : ĠActivity Result Launcher < String > Ġ= Ġregister For Activity Result ( Activity Result Contracts . Request Permission ()) Ġ{ Ġis Granted Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( is Granted ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Process Camera Provider () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcamera Selector : ĠCamera Selector Ġby Ġlazy Ġ{ ĠCamera Selector . Builder (). require Lens Facing ( Camera Selector . LEN S _ F ACING _ BACK ). build () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠAppCompatActivity ). support ActionBar ?. hide () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Camera Permission Granted ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Process Camera Provider () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Permission Callback . launch ( Manifest . permission . CAMERA ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĊĠĠĠĠĠĠĠ Ġ( require Activity () Ġas ĠAppCompatActivity ). support ActionBar ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Process Camera Provider () Ġ{ ĊĠĠĠĠĠĠĠ ĠProcess Camera Provider . getInstance ( require Context ()). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Listener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbind Camera Use Cases ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . get Main Executor ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Camera Use Cases ( camera Provider : ĠProcess Camera Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcamera Provider . unbind All () ĊĠĠĠĠĠĠĠ Ġcamera Provider . bind To Lifecycle ( view Lifecycle Owner , Ġcamera Selector , Ġbuild Preview UseCase (), Ġbuild Image Analysis UseCase ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Preview UseCase (): ĠPreview Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPreview . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Rotation ( binding . preview View . display . rotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Surface Provider ( binding . preview View . surface Provider ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbuild Image Analysis UseCase (): ĠImage Analysis Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbarcode Scanner Options Ġ= ĠBar code Scanner Options . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Barcode Formats ( Barcode . FORMAT _ QR _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġval Ġbarcode Scanner : ĠBar code Scanner Ġ= ĠBar code Sc anning . getClient ( barcode Scanner Options ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠImage Analysis . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTarget Rotation ( binding . preview View . display . rotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Back pressure Strategy ( Image Analysis . STR ATE GY _ KEEP _ ONLY _ LATE ST ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Analyzer ( Executors . new Single Thread Executor ()) Ġ{ Ġimage Proxy Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess Image Proxy ( barcode Scanner , Ġimage Proxy , Ġthis :: clear Analyzer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Unsafe Opt In Usage Error ") ĊĠĠĠ Ġprivate Ġfun Ġprocess Image Proxy ( barcode Scanner : ĠBar code Scanner , Ġimage Proxy : ĠImage Proxy , Ġclear Analyzer : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Image Ġ= Ġimage Proxy . image ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInput Image . from Media Image ( it , Ġimage Proxy . image Info . rotation Degrees ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġinput Image . let Ġ{ Ġimage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbarcode Scanner . process ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġbar codes : ĠMutable List < Barcode > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bar codes . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraw Barcode Value Ġ= Ġbar codes . first (). raw Value ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( raw Barcode Value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Proxy . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Analyzer () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). previous Back Stack Entry ?. saved State Handle ?. set ( ACCOUNT S _ ARGUMENT _ KEY , Ġraw Barcode Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag ( this @ Scanner Fragment ), Ġe . stack Trace ToString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Failed Ġto Ġfind Ġbarcode ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag ( this @ Scanner Fragment ), Ġit . message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" Failed Ġto Ġcapture ĠQR ĠCode ", ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Analyzer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener Ġ{ Ġimage Proxy . close () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Camera Permission Granted (): ĠBoolean Ġ= ĠContext Compat . check Self Permission ( require Context (), ĠManifest . permission . CAMERA ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ċ }