package Ġcom . d mobile apps . barcode scanner . feature . tabs . scan . file Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . view . Motion Event . ACTION _ UP Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . view . isIn visible Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . af ol le st ad . material dialogs . Material Dialog Ċ import Ġcom . af ol le st ad . material dialogs . custom view . custom View Ċ import Ġcom . d mobile apps . barcode scanner . App Constant Ċ import Ġcom . d mobile apps . barcode scanner . R Ċ import Ġcom . d mobile apps . barcode scanner . di .* Ċ import Ġcom . d mobile apps . barcode scanner . extension . apply System Window Insets Ċ import Ġcom . d mobile apps . barcode scanner . extension . show Error Ċ import Ġcom . d mobile apps . barcode scanner . feature . Base Activity Ċ import Ġcom . d mobile apps . barcode scanner . feature . barcode . Barcode Activity Ċ import Ġcom . d mobile apps . barcode scanner . model . Barcode Ċ import Ġcom . d mobile apps . barcode scanner . use case . save Ċ import Ġcom . google . android . gms . ads . Ad Error Ċ import Ġcom . google . android . gms . ads . Ad Request Ċ import Ġcom . google . android . gms . ads . FullScreen Content Callback Ċ import Ġcom . google . android . gms . ads . Load Ad Error Ċ import Ġcom . google . android . gms . ads . inter stitial . Inter stitial Ad Ċ import Ġcom . google . android . gms . ads . inter stitial . Inter stitial Ad Load Callback Ċ import Ġcom . google . zx ing . Result Ċ import Ġcom . isse ia oki . simple crop view . Crop ImageView Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . addTo Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġkotlinx . android . synt hetic . main . activity _ scan _ barcode _ from _ file .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠScan Barcode FromFile Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠC HO OSE _ FILE _ REQUEST _ CODE Ġ= Ġ 1 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠC HO OSE _ FILE _ AG AIN _ REQUEST _ CODE Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPER MISSION S _ REQUEST _ CODE Ġ= Ġ 1 4 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPER MISSION S Ġ= ĠarrayOf ( Manifest . permission . READ _ EXTERNAL _ STORAGE ) ĊĊĠĠĠĠĠĠĠ Ġfun Ġstart ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠScan Barcode FromFile Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġimage Uri : ĠUri ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast Scan Result : ĠResult ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġval Ġscan Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġvar Ġm Inter stitial Ad : ĠInter stitial Ad ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĠĠĠ Ġvar Ġtime Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġvar Ġdialog Loading : ĠMaterial Dialog ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ scan _ barcode _ from _ file ) ĊĊĠĠĠĠĠĠĠ Ġsupport Edge To Edge () ĊĠĠĠĠĠĠĠ Ġhandle Toolbar Back Pressed () ĊĠĠĠĠĠĠĠ Ġhandle Toolbar MenuItem Clicked () ĊĠĠĠĠĠĠĠ Ġhandle Image Crop Area Changed () ĊĠĠĠĠĠĠĠ Ġhandle Scan Button Clicked () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show Image From Intent (). not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Choose Image Activity ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( request Code Ġ== ĠC HO OSE _ FILE _ REQUEST _ CODE Ġ|| Ġrequest Code Ġ== ĠC HO OSE _ FILE _ AG AIN _ REQUEST _ CODE ) Ġ&& ĠresultCode Ġ== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. data ?. apply (:: show Image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠC HO OSE _ FILE _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġpermissions : ĠArray < out ĠString >, ĊĠĠĠĠĠĠĠ Ġgrant Results : ĠInt Array ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠPER MISSION S _ REQUEST _ CODE Ġ&& Ġpermissions Helper . are All Permissions Granted ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrant Results ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Uri ?. apply (:: show Image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġscan Disposable . clear () ĊĠĠĠĠĠĠĠ Ġdis posable . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsupport Edge To Edge () Ġ{ ĊĠĠĠĠĠĠĠ Ġroot _ view . apply System Window Insets ( apply Top Ġ= Ġtrue , Ġapply Bottom Ġ= Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image From Intent (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġuri : ĠUri ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent ?. action Ġ== ĠIntent . ACTION _ SEND Ġ&& Ġintent . type . or Empty (). startsWith (" image / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġintent . get Parcelable Extra < Parcelable >( Intent . EXTRA _ STREAM ) Ġas ? ĠUri ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent ?. action Ġ== ĠIntent . ACTION _ VIEW Ġ&& Ġintent . type . or Empty (). startsWith (" image / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri Ġ= Ġintent . data ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow Image ( uri ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Choose Image Activity ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Choose Image Activity ( CH OOSE _ FILE _ REQUEST _ CODE , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Choose Image Activity Again () Ġ{ ĊĠĠĠĠĠĠĠ Ġstart Choose Image Activity ( CH OOSE _ FILE _ AG AIN _ REQUEST _ CODE , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Choose Image Activity ( request Code : ĠInt , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( Intent . ACTION _ P ICK , ĠMedia Store . Images . Media . EXTERNAL _ CONTENT _ URI ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetData And Type ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , Ġ" image /* ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . resolve Activity ( package Manager ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Code ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Toolbar Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . set Navigation OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Toolbar MenuItem Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ rotate _ left Ġ-> Ġcrop _ image _ view . rotate Image ( Crop ImageView . Rotate Degrees . ROT ATE _ M 9 0 D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ rotate _ right Ġ-> Ġcrop _ image _ view . rotate Image ( Crop ImageView . Rotate Degrees . ROT ATE _ 9 0 D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . item _ change _ image Ġ-> Ġstart Choose Image Activity Again () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn MenuItem ClickListener Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Image Crop Area Changed () Ġ{ ĊĠĠĠĠĠĠĠ Ġcrop _ image _ view . to uches () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . action Ġ== ĠACTION _ UP Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. de bounce ( 4 0 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġscan C ropped Image () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Scan Button Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton _ scan . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Scan Result () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Image ( image Uri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . image Uri Ġ= Ġimage Uri ĊĊĠĠĠĠĠĠĠ Ġcrop _ image _ view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( image Uri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute As Comp letable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġscan C ropped Image () Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: show Error Or Request Permissions ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error Or Request Permissions ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSecurity Exception Ġ-> Ġpermissions Helper . request Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER MISSION S _ REQUEST _ CODE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġshow Error ( error ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscan C ropped Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Loading ( true ) ĊĠĠĠĠĠĠĠ Ġshow Scan Button Enabled ( false ) ĊĊĠĠĠĠĠĠĠ Ġscan Disposable . clear () ĊĠĠĠĠĠĠĠ Ġlast Scan Result Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġcrop _ image _ view ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. crop As Single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe (:: scan C ropped Image , Ġ:: show Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( scan Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscan C ropped Image ( image : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbarcode Image Scanner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. parse ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġscan Result Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Scan Result Ġ= Ġscan Result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Scan Button Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġshow Loading ( false ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( scan Disposable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Scan Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbarcode Ġ= Ġlast Scan Result ?. let ( barcode Parser :: parse Result ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( settings . save Sc anned Bar codes To History . not ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Barcode Screen ( barcode ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġshow Loading ( true ) ĊĊĠĠĠĠĠĠĠ Ġbarcode Database . save ( barcode , Ġsettings . do Not Save Duplicates ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Barcode Screen ( barcode . copy ( id Ġ= Ġid )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addTo ( dis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading ( isLoading : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress _ bar _ loading . isVisible Ġ= ĠisLoading ĊĠĠĠĠĠĠĠ Ġbutton _ scan . isIn visible Ġ= ĠisLoading ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Scan Button Enabled ( isEnabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbutton _ scan . isEnabled Ġ= Ġis Enabled ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Dialog Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Loading Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Loading Ġ= ĠMaterial Dialog ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom View ( R . layout . dialog _ loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog Loading ?. show Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcorner Radius ( 1 6 f ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhide Dialog Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġdialog Loading ?. dismiss () ĊĠĠĠĠĠĠĠ Ġdialog Loading Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Barcode Screen ( barcode : ĠBar code ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBar code Activity . start ( this @ Scan Barcode FromFile Activity , Ġbarcode ) ĊĠĠĠĠĠĠĠ Ġfinish () Ċ // ĠĠĠĠĠĠĠ Ġvar Ġcheck Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġval Ġdialog Process Ġ= ĠProgress Dialog ( this , ĠR . style . Dialog My Theme ) Ċ // ĠĠĠĠĠĠĠ Ġdialog Process . setMessage (" Loading .... ") Ċ // ĠĠĠĠĠĠĠ Ġdialog Process . set Cancel able ( false ) Ċ // ĠĠĠĠĠĠĠ Ġdialog Process . set Canceled On Touch Outside ( false ) Ċ // ĠĠĠĠĠĠĠ Ġhandler . post Delayed ( object Ġ: ĠRunnable Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog Loading () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar code Activity . start ( this @ Scan Barcode FromFile Activity , Ġbarcode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġ}, Ġ 9 0 0 0 ) Ċ // ĠĠĠĠĠĠĠ Ġshow Dialog Loading () Ċ // Ċ // ĠĠĠĠĠĠĠ Ġvar Ġad Request Ġ= ĠAd Request . Builder (). build () Ċ // ĠĠĠĠĠĠĠ ĠInter stitial Ad . load ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" ca - app - pub - 2 0 5 1 7 5 5 6 0 8 3 7 5 3 7 7 / 5 0 2 1 8 1 7 9 2 3 ", Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġad Request , Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠInter stitial Ad Load Callback () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed To Load ( ad Error : ĠLoad Ad Error ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog Loading () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar code Activity . start ( this @ Scan Barcode FromFile Activity , Ġbarcode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Loaded ( inter stitial Ad : ĠInter stitial Ad ) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad Ġ= Ġinter stitial Ad Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Inter stitial Ad Ġ!= Ġnull Ġ&& Ġ! check ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad ?. show ( this @ Scan Barcode FromFile Activity ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad ?. full Screen Content Callback Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠFull Screen Content Callback () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Dis missed FullScreen Content () Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Process Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Process . dismiss () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar code Activity . start ( this @ Scan Barcode FromFile Activity , Ġbarcode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Failed To Show FullScreen Content ( ad Error : ĠAd Error ?) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog Loading () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBar code Activity . start ( this @ Scan Barcode FromFile Activity , Ġbarcode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Show ed FullScreen Content () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constant . is Click Ads Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtime Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Inter stitial Ad Ġ= Ġnull Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Dialog Loading () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Callbacks And Messages ( null ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dialog Process Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Process . show () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ad Clicked () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Ad Clicked () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Constant . is Click Ads Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} Ċ }