/** Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . example . android . n nap ide mo Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . res . Asset Manager Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ Ċ class ĠMainActivity Ġ: ĠActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLOG _ TAG Ġ= Ġ" N NA PI _ DEMO " ĊĠĠĠ Ġprivate Ġvar Ġmodel Handle Ġ= Ġ 0 L ĊĊĠĠĠ Ġexternal Ġfun Ġinit Model ( asset Manager : ĠAsset Manager , Ġasset Name : ĠString ): ĠLong ĊĊĠĠĠ Ġexternal Ġfun Ġstart Compute ( model Handle : ĠLong , Ġinput 1 : ĠFloat , Ġinput 2 : ĠFloat ): ĠFloat ĊĊĠĠĠ Ġexternal Ġfun Ġdestroy Model ( model Handle : ĠLong ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ ĠInit Model Task (). execute (" model _ data . bin ") ĊĊĠĠĠĠĠĠĠ Ġval Ġcompute Ġ= ĠfindViewById < View >( R . id . button ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġcompute . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Handle Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Value 1 Ġ= ĠfindViewById < EditText >( R . id . input Value 1 ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Value 2 Ġ= ĠfindViewById < EditText >( R . id . input Value 2 ). text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( input Value 1 . isNotEmpty () Ġ&& Ġinput Value 2 . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Comp uting ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCompute Task (). execute ( input Value 1 . toFloat (), Ġinput Value 2 . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" Model Ġinitializing , Ġplease Ġwait ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( model Handle Ġ!= Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdestroy Model ( model Handle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Handle Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠInit Model Task Ġ: ĠAsync Task < String , ĠVoid , ĠLong >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġmodel Name : ĠString ): ĠLong ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Name . size Ġ!= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Incorrect Ġnumber Ġof Ġmodel Ġfiles ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPrepare Ġthe Ġmodel Ġin Ġa Ġseparate Ġthread . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinit Model ( assets , Ġmodel Name [ 0 ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Handle Ġ= Ġresult !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠCompute Task Ġ: ĠAsync Task < Float , ĠVoid , ĠFloat >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġinputs : ĠFloat ?): ĠFloat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( inputs . size Ġ!= Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Incorrect Ġnumber Ġof Ġinput Ġvalues ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Ġ= Ġinputs [ 0 ] Ġ?: Ġreturn Ġ 0 . 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= Ġinputs [ 1 ] Ġ?: Ġreturn Ġ 0 . 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstart Compute ( model Handle , Ġfirst , Ġsecond ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠFloat ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtv Ġ= ĠfindViewById < TextView >( R . id . textView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv . text Ġ= Ġresult . toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUsed Ġto Ġload Ġthe Ġ' nn _ sample ' Ġlibrary Ġon Ġapplication Ġstartup . ĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . load Library (" nn _ sample ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ