/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 0 8 ĠZX ing Ġauthors Ċ Ġ* ĠCopyright Ġ 2 0 1 1 ĠRobert ĠThe is Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġt br s Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġt br s . ocr Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . Type face Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . Handler Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . text . Clipboard Manager Ċ import Ġandroid . text . style . ForegroundColor Span Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . ContextMenu Ċ import Ġandroid . view . ContextMenu . ContextMenu Info Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . view . KeyEvent Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . Motion Event Ċ import Ġandroid . view . Surface Holder Ċ import Ġandroid . view . View Ċ import Ġandroid . view . Window Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . core . app . Activity Compat Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . core . content . edit Ċ import Ġcom . google code . t esseract . android . Tess Base API Ċ import Ġkotlinx . android . synt hetic . main . capture .* Ċ import Ġt br s . ocr . camera . Camera Manager Ċ import Ġt br s . ocr . camera . Sh utter Button Ċ import Ġt br s . ocr . kotlin . set Span Between Tokens Ċ import Ġt br s . ocr . language . Language Code Helper Ċ import Ġt br s . ocr . language . Translate AsyncTask Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠThis Ġactivity Ġopens Ġthe Ġcamera Ġand Ġdoes Ġthe Ġactual Ġscanning Ġon Ġa Ġbackground Ġthread . ĠIt Ġdraw s Ġa Ċ Ġ* Ġview finder Ġto Ġhelp Ġthe Ġuser Ġplace Ġthe Ġtext Ġcorrectly , Ġshows Ġfeedback Ġas Ġthe Ġimage Ġprocessing Ċ Ġ* Ġis Ġhappening , Ġand Ġthen Ġoverlay s Ġthe Ġresults Ġwhen Ġa Ġscan Ġis Ġsuccessful . Ċ Ġ* Ċ Ġ* ĠThe Ġcode Ġfor Ġthis Ġclass Ġwas Ġadapted Ġfrom Ġthe ĠZX ing Ġproject : Ġhttp :// code . google . com / p / zx ing / Ċ Ġ*/ Ċ class ĠCapture Activity Ġ: ĠActivity (), ĠSurface Holder . Callback , ĠSh utter Button . On Sh utter Button Listener Ġ{ ĊĠĠĠ Ġinternal Ġvar Ġcamera Manager : ĠCamera Manager ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġhandler : ĠCapture Activity Handler ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsurface Holder : ĠSurface Holder ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast Result : ĠO cr Result ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġlast Bitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġhas Surface : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġbe ep Manager : ĠBe ep Manager ? Ġ= Ġnull ĊĠĠĠ Ġ// ĠInterface Ġfor Ġthe ĠT esseract ĠO CR Ġengine . ĊĠĠĠ Ġinternal Ġvar Ġbase Api : ĠT ess Base API ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġ// ĠISO Ġ 6 3 9 - 3 Ġlanguage Ġcode . ĊĠĠĠ Ġprivate Ġvar Ġsource Language Code O cr : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ// ĠLanguage Ġname , Ġfor Ġexample , Ġ" English ". ĊĠĠĠ Ġprivate Ġvar Ġsource Language Readable : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ// ĠISO Ġ 6 3 9 - 1 Ġlanguage Ġcode . ĊĠĠĠ Ġprivate Ġvar Ġsource Language Code Translation : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ// ĠISO Ġ 6 3 9 - 1 Ġlanguage Ġcode . ĊĠĠĠ Ġprivate Ġvar Ġtarget Language Code Translation : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ// ĠLanguage Ġname , Ġfor Ġexample , Ġ" English ". ĊĠĠĠ Ġprivate Ġvar Ġtarget Language Readable : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġpage Segmentation Mode Ġ= ĠT ess Base API . Page Seg Mode . PS M _ AUTO _ OS D ĊĠĠĠ Ġprivate Ġvar Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ TES SER ACT _ ONLY ĊĠĠĠ Ġprivate Ġvar Ġcharacter Black list : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġcharacter Whitelist : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ// ĠWhether Ġwe Ġwant Ġto Ġshow Ġtranslations . ĊĠĠĠ Ġprivate Ġvar Ġis Translation Active : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ// ĠWhether Ġwe Ġare Ġdoing ĠO CR Ġin Ġcontinuous Ġmode . ĊĠĠĠ Ġprivate Ġvar Ġis Continuous Mode Active : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ// ĠFor Ġinit O cr Ġ- Ġlanguage Ġdownload Ġ& Ġunzip . ĊĠĠĠ Ġprivate Ġvar Ġdialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġ// ĠAlso Ġfor Ġinit O cr Ġ- Ġinit ĠO CR Ġengine . ĊĠĠĠ Ġinternal Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġprivate Ġvar Ġis Engine Ready : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Paused : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġval Ġerror Status Span Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠFore ground Color Span ( Context Compat . getColor ( this , ĠR . color . red )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠFinds Ġthe Ġproper Ġlocation Ġon Ġthe ĠSD Ġcard Ġwhere Ġwe Ġcan Ġsave Ġfiles . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġstorage Directory : ĠFile ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . d ( TAG , Ġ" get Storage Directory (): ĠAPI Ġlevel Ġis Ġ" Ġ+ ĠInteger . valueOf ( android . os . Build . VERSION . SDK _ INT )); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= ĠEnvironment . get External Storage State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Is Ġthe ĠSD Ġcard Ġvisible ?", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage (" Error ", Ġ" Required Ġexternal Ġstorage Ġ( such Ġas Ġan ĠSD Ġcard ) Ġis Ġunavailable .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Environment . MEDIA _ MOUNT ED Ġ== ĠEnvironment . get External Storage State ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġread Ġand Ġwrite Ġthe Ġmedia ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠ ĉ if Ġ( Integer . valueOf ( android . os . Build . VERSION . SDK _ INT ) Ġ> Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFor ĠAndroid Ġ 2 . 2 Ġand Ġabove . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget External Files Dir ( Environment . MEDIA _ MOUNT ED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġget Ġan Ġerror Ġhere Ġif Ġthe ĠSD Ġcard Ġis Ġvisible , Ġbut Ġfull . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" External Ġstorage Ġis Ġunavailable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage (" Error ", Ġ" Required Ġexternal Ġstorage Ġ( such Ġas Ġan ĠSD Ġcard ) Ġis Ġfull Ġor Ġunavailable .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠ Ġ// ĠFor ĠAndroid Ġ 2 . 1 Ġand Ġbelow , Ġexplicitly Ġgive Ġthe Ġpath Ġas , Ġfor Ġexample , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠ Ġ// Ġ"/ mnt / sd card / Android / data / t br s . ocr / files /" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠ Ġreturn Ġnew ĠFile ( Environment . get External Storage Directory (). toString () Ġ+ ĠFile . separator Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Android " Ġ+ ĠFile . separator Ġ+ Ġ" data " Ġ+ ĠFile . separator Ġ+ Ġget PackageName () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile . separator Ġ+ Ġ" files " Ġ+ ĠFile . separator ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Environment . MEDIA _ MOUNT ED _ READ _ ONLY Ġ== Ġstate ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġcan Ġonly Ġread Ġthe Ġmedia . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" External Ġstorage Ġis Ġread - only ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage (" Error ", Ġ" Required Ġexternal Ġstorage Ġ( such Ġas Ġan ĠSD Ġcard ) Ġis Ġunavailable Ġfor Ġdata Ġstorage .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSomething Ġelse Ġis Ġwrong . ĠIt Ġmay Ġbe Ġone Ġof Ġmany Ġother Ġstates , Ġbut Ġall Ġwe Ġneed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġto Ġknow Ġis Ġwe Ġcan Ġneither Ġread Ġnor Ġwrite ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" External Ġstorage Ġis Ġunavailable ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage (" Error ", Ġ" Required Ġexternal Ġstorage Ġ( such Ġas Ġan ĠSD Ġcard ) Ġis Ġunavailable Ġor Ġcorrupted .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġstring Ġthat Ġrepresents Ġwhich ĠO CR Ġengine ( s ) Ġare Ġcurrently Ġset Ġto Ġbe Ġrun . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠO CR Ġengine Ġmode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġocr Engine Mode Name : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġresources . getString Array ( R . array . oc reng in em odes ). getOrElse ( ocr Engine Mode ) Ġ{ Ġ"" Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġget Handler (): ĠHandler ? Ġ= Ġhandler ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ= Ġsuper . onCreate ( savedInstanceState ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCall Ġbefore Ġeverything Ġelse . ĊĠĠĠĠĠĠĠ Ġcheck First Launch () ĊĊĠĠĠĠĠĠĠ Ġval Ġwindow Ġ= Ġwindow ĊĠĠĠĠĠĠĠ Ġwindow . add Flags ( WindowManager . LayoutParams . FLAG _ KEEP _ SCREEN _ ON ) ĊĠĠĠĠĠĠĠ Ġrequest Window Feature ( Window . FEATURE _ IN DE TERMIN ATE _ PROGRESS ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . capture ) ĊĊĠĠĠĠĠĠĠ Ġregister For ContextMenu ( status _ view _ bottom ) ĊĠĠĠĠĠĠĠ Ġregister For ContextMenu ( status _ view _ top ) ĊĊĠĠĠĠĠĠĠ Ġhandler Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġlast Result Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġhas Surface Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġbe ep Manager Ġ= ĠBe ep Manager ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCamera Ġsh utter Ġbutton . ĊĠĠĠĠĠĠĠ Ġif Ġ( DISPLAY _ SHUT TER _ BUTTON ) Ġsh utter _ button . setOn Sh utter Button Listener ( this ) ĊĊĠĠĠĠĠĠĠ Ġregister For ContextMenu ( ocr _ result _ text _ view ) ĊĠĠĠĠĠĠĠ Ġregister For ContextMenu ( translation _ text _ view ) ĊĊĠĠĠĠĠĠĠ Ġwith ( Camera Manager ( application )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . camera Manager Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġlistener Ġto Ġchange Ġthe Ġsize Ġof Ġthe Ġview finder Ġrectangle . ĊĠĠĠĠĠĠĠ Ġview finder _ view . setOn Touch Listener ( object Ġ: ĠView . On Touch Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġvar Ġlast X Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinternal Ġvar Ġlast Y Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Touch ( v : ĠView , Ġevent : ĠMotion Event ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ DOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent X Ġ= Ġevent . x . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Y Ġ= Ġevent . y . toInt () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġcamera Manager !!. fr aming Rect ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBUFFER Ġ= Ġ 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBIG _ BUFFER Ġ= Ġ 6 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last X Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdjust Ġthe Ġsize Ġof Ġthe Ġview finder Ġrectangle . ĠCheck Ġif Ġthe Ġtouch Ġevent Ġoccurs Ġin Ġthe Ġcorner Ġareas Ġfirst , Ġbecause Ġthe Ġregions Ġoverlap . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( current X Ġ>= Ġrect !!. left Ġ- ĠBIG _ BUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . left Ġ+ ĠBIG _ BUFFER Ġ|| Ġlast X Ġ>= Ġrect . left Ġ- ĠBIG _ BUFFER Ġ&& Ġlast X Ġ<= Ġrect . left Ġ+ ĠBIG _ BUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . top Ġ+ ĠBIG _ BUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . top Ġ- ĠBIG _ BUFFER Ġ|| Ġlast Y Ġ<= Ġrect . top Ġ+ ĠBIG _ BUFFER Ġ&& Ġlast Y Ġ>= Ġrect . top Ġ- ĠBIG _ BUFFER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop Ġleft Ġcorner : Ġadjust Ġboth Ġtop Ġand Ġleft Ġsides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( last X Ġ- Ġcurrent X ), Ġ 2 Ġ* Ġ( last Y Ġ- Ġcurrent Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current X Ġ>= Ġrect . right Ġ- ĠBIG _ BUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . right Ġ+ ĠBIG _ BUFFER Ġ|| Ġlast X Ġ>= Ġrect . right Ġ- ĠBIG _ BUFFER Ġ&& Ġlast X Ġ<= Ġrect . right Ġ+ ĠBIG _ BUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . top Ġ+ ĠBIG _ BUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . top Ġ- ĠBIG _ BUFFER Ġ|| Ġlast Y Ġ<= Ġrect . top Ġ+ ĠBIG _ BUFFER Ġ&& Ġlast Y Ġ>= Ġrect . top Ġ- ĠBIG _ BUFFER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTop Ġright Ġcorner : Ġadjust Ġboth Ġtop Ġand Ġright Ġsides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( current X Ġ- Ġlast X ), Ġ 2 Ġ* Ġ( last Y Ġ- Ġcurrent Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current X Ġ>= Ġrect . left Ġ- ĠBIG _ BUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . left Ġ+ ĠBIG _ BUFFER Ġ|| Ġlast X Ġ>= Ġrect . left Ġ- ĠBIG _ BUFFER Ġ&& Ġlast X Ġ<= Ġrect . left Ġ+ ĠBIG _ BUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . bottom Ġ+ ĠBIG _ BUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . bottom Ġ- ĠBIG _ BUFFER Ġ|| Ġlast Y Ġ<= Ġrect . bottom Ġ+ ĠBIG _ BUFFER Ġ&& Ġlast Y Ġ>= Ġrect . bottom Ġ- ĠBIG _ BUFFER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBottom Ġleft Ġcorner : Ġadjust Ġboth Ġbottom Ġand Ġleft Ġsides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( last X Ġ- Ġcurrent X ), Ġ 2 Ġ* Ġ( current Y Ġ- Ġlast Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current X Ġ>= Ġrect . right Ġ- ĠBIG _ BUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . right Ġ+ ĠBIG _ BUFFER Ġ|| Ġlast X Ġ>= Ġrect . right Ġ- ĠBIG _ BUFFER Ġ&& Ġlast X Ġ<= Ġrect . right Ġ+ ĠBIG _ BUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . bottom Ġ+ ĠBIG _ BUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . bottom Ġ- ĠBIG _ BUFFER Ġ|| Ġlast Y Ġ<= Ġrect . bottom Ġ+ ĠBIG _ BUFFER Ġ&& Ġlast Y Ġ>= Ġrect . bottom Ġ- ĠBIG _ BUFFER )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBottom Ġright Ġcorner : Ġadjust Ġboth Ġbottom Ġand Ġright Ġsides . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( current X Ġ- Ġlast X ), Ġ 2 Ġ* Ġ( current Y Ġ- Ġlast Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current X Ġ>= Ġrect . left Ġ- ĠBUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . left Ġ+ ĠBUFFER Ġ|| Ġlast X Ġ>= Ġrect . left Ġ- ĠBUFFER Ġ&& Ġlast X Ġ<= Ġrect . left Ġ+ ĠBUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . bottom Ġ&& Ġcurrent Y Ġ>= Ġrect . top Ġ|| Ġlast Y Ġ<= Ġrect . bottom Ġ&& Ġlast Y Ġ>= Ġrect . top )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdjust ing Ġleft Ġside : Ġevent Ġfalls Ġwithin ĠBUFFER Ġpixels Ġof Ġleft Ġside , Ġand Ġbetween Ġtop Ġand Ġbottom Ġside Ġlimits . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( last X Ġ- Ġcurrent X ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current X Ġ>= Ġrect . right Ġ- ĠBUFFER Ġ&& Ġcurrent X Ġ<= Ġrect . right Ġ+ ĠBUFFER Ġ|| Ġlast X Ġ>= Ġrect . right Ġ- ĠBUFFER Ġ&& Ġlast X Ġ<= Ġrect . right Ġ+ ĠBUFFER ) Ġ&& Ġ( current Y Ġ<= Ġrect . bottom Ġ&& Ġcurrent Y Ġ>= Ġrect . top Ġ|| Ġlast Y Ġ<= Ġrect . bottom Ġ&& Ġlast Y Ġ>= Ġrect . top )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdjust ing Ġright Ġside : Ġevent Ġfalls Ġwithin ĠBUFFER Ġpixels Ġof Ġright Ġside , Ġand Ġbetween Ġtop Ġand Ġbottom Ġside Ġlimits . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 2 Ġ* Ġ( current X Ġ- Ġlast X ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current Y Ġ<= Ġrect . top Ġ+ ĠBUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . top Ġ- ĠBUFFER Ġ|| Ġlast Y Ġ<= Ġrect . top Ġ+ ĠBUFFER Ġ&& Ġlast Y Ġ>= Ġrect . top Ġ- ĠBUFFER ) Ġ&& Ġ( current X Ġ<= Ġrect . right Ġ&& Ġcurrent X Ġ>= Ġrect . left Ġ|| Ġlast X Ġ<= Ġrect . right Ġ&& Ġlast X Ġ>= Ġrect . left )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdjust ing Ġtop Ġside : Ġevent Ġfalls Ġwithin ĠBUFFER Ġpixels Ġof Ġtop Ġside , Ġand Ġbetween Ġleft Ġand Ġright Ġside Ġlimits . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 0 , Ġ 2 Ġ* Ġ( last Y Ġ- Ġcurrent Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(( current Y Ġ<= Ġrect . bottom Ġ+ ĠBUFFER Ġ&& Ġcurrent Y Ġ>= Ġrect . bottom Ġ- ĠBUFFER Ġ|| Ġlast Y Ġ<= Ġrect . bottom Ġ+ ĠBUFFER Ġ&& Ġlast Y Ġ>= Ġrect . bottom Ġ- ĠBUFFER ) Ġ&& Ġ( current X Ġ<= Ġrect . right Ġ&& Ġcurrent X Ġ>= Ġrect . left Ġ|| Ġlast X Ġ<= Ġrect . right Ġ&& Ġlast X Ġ>= Ġrect . left )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdjust ing Ġbottom Ġside : Ġevent Ġfalls Ġwithin ĠBUFFER Ġpixels Ġof Ġbottom Ġside , Ġand Ġbetween Ġleft Ġand Ġright Ġside Ġlimits . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. adjust F ram ing Rect ( 0 , Ġ 2 Ġ* Ġ( current Y Ġ- Ġlast Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNullPointerException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" F ram ing Ġrect Ġnot Ġavailable ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġcurrent X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġcurrent Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMotion Event . ACTION _ UP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast X Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Y Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġis Engine Ready Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġreset Status View () ĊĊĠĠĠĠĠĠĠ Ġval Ġprevious Source Language Code O cr Ġ= Ġsource Language Code O cr ĊĠĠĠĠĠĠĠ Ġval Ġprevious O cr Engine Mode Ġ= Ġocr Engine Mode ĊĊĠĠĠĠĠĠĠ Ġread Preferences () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġcamera Ġpreview Ġsurface . ĊĠĠĠĠĠĠĠ Ġsurface Holder Ġ= Ġpreview _ view . holder ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Surface ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Holder !!. add Callback ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsurface Holder !!. setType ( Surface Holder . SURFACE _ TYPE _ PUSH _ BUFFER S ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠComment Ġout Ġthe Ġfollowing Ġblock Ġto Ġtest Ġnon - OCR Ġfunctions Ġwithout Ġan ĠSD Ġcard . ĊĊĠĠĠĠĠĠĠ Ġ// ĠDo ĠO CR Ġengine Ġinitialization , Ġif Ġnecessary . ĊĠĠĠĠĠĠĠ Ġval Ġdo New Init Ġ= Ġbase Api Ġ== Ġnull Ġ|| Ġsource Language Code O cr Ġ!= Ġprevious Source Language Code O cr Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ!= Ġprevious O cr Engine Mode ĊĠĠĠĠĠĠĠ Ġif Ġ( do New Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe ĠO CR Ġengine ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstorage Directory Ġ= Ġstorage Directory ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( storage Directory Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit O cr Engine ( storage Directory , Ġsource Language Code O cr , Ġsource Language Readable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġalready Ġhave Ġthe Ġengine Ġinitialized , Ġso Ġjust Ġstart Ġthe Ġcamera . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresume OCR () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMethod Ġto Ġstart Ġor Ġrestart Ġrecognition Ġafter Ġthe ĠO CR Ġengine Ġhas Ġbeen Ġinitialized , ĊĠĠĠĠ Ġ* Ġor Ġafter Ġthe Ġapp Ġreg ains Ġfocus . ĠSets Ġstate Ġrelated Ġsettings Ġand ĠO CR Ġengine Ġparameters , ĊĠĠĠĠ Ġ* Ġand Ġrequests Ġcamera Ġinitialization . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġresume OCR () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" resume OCR () ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġmethod Ġis Ġcalled Ġwhen ĠT esseract Ġhas Ġalready Ġbeen Ġsuccessfully Ġinitialized , Ġso Ġset ĊĠĠĠĠĠĠĠ Ġ// Ġis Engine Ready Ġ= Ġtrue Ġhere . ĊĠĠĠĠĠĠĠ Ġis Engine Ready Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġis Paused Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġhandler ?. reset State () ĊĠĠĠĠĠĠĠ Ġif Ġ( base Api Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Api !!. page Seg Mode Ġ= Ġpage Segmentation Mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Api !!. set Variable ( Tess Base API . VAR _ CHAR _ BLACK LIST , Ġcharacter Black list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Api !!. set Variable ( Tess Base API . VAR _ CHAR _ WHITE LIST , Ġcharacter Whitelist ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( has Surface ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġactivity Ġwas Ġpaused Ġbut Ġnot Ġstopped , Ġso Ġthe Ġsurface Ġstill Ġexists . ĠTherefore ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsurface Created () Ġwon 't Ġbe Ġcalled , Ġso Ġinit Ġthe Ġcamera Ġhere . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Init Camera () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCalled Ġwhen Ġthe Ġsh utter Ġbutton Ġis Ġpressed Ġin Ġcontinuous Ġmode . Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġon Sh utter Button Press Continuous () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Paused Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġhandler ?. stop () ĊĠĠĠĠĠĠĠ Ġbe ep Manager !!. play Be ep Sound And V ibrate () ĊĠĠĠĠĠĠĠ Ġif Ġ( last Result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle O cr Decode ( last Result !! ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" OCR Ġfailed . ĠPlease Ġtry Ġagain .", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . TOP , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresume Continuous De coding () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠCalled Ġto Ġresume Ġrecognition Ġafter Ġtranslation Ġin Ġcontinuous Ġmode . Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġresume Continuous De coding () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Paused Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġreset Status View () ĊĠĠĠĠĠĠĠ ĠsetStatus View For Continuous () ĊĠĠĠĠĠĠĠ ĠDecode Handler . reset Decode State () ĊĠĠĠĠĠĠĠ Ġhandler ?. reset State () ĊĠĠĠĠĠĠĠ Ġif Ġ( DISPLAY _ SHUT TER _ BUTTON ) Ġsh utter _ button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Created ( holder : ĠSurface Holder ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" surface Created () ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( holder Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" surface Created Ġgave Ġus Ġa Ġnull Ġsurface ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠOnly Ġinitialize Ġthe Ġcamera Ġif Ġthe ĠO CR Ġengine Ġis Ġready Ġto Ġgo . ĊĠĠĠĠĠĠĠ Ġif Ġ(! has Surface Ġ&& Ġis Engine Ready ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" surface Created (): Ġcalling Ġtry Init Camera () ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Init Camera () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhas Surface Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠInitializes Ġthe Ġcamera Ġand Ġstarts Ġthe Ġhandler Ġto Ġbegin Ġpreview ing . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtry Init Camera () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( application , ĠManifest . permission . CAMERA ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Camera () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRequest Ġcamera Ġpermission . ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . dialog _ permissions _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . dialog _ permissions _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Cancel able ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . dialog _ permissions _ button _ positive ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( this , ĠarrayOf ( Manifest . permission . CAMERA ), ĠPER MISSION _ REQUEST _ CAMERA ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. set Negative Button ( R . string . dialog _ permissions _ button _ negative ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit On Camera In accessible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. create (). show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Request Permissions Result ( request Code : ĠInt , Ġpermissions : ĠArray < out ĠString >, Ġgrant Results : ĠInt Array ) Ġ= Ġsuper . on Request Permissions Result ( request Code , Ġpermissions , Ġgrant Results ). also Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠPER MISSION _ REQUEST _ CAMERA Ġ&& Ġgrant Results . isNotEmpty () Ġ&& Ġgrant Results [ 0 ] Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Camera () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit On Camera In accessible () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Camera () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" init Camera () ") ĊĠĠĠĠĠĠĠ Ġif Ġ( surface Holder Ġ== Ġnull ) Ġthrow ĠIllegalStateException (" No ĠSurface Holder Ġprovided ") ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOpen Ġand Ġinitialize Ġthe Ġcamera . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcamera Manager !!. open Driver ( surface Holder !! ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreating Ġthe Ġhandler Ġstarts Ġthe Ġpreview , Ġwhich Ġcan Ġalso Ġthrow Ġa ĠRuntimeException . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler Ġ= ĠCapture Activity Handler ( this , Ġcamera Manager !! , Ġis Continuous Mode Active ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( io e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit On Camera Error () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠRuntimeException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBar code ĠScanner Ġhas Ġseen Ġcrashes Ġin Ġthe Ġwild Ġof Ġthis Ġvariety : ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjava . ? lang . ? RuntimeException : ĠFail Ġto Ġconnect Ġto Ġcamera Ġservice . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit On Camera Error () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexit On Camera Error () Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( R . string . dialog _ error _ generic _ title , ĠR . string . dialog _ error _ camera _ message ) ĊĊĠĠĠ Ġprivate Ġfun Ġexit On Camera In accessible () Ġ= Ġshow ErrorMessage ( R . string . dialog _ no _ camera _ permission _ title , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . dialog _ no _ camera _ permission _ message ) ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler ?. quit S ynchronously () ĊĊĠĠĠĠĠĠĠ Ġ// ĠStop Ġusing Ġthe Ġcamera , Ġto Ġavoid Ġconflicting Ġwith Ġother Ġcamera - based Ġapps . ĊĠĠĠĠĠĠĠ Ġcamera Manager !!. close Driver () ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! has Surface ) Ġpreview _ view . holder . remove Callback ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġstop Handler () Ġ= Ġhandler ?. stop () ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( base Api Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbase Api !!. end () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon KeyDown ( keyCode : ĠInt , Ġevent : ĠKeyEvent ) Ġ= Ġwhen Ġ( keyCode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ BACK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Paused Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe 're Ġpaused Ġin Ġcontinuous Ġmode . ĠResume . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresume Continuous De coding () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Result Ġ== Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe 're Ġnot Ġviewing Ġan ĠO CR Ġresult . ĠExit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGo Ġback Ġto Ġpreview ing Ġin Ġregular ĠO CR Ġmode . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Status View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. send Empty Message ( R . id . restart _ preview ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ CAMERA Ġ-> Ġif Ġ( is Continuous Mode Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sh utter Button Press Continuous () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. hardware Sh utter Button Click () ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠ ĠKeyEvent . KEYCODE _ FOCUS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġperform Ġautofocus Ġif Ġuser Ġis Ġnot Ġholding Ġdown Ġthe Ġbutton . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . repeat Count Ġ== Ġ 0 ) Ġcamera Manager !!. request Auto Focus ( 5 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on KeyDown ( keyCode , Ġevent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ) Ġ= Ġsuper . onCreate Options Menu ( menu ). let Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . add ( 0 , ĠSET T INGS _ ID , Ġ 0 , Ġ" Settings "). setIcon ( android . R . drawable . ic _ menu _ preferences ) ĊĠĠĠĠĠĠĠ Ġmenu . add ( 0 , ĠA BO UT _ ID , Ġ 0 , Ġ" About "). setIcon ( android . R . drawable . ic _ menu _ info _ details ) ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent : ĠIntent ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSET T INGS _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent (). set Class ( this , ĠPreferences Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA BO UT _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= ĠIntent ( this , ĠHelp Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Help Activity . REQUEST ED _ PAGE _ KEY , ĠHelp Activity . AB OUT _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Destroyed ( holder : ĠSurface Holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Surface Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsurface Changed ( holder : ĠSurface Holder , Ġformat : ĠInt , Ġwidth : ĠInt , Ġheight : ĠInt ) Ġ{} ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġnecessary Ġlanguage Ġcode Ġvalues Ġfor Ġthe Ġgiven ĠO CR Ġlanguage . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Source Language ( language Code : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Language Code O cr Ġ= Ġlanguage Code ĊĠĠĠĠĠĠĠ Ġsource Language Code Translation Ġ= ĠLanguage Code Helper . map Language Code ( language Code ) ĊĠĠĠĠĠĠĠ Ġsource Language Readable Ġ= ĠLanguage Code Helper . get O cr Language Name ( this , Ġlanguage Code ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠSets Ġthe Ġnecessary Ġlanguage Ġcode Ġvalues Ġfor Ġthe Ġtranslation Ġtarget Ġlanguage . Ġ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Target Language ( language Code : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtarget Language Code Translation Ġ= Ġlanguage Code ĊĠĠĠĠĠĠĠ Ġtarget Language Readable Ġ= ĠLanguage Code Helper . get Translation Language Name ( this , Ġlanguage Code ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġinitialization Ġof Ġthe ĠO CR Ġengine Ġwith Ġthe Ġgiven Ġparameters . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġstorage Root ĠPath Ġto Ġlocation Ġof Ġthe Ġt ess data Ġdirectory Ġto Ġuse . ĊĠĠĠĠ Ġ* Ġ@ param Ġlanguage Code ĠThree - letter ĠISO Ġ 6 3 9 - 3 Ġlanguage Ġcode Ġfor ĠO CR . ĊĠĠĠĠ Ġ* Ġ@ param Ġlanguage Name ĠName Ġof Ġthe Ġlanguage Ġfor ĠO CR , Ġfor Ġexample , Ġ" English ". ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit O cr Engine ( storage Root : ĠFile , Ġlanguage Code : ĠString , Ġlanguage Name : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Engine Ready Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġdialog Ġbox Ġfor Ġthe Ġther mo meter - style Ġdownload Ġprogress Ġindicator ĊĠĠĠĠĠĠĠ Ġif Ġ( dialog Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdialog !!. dismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog Ġ= ĠProgress Dialog ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe Ġhave Ġa Ġlanguage Ġthat Ġonly Ġruns Ġusing ĠCube , Ġthen Ġset Ġthe Ġocr Engine Mode Ġto ĠCube . ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Ġ!= ĠT ess Base API . O EM _ CUBE _ ONLY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin ĠC UBE _ REQUIRED _ L ANGU AGES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ== Ġlanguage Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ CUBE _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this ). edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ OCR _ ENGINE _ MODE , Ġocr Engine Mode Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġour Ġlanguage Ġdoesn 't Ġsupport ĠCube , Ġthen Ġset Ġthe Ġocr Engine Mode Ġto ĠT esseract . ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Ġ!= ĠT ess Base API . O EM _ TES SER ACT _ ONLY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcube Ok Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( s Ġin ĠC UBE _ SUPPORTED _ L ANGU AGES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Ġ== Ġlanguage Code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcube Ok Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! cube Ok ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ TES SER ACT _ ONLY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this ). edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ OCR _ ENGINE _ MODE , Ġocr Engine Mode Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġthe Ġname Ġof Ġthe ĠO CR Ġengine Ġwe 're Ġinitializing Ġin Ġthe Ġin determinate Ġprogress Ġdialog Ġbox . ĊĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. setTitle (" Please Ġwait ") ĊĠĠĠĠĠĠĠ Ġval Ġocr Engine Mode Name Ġ= Ġocr Engine Mode Name ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Name Ġ== Ġ" Both ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" Initializing ĠCube Ġand ĠT esseract ĠO CR Ġengines Ġfor Ġ$ language Name ...") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" Initializing Ġ$ ocr Engine Mode Name ĠO CR Ġengine Ġfor Ġ$ language Name ...") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. show () ĊĊĠĠĠĠĠĠĠ Ġhandler ?. quit S ynchronously () ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisable Ġcontinuous Ġmode Ġif Ġwe 're Ġusing ĠCube . ĠThis Ġwill Ġprevent Ġbad Ġstates Ġfor Ġdevices ĊĠĠĠĠĠĠĠ Ġ// Ġwith Ġlow Ġmemory Ġthat Ġcrash Ġwhen Ġrunning ĠO CR Ġwith ĠCube , Ġand Ġprevent Ġun wanted Ġdelays . ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Ġ== ĠT ess Base API . O EM _ CUBE _ ONLY Ġ|| Ġocr Engine Mode Ġ== ĠT ess Base API . O EM _ TES SER ACT _ CUBE _ COMB IN ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Dis abling Ġcontinuous Ġpreview ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Continuous Mode Active Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( this ). edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ CONT IN UO US _ PRE VIEW , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart ĠAsync Task Ġto Ġinstall Ġlanguage Ġdata Ġand Ġinit ĠO CR . ĊĠĠĠĠĠĠĠ Ġbase Api Ġ= ĠT ess Base API () ĊĠĠĠĠĠĠĠ ĠO cr Init AsyncTask ( this , Ġbase Api !! , Ġdialog !! , Ġprogress Dialog !! , Ġlanguage Code , Ġlanguage Name , Ġocr Engine Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute ( storage Root . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplays Ġinformation Ġrel ating Ġto Ġthe Ġresult Ġof ĠO CR , Ġand Ġrequests Ġa Ġtranslation Ġif Ġnecessary . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġocr Result ĠObject Ġrepresenting Ġsuccessful ĠO CR Ġresults . ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġif Ġa Ġnon - null Ġresult Ġwas Ġreceived Ġfor ĠO CR . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġhandle O cr Decode ( ocr Result : ĠO cr Result ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Result Ġ= Ġocr Result ĊĊĠĠĠĠĠĠĠ Ġ// ĠTest Ġwhether Ġthe Ġresult Ġis Ġnull . ĊĠĠĠĠĠĠĠ Ġval Ġocr Result Text Ġ= Ġocr Result . text ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Result Text . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" OCR Ġfailed . ĠPlease Ġtry Ġagain .", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . TOP , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTurn Ġoff Ġcapture - related ĠUI Ġelements . ĊĠĠĠĠĠĠĠ Ġsh utter _ button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġstatus _ view _ top . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġcamera _ button _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġview finder _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġresult _ view . visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġlast Bitmap Ġ= Ġocr Result . get Bitmap () ĊĠĠĠĠĠĠĠ Ġif Ġ( last Bitmap Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage _ view . setImage Bitmap ( Bitmap Factory . decode Resource ( resources , ĠR . drawable . ic _ launcher )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage _ view . setImage Bitmap ( last Bitmap ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġthe Ġrecognized Ġtext . ĊĠĠĠĠĠĠĠ Ġsource _ language _ text _ view . text Ġ= Ġsource Language Readable ĊĠĠĠĠĠĠĠ Ġocr _ result _ text _ view . text Ġ= Ġocr Result Text ĊĠĠĠĠĠĠĠ Ġ// ĠCr ude ly Ġscale Ġbet w ee en Ġ 2 2 Ġand Ġ 3 2 Ġ-- Ġbigger Ġfont Ġfor Ġshorter Ġtext . ĊĠĠĠĠĠĠĠ Ġval Ġscaled Size Ġ= ĠMath . max ( 2 2 , Ġ 3 2 Ġ- Ġocr Result Text . length Ġ/ Ġ 4 ) ĊĠĠĠĠĠĠĠ Ġocr _ result _ text _ view . setText Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġscaled Size . toFloat ()) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Translation Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHandle Ġtranslation Ġtext Ġfields . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation _ language _ label _ text _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( translation _ language _ text _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġtarget Language Readable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Type face ( Type face . default From Style ( Type face . NORMAL ), ĠType face . NORMAL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠActivate / re - activate Ġthe Ġin determinate Ġprogress Ġindicator . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation _ text _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin determinate _ progress _ indicator _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ProgressBar Visibility ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġtranslation Ġasynchronously . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTranslate AsyncTask ( this , Ġsource Language Code Translation , Ġtarget Language Code Translation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result Text ). execute () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation _ language _ label _ text _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation _ language _ text _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtranslation _ text _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin determinate _ progress _ indicator _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ProgressBar Visibility ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplays Ġinformation Ġrel ating Ġto Ġthe Ġresults Ġof Ġa Ġsuccessful Ġreal - time ĠO CR Ġrequest . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġocr Result ĠObject Ġrepresenting Ġsuccessful ĠO CR Ġresults . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġhandle O cr Continuous Decode ( ocr Result : ĠO cr Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Result Ġ= Ġocr Result ĊĊĠĠĠĠĠĠĠ Ġ// ĠSend Ġan ĠO cr Result Text Ġobject Ġto Ġthe ĠView finder View Ġfor Ġtext Ġrendering . ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ( t br s ): Ġnull ability Ġstub bed Ġwith Ġ. or Empty . ĠDo Ġsomething Ġabout Ġit . ĊĠĠĠĠĠĠĠ Ġval Ġocr Result Text Ġ= Ġocr Result . text . or Empty () ĊĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= ĠO cr Result Text ( ocr Result Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . word Conf id ences ?. asList (). or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . bitmap Dimensions , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . region BoundingBox es . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . text line BoundingBox es . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . strip BoundingBox es . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġocr Result . word BoundingBox es . or Empty ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġmean Confidence Ġ= Ġocr Result . mean Confidence ĊĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ RE CO GN IZED _ TEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġthe Ġrecognized Ġtext Ġon Ġthe Ġscreen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( status _ view _ top ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġocr Result Text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscaled Size Ġ= ĠMath . max ( 2 2 , Ġ 3 2 Ġ- Ġocr Result Text . length Ġ/ Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Text Size ( Typed Value . COMPLEX _ UNIT _ SP , Ġscaled Size . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( Color . BLACK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Background Resource ( R . color . status _ top _ text _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground . alpha Ġ= Ġmean Confidence Ġ* Ġ( 2 5 5 Ġ/ Ġ 1 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ METADATA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDisplay Ġrecognition - related Ġmetadata Ġat Ġthe Ġbottom Ġof Ġthe Ġscreen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrecognition Time Required Ġ= Ġocr Result . recognition Time Required ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . text Size Ġ= Ġ 1 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . text Ġ= Ġ" OCR : Ġ" Ġ+ Ġsource Language Readable Ġ+ Ġ" Ġ- ĠMean Ġconfidence : Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmean Confidence . toString () Ġ+ Ġ" Ġ- ĠTime Ġrequired : Ġ" Ġ+ Ġrecognition Time Required Ġ+ Ġ" Ġms " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠVersion Ġof Ġhandle O cr Continuous Decode Ġfor Ġfailed ĠO CR Ġrequests . ĠDisplays Ġa Ġfailure Ġmessage . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġobj ĠMetadata Ġfor Ġthe Ġfailed ĠO CR Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġhandle O cr Continuous Decode ( obj : ĠO cr Result Failure ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Result Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġthe Ġtext Ġin Ġthe Ġrecognized Ġtext Ġbox . ĊĠĠĠĠĠĠĠ Ġstatus _ view _ top . text Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ METADATA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . text Size Ġ= Ġ 1 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . text Ġ= ĠgetString ( R . string . continuous _ decode _ status , Ġsource Language Readable , Ġobj . time Required ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Span Between Tokens ("- ", Ġerror Status Span ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ContextMenu ( menu : ĠContext Menu , Ġv : ĠView , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Info : ĠContext Menu Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ContextMenu ( menu , Ġv , Ġmenu Info ) ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ== Ġocr _ result _ text _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( Menu . NONE , ĠOPTIONS _ COPY _ RE CO GN IZED _ TEXT _ ID , ĠMenu . NONE , Ġ" Copy Ġrecognized Ġtext ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( Menu . NONE , ĠOPTIONS _ SHARE _ RE CO GN IZED _ TEXT _ ID , ĠMenu . NONE , Ġ" Share Ġrecognized Ġtext ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( v Ġ== Ġtranslation _ text _ view ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( Menu . NONE , ĠOPTIONS _ COPY _ TRANSL ATED _ TEXT _ ID , ĠMenu . NONE , Ġ" Copy Ġtranslated Ġtext ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu . add ( Menu . NONE , ĠOPTIONS _ SHARE _ TRANSL ATED _ TEXT _ ID , ĠMenu . NONE , Ġ" Share Ġtranslated Ġtext ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Context ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġclipboard Manager Ġ= Ġget System Service ( Context . CLIP BOARD _ SERVICE ) Ġas ĠClip board Manager ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠOPTIONS _ COPY _ RE CO GN IZED _ TEXT _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclipboard Manager . text Ġ= Ġocr _ result _ text _ view . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clipboard Manager . has Text ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" Text Ġcopied .", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . BOTTOM , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOPTIONS _ SHARE _ RE CO GN IZED _ TEXT _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Re cognized Text Intent Ġ= ĠIntent ( android . content . Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Re cognized Text Intent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Re cognized Text Intent . putExtra ( android . content . Intent . EXTRA _ TEXT , Ġocr _ result _ text _ view . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( share Re cognized Text Intent , Ġ" Share Ġvia ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOPTIONS _ COPY _ TRANSL ATED _ TEXT _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclipboard Manager . text Ġ= Ġtranslation _ text _ view . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clipboard Manager . has Text ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" Text Ġcopied .", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . BOTTOM , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOPTIONS _ SHARE _ TRANSL ATED _ TEXT _ ID Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshare Translated Text Intent Ġ= ĠIntent ( android . content . Intent . ACTION _ SEND ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Translated Text Intent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshare Translated Text Intent . putExtra ( android . content . Intent . EXTRA _ TEXT , Ġtranslation _ text _ view . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( share Translated Text Intent , Ġ" Share Ġvia ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn Ġsuper . on Context ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRe sets Ġview Ġelements . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreset Status View () Ġ{ ĊĠĠĠĠĠĠĠ Ġresult _ view . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ METADATA ) Ġwith ( status _ view _ bottom ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Size Ġ= Ġ 1 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset TextColor ( resources . getColor ( R . color . status _ text )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvisibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ RE CO GN IZED _ TEXT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ top . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ top . text Size Ġ= Ġ 1 4 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ top . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview finder _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcamera _ button _ view . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġif Ġ( DISPLAY _ SHUT TER _ BUTTON ) Ġsh utter _ button . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġlast Result Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠDisplays Ġa Ġpop - up Ġmessage Ġshowing Ġthe Ġname Ġof Ġthe Ġcurrent ĠO CR Ġsource Ġlanguage . Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġshow Language Name () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoast Ġ= ĠToast . makeText ( this , Ġ" OCR : Ġ" Ġ+ Ġsource Language Readable !! , ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ Ġtoast . set Gravity ( Gravity . TOP , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġtoast . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplays Ġan Ġinitial Ġmessage Ġto Ġthe Ġuser Ġwhile Ġwaiting Ġfor Ġthe Ġfirst ĠO CR Ġrequest Ġto Ġbe ĊĠĠĠĠ Ġ* Ġcompleted Ġafter Ġstarting Ġreal time ĠO CR . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun ĠsetStatus View For Continuous () Ġ{ ĊĠĠĠĠĠĠĠ Ġview finder _ view . result Text Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġif Ġ( CONT IN UO US _ DISPLAY _ METADATA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus _ view _ bottom . text Ġ= Ġ" OCR : Ġ$ source Language Readable Ġ- Ġwaiting Ġfor ĠO CR ..." ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġset Button Visibility ( visible : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsh utter _ button . visibility Ġ= Ġif Ġ( visible Ġ&& ĠDISPLAY _ SHUT TER _ BUTTON ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnables / disable s Ġthe Ġsh utter Ġbutton Ġto Ġprevent Ġdouble - click s Ġon Ġthe Ġbutton . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġclick able ĠTrue Ġif Ġthe Ġbutton Ġshould Ġaccept Ġa Ġclick . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġset Sh utter Button Clickable ( click able : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsh utter _ button . is Clickable Ġ= Ġclick able ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRequest Ġthe Ġview finder Ġto Ġbe Ġinvalid ated . Ġ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġdraw View finder () Ġ= Ġview finder _ view . draw () ĊĊĠĠĠ Ġoverride Ġfun Ġon Sh utter Button Click ( b : ĠSh utter Button ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Continuous Mode Active ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Sh utter Button Press Continuous () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler ?. sh utter Button Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Sh utter Button Focus ( b : ĠSh utter Button , Ġpressed : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Delayed Auto Focus () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequests Ġautofocus Ġafter Ġa Ġ 3 5 0 Ġms Ġdelay . ĠThis Ġdelay Ġprevents Ġrequesting Ġfocus Ġwhen Ġthe Ġuser ĊĠĠĠĠ Ġ* Ġjust Ġwants Ġto Ġclick Ġthe Ġsh utter Ġbutton Ġwithout Ġfoc using . ĠQuick Ġbutton Ġpress / release Ġwill ĊĠĠĠĠ Ġ* Ġtrigger Ġon Sh utter Button Click () Ġbefore Ġthe Ġfocus Ġk icks Ġin . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Delayed Auto Focus () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWait Ġ 3 5 0 Ġms Ġbefore Ġfoc using Ġto Ġavoid Ġinter fer ing Ġwith Ġquick Ġbutton Ġp resses Ġwhen ĊĠĠĠĠĠĠĠ Ġ// Ġthe Ġuser Ġjust Ġwants Ġto Ġtake Ġa Ġpicture Ġwithout Ġfoc using . ĊĠĠĠĠĠĠĠ Ġcamera Manager !!. request Auto Focus ( 3 5 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġwant Ġthe Ġhelp Ġscreen Ġto Ġbe Ġshown Ġautomatically Ġthe Ġfirst Ġtime Ġa Ġnew Ġversion Ġof Ġthe Ġapp Ġis ĊĠĠĠĠ Ġ* Ġrun . ĠThe Ġeasiest Ġway Ġto Ġdo Ġthis Ġis Ġto Ġcheck Ġandroid : version Code Ġfrom Ġthe Ġmanifest , Ġand Ġcompare ĊĠĠĠĠ Ġ* Ġit Ġto Ġa Ġvalue Ġstored Ġas Ġa Ġpreference . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcheck First Launch (): ĠBoolean Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Version Ġ= Ġprefs . getInt ( Preferences Activity . KEY _ HELP _ VERSION _ SHO WN , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġclean Install Ġ= Ġlast Version Ġ== Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( clean Install ) Ġwrite Default Preferences () ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Version Ġ= Ġpackage Manager . get Package Info ( packageName , Ġ 0 ). version Code ĊĠĠĠĠĠĠĠ Ġ( current Version Ġ> Ġlast Version ). also Ġ{ Ġupgraded Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! up graded ) Ġreturn @ also ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRecord Ġthe Ġlast Ġversion Ġfor Ġwhich Ġwe Ġlast Ġdisplayed Ġthe ĠWhat 's ĠNew Ġ( Help ) Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefs . edit Ġ{ Ġput Int ( Preferences Activity . KEY _ HELP _ VERSION _ SHO WN , Ġcurrent Version ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġdefault Ġpage Ġon Ġa Ġclean Ġinstall , Ġand Ġthe Ġwhat 's Ġnew Ġpage Ġon Ġan Ġupgrade . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( Intent ( this , ĠHelp Activity :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ ACTIVITY _ CLEAR _ WHEN _ TASK _ RESET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput Extra ( Help Activity . REQUEST ED _ PAGE _ KEY , Ġif Ġ( clean Install ) ĠHelp Activity . DEFAULT _ PAGE Ġelse ĠHelp Activity . WH ATS _ NEW _ PAGE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġe ) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġvalues Ġfrom Ġshared Ġpreferences Ġand Ġsets Ġthe Ġcorresponding Ġdata Ġmembers Ġin Ġthis Ġactivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġread Preferences () Ġ= Ġwith ( Preference Manager . getDefault SharedPreferences ( this )) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġfrom Ġpreferences , Ġand Ġset Ġin Ġthis ĠActivity , Ġthe Ġlanguage Ġpreferences . ĊĠĠĠĠĠĠĠ ĠPreference Manager . setDefault Values ( this @ Capture Activity , ĠR . xml . preferences , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġset Source Language ( getString ( Preferences Activity . KEY _ SOURCE _ LANGUAGE _ PREFER ENCE , ĠDEFAULT _ SOURCE _ LANGUAGE _ CODE )) ĊĠĠĠĠĠĠĠ Ġset Target Language ( getString ( Preferences Activity . KEY _ TARGET _ LANGUAGE _ PREFER ENCE , ĠDEFAULT _ TARGET _ LANGUAGE _ CODE )) ĊĠĠĠĠĠĠĠ Ġis Translation Active Ġ= Ġget Boolean ( Preferences Activity . KEY _ TO GGLE _ TRANSL ATION , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġfrom Ġpreferences , Ġand Ġset Ġin Ġthis ĠActivity , Ġthe Ġcapture Ġmode Ġpreference . ĊĠĠĠĠĠĠĠ Ġis Continuous Mode Active Ġ= Ġget Boolean ( Preferences Activity . KEY _ CONT IN UO US _ PRE VIEW , ĠDEFAULT _ TO GGLE _ CONT IN UO US ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġfrom Ġpreferences , Ġand Ġset Ġin Ġthis ĠActivity , Ġthe Ġpage Ġsegmentation Ġmode Ġpreference . ĊĠĠĠĠĠĠĠ Ġval Ġpage Segmentation Modes Ġ= Ġresources . getString Array ( R . array . page segmentation modes ) ĊĠĠĠĠĠĠĠ Ġpage Segmentation Mode Ġ= Ġif Ġ( page Segmentation Modes . size Ġ!= Ġ 9 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Incorrect Ġresource Ġfor Ġpage Ġsegmentation Ġmodes ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ess Base API . Page Seg Mode . PS M _ AUTO ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġwhen Ġ( getString ( Preferences Activity . KEY _ PAGE _ SEGMENT ATION _ MODE , Ġpage Segmentation Modes [ 0 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 0 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ AUTO _ OS D ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 1 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ AUTO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 2 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ BLOCK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 3 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ CHAR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 4 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ COLUMN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 5 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 6 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ WORD ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 7 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SINGLE _ BLOCK _ VERT _ TEXT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Segmentation Modes [ 8 ] Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ SPARSE _ TEXT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠT ess Base API . Page Seg Mode . PS M _ AUTO ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġfrom Ġpreferences , Ġand Ġset Ġin Ġthis ĠActivity , Ġthe ĠO CR Ġengine Ġmode . ĊĠĠĠĠĠĠĠ Ġval Ġocr Engine Modes Ġ= Ġresources . getString Array ( R . array . oc reng in em odes ) ĊĠĠĠĠĠĠĠ Ġval Ġocr Engine Mode Name Ġ= ĠgetString ( Preferences Activity . KEY _ OCR _ ENGINE _ MODE , Ġocr Engine Modes [ 0 ]) ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Name Ġ== Ġocr Engine Modes [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ TES SER ACT _ ONLY ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ocr Engine Mode Name Ġ== Ġocr Engine Modes [ 1 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ CUBE _ ONLY ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( ocr Engine Mode Name Ġ== Ġocr Engine Modes [ 2 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġocr Engine Mode Ġ= ĠT ess Base API . O EM _ TES SER ACT _ CUBE _ COMB IN ED ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRetrieve Ġfrom Ġpreferences , Ġand Ġset Ġin Ġthis ĠActivity , Ġthe Ġcharacter Ġblacklist Ġand Ġwhitelist . ĊĠĠĠĠĠĠĠ Ġcharacter Black list Ġ= ĠO cr Character Helper . get Black list ( this , Ġsource Language Code O cr ) ĊĠĠĠĠĠĠĠ Ġcharacter Whitelist Ġ= ĠO cr Character Helper . get Whitelist ( this , Ġsource Language Code O cr ) ĊĊĠĠĠĠĠĠĠ Ġbe ep Manager !!. update Prefs () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġdefault Ġvalues Ġfor Ġpreferences . ĊĠĠĠĠ Ġ* ĠTo Ġbe Ġcalled Ġafter Ġfresh Ġinstall . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġwrite Default Preferences () Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ). edit Ġ{ ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ CONT IN UO US _ PRE VIEW , ĠDEFAULT _ TO GGLE _ CONT IN UO US ) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ SOURCE _ LANGUAGE _ PREFER ENCE , ĠDEFAULT _ SOURCE _ LANGUAGE _ CODE ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ TO GGLE _ TRANSL ATION , ĠDEFAULT _ TO GGLE _ TRANSL ATION ) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ TARGET _ LANGUAGE _ PREFER ENCE , ĠDEFAULT _ TARGET _ LANGUAGE _ CODE ) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ TRANSL ATOR , ĠDEFAULT _ TRANSL ATOR ) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ OCR _ ENGINE _ MODE , ĠDEFAULT _ OCR _ ENGINE _ MODE ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ AUTO _ FOCUS , ĠDEFAULT _ TO GGLE _ AUTO _ FOCUS ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ DISABLE _ CONT IN UO US _ FOCUS , ĠDEFAULT _ DISABLE _ CONT IN UO US _ FOCUS ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ PLAY _ B EE P , ĠDEFAULT _ TO GGLE _ B EE P ) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ CHARACTER _ BLACK LIST , ĠO cr Character Helper . getDefault Black list ( DEFAULT _ SOURCE _ LANGUAGE _ CODE )) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ CHARACTER _ WHITE LIST , ĠO cr Character Helper . getDefault Whitelist ( DEFAULT _ SOURCE _ LANGUAGE _ CODE )) ĊĠĠĠĠĠĠĠ Ġput String ( Preferences Activity . KEY _ PAGE _ SEGMENT ATION _ MODE , ĠDEFAULT _ PAGE _ SEGMENT ATION _ MODE ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ RE VERSE _ IMAGE , ĠDEFAULT _ TO GGLE _ RE VER SED _ IMAGE ) ĊĠĠĠĠĠĠĠ Ġput Boolean ( Preferences Activity . KEY _ TO GGLE _ LIGHT , ĠDEFAULT _ TO GGLE _ LIGHT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġdisplay Progress Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe Ġin determinate Ġprogress Ġdialog Ġbox . ĊĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. setTitle (" Please Ġwait ") ĊĠĠĠĠĠĠĠ Ġval Ġocr Engine Mode Name Ġ= Ġocr Engine Mode Name ĊĠĠĠĠĠĠĠ Ġif Ġ( ocr Engine Mode Name Ġ== Ġ" Both ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" Perform ing ĠO CR Ġusing ĠCube Ġand ĠT esseract ...") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog !!. setMessage (" Perform ing ĠO CR Ġusing Ġ$ ocr Engine Mode Name ...") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog !!. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow ErrorMessage (@ String Res Ġtitle : ĠInt , Ġ@ String Res Ġmessage : ĠInt ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow ErrorMessage ( getString ( title ), ĠgetString ( message )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDisplays Ġan Ġerror Ġmessage Ġdialog Ġbox Ġto Ġthe Ġuser Ġon Ġthe ĠUI Ġthread . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtitle ĠThe Ġtitle Ġfor Ġthe Ġdialog Ġbox . ĊĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġerror Ġmessage Ġto Ġbe Ġdisplayed . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġshow ErrorMessage ( title : ĠString , Ġmessage : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setOn Cancel Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( R . string . dialog _ error _ button _ positive ) Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠCapture Activity :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġ// ĠNote : ĠThese Ġconstants Ġwill Ġbe Ġoverridden Ġby Ġany Ġdefault Ġvalues Ġdefined Ġin Ġpreferences . xml . ĊĊĠĠĠĠĠĠĠ Ġ/** ĠISO Ġ 6 3 9 - 3 Ġlanguage Ġcode Ġindicating Ġthe Ġdefault Ġrecognition Ġlanguage . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ SOURCE _ LANGUAGE _ CODE Ġ= Ġ" eng " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠISO Ġ 6 3 9 - 1 Ġlanguage Ġcode Ġindicating Ġthe Ġdefault Ġtarget Ġlanguage Ġfor Ġtranslation . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TARGET _ LANGUAGE _ CODE Ġ= Ġ" es " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġdefault Ġonline Ġmachine Ġtranslation Ġservice Ġto Ġuse . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TRANSL ATOR Ġ= Ġ" Google ĠTranslate " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġdefault ĠO CR Ġengine Ġto Ġuse . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ OCR _ ENGINE _ MODE Ġ= Ġ" Tess er act " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġdefault Ġpage Ġsegmentation Ġmode Ġto Ġuse . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ PAGE _ SEGMENT ATION _ MODE Ġ= Ġ" Auto " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġuse Ġautofocus Ġby Ġdefault . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ AUTO _ FOCUS Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġinitially Ġdisable Ġcontinuous - picture Ġand Ġcontinuous - video Ġfocus Ġmodes . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ DISABLE _ CONT IN UO US _ FOCUS Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġbe ep Ġby Ġdefault Ġwhen Ġthe Ġsh utter Ġbutton Ġis Ġpressed . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ B EE P Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġinitially Ġshow Ġa Ġlooping , Ġreal - time ĠO CR Ġdisplay . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ CONT IN UO US Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġinitially Ġreverse Ġthe Ġimage Ġreturned Ġby Ġthe Ġcamera . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ RE VER SED _ IMAGE Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġto Ġenable Ġthe Ġuse Ġof Ġonline Ġtranslation Ġservices Ġbe Ġdefault . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ TRANSL ATION Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠWhether Ġthe Ġlight Ġshould Ġbe Ġinitially Ġactivated Ġby Ġdefault . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠDEFAULT _ TO GGLE _ LIGHT Ġ= Ġfalse ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġto Ġdisplay Ġthe Ġreal - time Ġrecognition Ġresults Ġat Ġthe Ġtop Ġof Ġthe Ġscanning Ġscreen . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCONT IN UO US _ DISPLAY _ RE CO GN IZED _ TEXT Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġto Ġdisplay Ġrecognition - related Ġstatistics Ġon Ġthe Ġscanning Ġscreen . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCONT IN UO US _ DISPLAY _ METADATA Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠFlag Ġto Ġenable Ġdisplay Ġof Ġthe Ġon - screen Ġsh utter Ġbutton . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDISPLAY _ SHUT TER _ BUTTON Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ/** ĠLanguage s Ġfor Ġwhich ĠCube Ġdata Ġis Ġavailable . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠC UBE _ SUPPORTED _ L ANGU AGES Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ara ", Ġ// ĠAr abic ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" eng ", Ġ// ĠEnglish ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" hin " Ġ// ĠH indi ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠLanguage s Ġthat Ġrequire ĠCube , Ġand Ġcannot Ġrun Ġusing ĠT esseract . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC UBE _ REQUIRED _ L ANGU AGES Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ara " Ġ// ĠAr abic ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĠResource Ġto Ġuse Ġfor Ġdata Ġfile Ġdownloads . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠDOWN LOAD _ BASE Ġ= Ġ" http :// t esseract - ocr . google code . com / files /" ĊĊĠĠĠĠĠĠĠ Ġ/** ĠDownload Ġfilename Ġfor Ġorientation Ġand Ġscript Ġdetection Ġ( OS D ) Ġdata . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠO SD _ FILENAME Ġ= Ġ" t esseract - ocr - 3 . 0 1 . os d . tar " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠDestination Ġfilename Ġfor Ġorientation Ġand Ġscript Ġdetection Ġ( OS D ) Ġdata . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠO SD _ FILENAME _ BASE Ġ= Ġ" os d . trained data " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠMinimum Ġmean Ġconfidence Ġscore Ġnecessary Ġto Ġnot Ġreject Ġsingle - shot ĠO CR Ġresult . ĠCurrently Ġunused . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠMIN IMUM _ ME AN _ CONF ID ENCE Ġ= Ġ 0 Ġ// Ġ 0 Ġmeans Ġdon 't Ġreject Ġany Ġs cored Ġresults ĊĊĠĠĠĠĠĠĠ Ġ// ĠContext Ġmenu . ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSET T INGS _ ID Ġ= ĠMenu . FIRST ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠA BO UT _ ID Ġ= ĠMenu . FIRST Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġ// ĠOptions Ġmenu , Ġfor Ġcopy Ġto Ġclipboard . ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOPTIONS _ COPY _ RE CO GN IZED _ TEXT _ ID Ġ= ĠMenu . FIRST ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOPTIONS _ COPY _ TRANSL ATED _ TEXT _ ID Ġ= ĠMenu . FIRST Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOPTIONS _ SHARE _ RE CO GN IZED _ TEXT _ ID Ġ= ĠMenu . FIRST Ġ+ Ġ 2 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOPTIONS _ SHARE _ TRANSL ATED _ TEXT _ ID Ġ= ĠMenu . FIRST Ġ+ Ġ 3 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPER MISSION _ REQUEST _ CAMERA Ġ= Ġ 4 2 ĊĠĠĠ Ġ} Ċ } Ċ