package Ġde . mint ware . barcode _ scan Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Gradient Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view .* Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . google . zx ing . Result Ċ import Ġme . dm 7 . barcode scanner . zx ing . ZX ing Scanner View Ċ Ċ class ĠBar code Scanner Activity Ġ: ĠActivity (), ĠZX ing Scanner View . Result Handler Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġconfig : ĠProto s . Configuration ĊĠĠĠ Ġprivate Ġvar Ġscanner View : ĠZX ing Scanner View ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġwindows Width Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġhint Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTO GGLE _ FLASH Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCANCEL Ġ= Ġ 3 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ CONFIG Ġ= Ġ" config " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ RESULT Ġ= Ġ" scan _ result " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ ERROR _ CODE Ġ= Ġ" error _ code " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġformat Map : ĠMap < Protos . Barcode Format , ĠBar code Format > Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . az tec Ġto ĠBar code Format . AZ TEC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . code 3 9 Ġto ĠBar code Format . CODE _ 3 9 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . code 9 3 Ġto ĠBar code Format . CODE _ 9 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . code 1 2 8 Ġto ĠBar code Format . CODE _ 1 2 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . data Matrix Ġto ĠBar code Format . DATA _ MATRIX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . e an 8 Ġto ĠBar code Format . E AN _ 8 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . e an 1 3 Ġto ĠBar code Format . E AN _ 1 3 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . inter leaved 2 of 5 Ġto ĠBar code Format . IT F , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . pdf 4 1 7 Ġto ĠBar code Format . PDF _ 4 1 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . qr Ġto ĠBar code Format . QR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProto s . Barcode Format . up ce Ġto ĠBar code Format . UP C _ E ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġregion ĠActivity Ġlifecycle ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġset Trans luc ent Status ( this ) ĊĠĠĠĠĠĠĠ Ġconfig Ġ= ĠProto s . Configuration . parseFrom ( intent . extras !!. get ByteArray ( EXTRA _ CONFIG )) ĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġconfig . strings Map [" hint "]. toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Trans luc ent Status ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Window Feature ( Window . FEATURE _ NO _ TITLE ); Ċ // ĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġactivity . window Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . clear Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . decor View . system Ui Visibility Ġ= ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ FULL SCREEN Ġor ĠView . SYSTEM _ UI _ FLAG _ LAYOUT _ ST ABLE Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ DR AWS _ SYSTEM _ BAR _ BACK GRO UN DS ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . status Bar Color Ġ= ĠColor . TRANSP ARENT Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . KIT K AT ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ TRANSL UC ENT _ STATUS ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Scanner View () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( scanner View Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . barcode _ scanner _ activity ) ĊĠĠĠĠĠĠĠ Ġval Ġwm Ġ= Ġthis . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġwindows Width Ġ= Ġwm . default Display . width ĊĠĠĠĠĠĠĠ Ġval Ġbtn Label Ġ= Ġconfig . strings Map [" btn Label "] ĊĠĠĠĠĠĠĠ Ġval Ġbtn Ġ= ĠfindViewById < Button >( R . id . btn ) ĊĠĠĠĠĠĠĠ Ġval Ġlayout Params Ġ= Ġbtn . layout Params Ġas ĠFrame Layout . LayoutParams ĊĠĠĠĠĠĠĠ Ġval Ġbtn Width Ġ= Ġlayout Params . width ĊĠĠĠĠĠĠĠ Ġlayout Params . left Margin Ġ= Ġ( windows Width Ġ- Ġbtn Width ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġbtn . text Ġ= Ġbtn Label ĊĠĠĠĠĠĠĠ Ġval Ġdrawable : ĠGradient Drawable Ġ= Ġbtn . background Ġas ĠGradient Drawable ĊĠĠĠĠĠĠĠ Ġdrawable . setColor ( Color . parse Color ( config . strings Map [" btn Color "])) ĊĠĠĠĠĠĠĠ Ġval Ġdm Ġ= ĠDisplay Metrics () Ġ// å®ļä¹ī Display Metrics Ġ ç±» æıĲä¾ĽäºĨ ä¸Ģç§į åħ³äºİ æĺ¾ç¤º çļĦ éĢļ çĶ¨ ä¿¡æģ¯ ï¼Į å¦Ĥ æĺ¾ç¤º å¤§å°ı ï¼Į åĪĨ è¾ ¨ çİĩ åĴĮ åŃĹ ä½ĵ ãĢĤ ĊĠĠĠĠĠĠĠ Ġwindow Manager . default Display . get Metrics ( dm ) Ġ// å°Ĩ å½ĵåīį çªĹåı£ çļĦ ä¸ĢäºĽ ä¿¡æģ¯ æĶ¾åľ¨ Display Metrics ç±» ä¸Ń ĊĠĠĠĠĠĠĠ Ġval Ġcontent Frame Ġ= ĠfindViewById < View >( R . id . content _ frame ) Ġas ĠViewGroup ĊĠĠĠĠĠĠĠ Ġscanner View Ġ= ĠZX ing Aut of ocus Scanner View ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Auto Focus ( config . android . use Auto Focus ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrestricted Formats Ġ= Ġmap Restricted Barcode Types () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( restricted Formats . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Formats ( restricted Formats ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthis Ġparameter Ġwill Ġmake Ġyour ĠH UA WE I Ġphone Ġworks Ġgreat ! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Aspect Tolerance ( config . android . aspect Tolerance . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config . auto Enable Flash ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġflash Ġ= Ġconfig . auto Enable Flash ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcontent Frame . addView ( scanner View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmanual ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠProto s . Scan Result . newBuilder () ĊĠĠĠĠĠĠĠ Ġbuilder . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . format Ġ= ĠProto s . Barcode Format . unknown ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . raw Content Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= ĠProto s . Result Type . Barcode ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ RESULT , Ġres . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġscanner View ?. stop Camera () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġsetup Scanner View () ĊĠĠĠĠĠĠĠ Ġscanner View ?. set Result Handler ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( config . use Camera Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscanner View ?. start Camera ( config . use Camera ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscanner View ?. start Camera () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġend region ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Result ( result : ĠResult ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠProto s . Scan Result . newBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ( result Ġ== Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . format Ġ= ĠProto s . Barcode Format . unknown ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . raw Content Ġ= Ġ" No Ġdata Ġwas Ġscanned " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= ĠProto s . Result Type . Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= Ġ( format Map . filter Values Ġ{ Ġit Ġ== Ġresult . barcode Format Ġ}. keys . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠProto s . Barcode Format . unknown ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġformat Note Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( format Ġ== ĠProto s . Barcode Format . unknown ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Note Ġ= Ġresult . barcode Format . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . format Ġ= Ġformat ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . format Note Ġ= Ġformat Note ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . raw Content Ġ= Ġresult . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . type Ġ= ĠProto s . Result Type . Barcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ RESULT , Ġres . toByteArray ()) ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap Restricted Barcode Types (): ĠList < Barcode Format > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtypes : ĠMutable List < Barcode Format > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġthis . config . restrict Format List . filter NotNull (). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! format Map . containsKey ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Unrecognized ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ forEach ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtypes . add ( format Map . getValue ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtypes ĊĠĠĠ Ġ} Ċ } Ċ