/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 Ġsky do ves Ċ Ġ* Ċ Ġ* Ġ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 . sky do ves . water days . ui . activities . settings Ċ Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . n fc . N def Message Ċ import Ġandroid . n fc . N def Record Ċ import Ġandroid . n fc . N fc Adapter Ċ import Ġandroid . n fc . Tag Ċ import Ġandroid . n fc . tech . N def Ċ import Ġandroid . n fc . tech . N def Format able Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . sky do ves . water days . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ n fc .* Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsky do ves Ġon Ġ 2 0 1 6 - 1 0 - 1 5 . Ċ Ġ* ĠUpdated Ġby Ġsky do ves Ġon Ġ 2 0 1 7 - 0 8 - 1 7 . Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 Ġsky do ves Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ class ĠN FC Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠ Ġprivate Ġvar Ġm Write Mode Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġm N fc Adapter : ĠN fc Adapter ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġm N fc Pending Intent : ĠPending Intent ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠ ĠsetContentView ( R . layout . activity _ n fc ) ĊĊĠĠĠ Ġn fc _ st icker . start R ipple Animation () ĊĊĠĠĠ Ġn fc _ btn _ set n fc data . setOnClickListener Ġ{ ĊĠĠĠĠĠ Ġif Ġ( Check N FC Enabled ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġm N fc Adapter Ġ= ĠN fc Adapter . getDefault Adapter ( this ) ĊĠĠĠĠĠĠĠ Ġm N fc Pending Intent Ġ= ĠPending Intent . getActivity ( this , Ġ 0 , ĠIntent ( this , ĠN FC Activity :: class . java ). add Flags ( Intent . FLAG _ ACTIVITY _ SINGLE _ TOP ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġenable Tag Write Mode () ĊĠĠĠĠĠĠĠ Ġn fc _ st icker . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġset n fc Ġ= ĠIntent ( Settings . ACTION _ N FC _ SETTINGS ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( set n fc ) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , ĠgetString ( R . string . msg _ require _ n fc ), ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠCheck N FC Enabled (): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġn fc Ad pt Ġ= ĠN fc Adapter . getDefault Adapter ( this ) ĊĠĠĠ Ġif Ġ( n fc Ad pt Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! n fc Ad pt . isEnabled ) ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġenable Tag Write Mode () Ġ{ ĊĠĠĠ Ġm Write Mode Ġ= Ġtrue ĊĠĠĠ Ġval Ġtag Detected Ġ= ĠIntent Filter ( N fc Adapter . ACTION _ TAG _ DIS COVER ED ) ĊĠĠĠ Ġval Ġm Write Tag Filters Ġ= ĠarrayOf ( tag Detected ) ĊĠĠĠ Ġm N fc Adapter !!. enable Foreground Dispatch ( this , Ġm N fc Pending Intent , Ġm Write Tag Filters , Ġnull ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdisable Tag Write Mode () Ġ{ ĊĠĠĠ Ġm Write Mode Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon New Intent ( intent : ĠIntent ) Ġ{ ĊĠĠĠ Ġsuper . on New Intent ( intent ) ĊĠĠĠ Ġif Ġ( m Write Mode Ġ&& ĠN fc Adapter . ACTION _ TAG _ DIS COVER ED Ġ== Ġintent . action ) Ġ{ ĊĠĠĠĠĠ Ġval Ġdetected Tag Ġ= Ġintent . get Parcelable Extra < Tag >( N fc Adapter . EXTRA _ TAG ) ĊĠĠĠĠĠ Ġval Ġrecord Ġ= ĠN def Record . create Mime (" water days _ n fc / N FC ", Ġn fc _ ed t 0 1 . text . toString (). toByteArray ()) ĊĠĠĠĠĠ Ġval Ġmessage Ġ= ĠN def Message ( array Of ( record )) ĊĊĠĠĠĠĠ Ġ// Ġdetected Ġtag ĊĠĠĠĠĠ Ġif Ġ( write Tag ( message , Ġdetected Tag )) Ġ{ ĊĠĠĠĠĠĠĠ Ġdisable Tag Write Mode () ĊĠĠĠĠĠĠĠ Ġn fc _ st icker . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" N FC Ġíĥ ľ ê·¸ ìĹĲ Ġëį°ìĿ´íĦ°ë¥¼ ĠìŀĳìĦ± íĸĪ ìĬµëĭĪëĭ¤ .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġwrite Tag ( message : ĠN def Message , Ġtag : ĠTag ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġsize Ġ= Ġmessage . toByteArray (). size ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġn def Ġ= ĠN def . get ( tag ) ĊĠĠĠĠĠ Ġif Ġ( ndef Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġn def . connect () ĊĠĠĠĠĠĠĠ Ġif Ġ(! ndef . is Writable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" íĥľ ê·¸ ìĹĲ Ġëį°ìĿ´íĦ°ë¥¼ ĠìŀĳìĦ± íķł ĠìĪĺ ĠìĹĨ ìĬµëĭĪëĭ¤ .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( ndef . maxSize Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" íĥľ ê·¸ ĠìĤ¬ ìĿ´ ì¦ Ī ê°Ģ ĠëĦ Ī ë¬´ Ġìŀĳ ìĬµëĭĪëĭ¤ .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġn def . write N def Message ( message ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠN def Format able . get ( tag ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( format Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . connect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . format ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠ Ġ} Ċ } Ċ