package Ġcom . sq is land . espress o . zx ing . intent o Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠ Ġprivate Ġlateinit Ġvar Ġformat View : ĠTextView ĊĠ Ġprivate Ġlateinit Ġvar Ġresult View : ĠTextView ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠ Ġformat View Ġ= ĠfindViewById ( R . id . format ) ĊĠĠĠ Ġresult View Ġ= ĠfindViewById ( R . id . result ) ĊĊĠĠĠ ĠsavedInstanceState ?. let Ġ{ ĊĠĠĠĠĠ Ġformat View . text Ġ= Ġit . get CharSequence ( KEY _ SCAN _ RESULT _ FORMAT ) ĊĠĠĠĠĠ Ġresult View . text Ġ= Ġit . get CharSequence ( KEY _ SCAN _ RESULT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġscan Button Ġ= ĠfindViewById < View >( R . id . scan _ button ) ĊĠĠĠ Ġif Ġ( is ZX ing Supported ( this )) Ġ{ ĊĠĠĠĠĠ Ġscan Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ACTION _ ZX ING _ SCAN ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠRESULT _ CODE ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġscan Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠ Ġresult View . setText ( R . string . not _ supported ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠ Ġif Ġ( request Code Ġ== ĠRESULT _ CODE ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata !!. getString Extra ( KEY _ SCAN _ RESULT ) ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= Ġdata . getString Extra ( KEY _ SCAN _ RESULT _ FORMAT ) ĊĠĠĠĠĠĠĠ Ġformat View . text Ġ= Ġformat ĊĠĠĠĠĠĠĠ Ġresult View . text Ġ= Ġresult ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġout State . put CharSequence ( KEY _ SCAN _ RESULT _ FORMAT , Ġformat View . text ) ĊĠĠĠ Ġout State . put CharSequence ( KEY _ SCAN _ RESULT , Ġresult View . text ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġval ĠACTION _ ZX ING _ SCAN Ġ= Ġ" com . google . zx ing . client . android . SCAN " ĊĠĠĠ Ġval ĠKEY _ SCAN _ RESULT Ġ= Ġ" SCAN _ RESULT " ĊĠĠĠ Ġval ĠKEY _ SCAN _ RESULT _ FORMAT Ġ= Ġ" SCAN _ RESULT _ FORMAT " ĊĊĠĠĠ Ġprivate Ġval ĠRESULT _ CODE Ġ= Ġ 2 0 0 0 ĊĊĠĠĠ Ġfun Ġis ZX ing Supported ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( ACTION _ ZX ING _ SCAN ) ĊĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠ Ġval Ġlist Ġ= Ġpackage Manager . query Intent Activities ( ĊĠĠĠĠĠĠĠ Ġintent , ĠPackage Manager . MATCH _ DEFAULT _ ONLY ) ĊĠĠĠĠĠ Ġreturn Ġlist . size Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }