package Ġcom . app . zip cloud client app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . Editable Ċ import Ġandroid . text . Text Watcher Ċ import Ġandroid . util . Log Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** Ġãĥ Ń ãĤ° åĩºåĬĽ ãģ« ä½¿çĶ¨ ãģĻãĤĭ ãĤ¿ ãĤ° Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" MainActivity " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠZip Cloud API ãģ® URL Ġ*/ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠURL Ġ= Ġ" https :// zip cloud . ib s net . co . jp / api / search ? zip code =% s " ĊĊĠĠĠĠĠĠĠ Ġ/** Ġ éĥ µ ä¾¿ çķª åı· ãģ« ãĥŀ ãĥĥ ãĥģ ãģĻãĤĭ æŃ£ è¦ı è¡¨ çı¾ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval ĠREG EX _ ZIP _ CODE Ġ= ĠRegex ("\\ d { 7 }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġzip _ code _ edit text . add TextChanged Listener ( object Ġ: ĠText Watcher Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbefore TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġcount : ĠInt , Ġafter : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon TextChanged ( s : ĠCharSequence ?, Ġstart : ĠInt , Ġbefore : ĠInt , Ġcount : ĠInt ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġafter TextChanged ( s : ĠEdit able ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åħ¥åĬĽ ãĥĨ ãĤŃ ãĤ¹ãĥĪ ãĤĴåıĸå¾Ĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġs . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! REGEX _ ZIP _ CODE . matches ( text )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éĥ µ ä¾¿ çķª åı· ãģ§ ãģªãģĦ åł´åĲĪãģ¯ æ¤ ľç´¢ ãģĽ ãģļ ãĢģ ãĥĨ ãĤŃ ãĤ¹ãĥĪ ãĤĴ ãĤ¯ãĥª ãĤ¢ ãģĹãģ¦ çµĤ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress _ text view . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAPI ãĤĴ éĿŀ åĲĮ æľŁ ãģ§ åĳ¼ ãģ³ åĩº ãģĹ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Zip Cloud Api ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ ¤ ľç´¢ ä¸Ń ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress _ text view . text Ġ= ĠgetString ( R . string . search ing _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠZip Cloud API ãĤĴ åĳ¼ ãģ³ åĩº ãģĹ ãĢģ ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãģ¨ãģĹãģ¦ åıĹ ãģĳ åıĸ ãģ£ãģŁ ä½ı æīĢ æĥħåł± ãĤĴ çĶ» éĿ¢ ä¸Ĭ ãģ« è¡¨ç¤º ãģĻãĤĭ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġzip Code Ġ éĥ µ ä¾¿ çķª åı· ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcall Zip Cloud Api ( zip Code : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWeb API åĳ¼ ãģ³ åĩº ãģĹ ãĤĴ ãĤ³ ãĥ« ãĥ¼ãĥ ģ ãĥ³ ãģ§ éĿŀ åĲĮ æľŁ å®Łè¡Į ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Response ( URL . format ( zip Code )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Cancelled ( zip Code )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠãĤ Ń ãĥ£ ãĥ³ ãĤ» ãĥ« ãģķãĤĮãģŁ åł´åĲĪãģ¯ ä½ķ ãĤĤ ãģĽ ãģļ çµĤ äºĨ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠJSON ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĤĴ ãĥĩ ãĤ· ãĥª ãĤ¢ ãĥ©ãĤ¤ ãĤº ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠGson (). fromJson ( it , ĠZip Response :: class . java )?. results ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( results Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæ ¤ ľç´¢ å¤± æķ Ĺ ãģĹãģŁ åł´åĲĪãģ¯ ãĥ¡ ãĥĥãĤ»ãĥ¼ãĤ¸ è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Not Ġfound Ġzip code =$ zip Code ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress _ text view . text Ġ= ĠgetString ( R . string . search _ not _ found _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ let ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġãĥ ļ ãĤ¤ ãĥŃ ãĥ¼ãĥī ãģ® 1 ä»¶ çĽ® ãĤĴ è¡¨ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġresults [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress _ text view . text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaddress . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( address 1 , Ġaddress 2 , Ġaddress 3 ). join ToString (" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ éĥ µ ä¾¿ çķª åı· æ¤ ľç´¢ ãģĮ ãĤŃ ãĥ£ ãĥ³ ãĤ» ãĥ« ãģķãĤĮãģŁ ãģĭ ãģ© ãģĨ ãģĭ åĪ¤ å®ļ ãģĻãĤĭ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġzip Code Ġæ ¤ ľç´¢ ãģĹãģŁ éĥ µ ä¾¿ çķª åı· ĊĠĠĠĠ Ġ* Ġ@ return ĠãĤ Ń ãĥ£ ãĥ³ ãĤ» ãĥ« ãģķãĤĮ ãģ¦ãģĦ ãĤĮãģ° Ġ` true ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Cancelled ( zip Code : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġæ ¤ ľç´¢ æĻĤ ãģ® éĥ µ ä¾¿ çķª åı· ãģĭãĤī å¤īæĽ´ ãģķãĤĮãģ¦ãģĦãĤĭ åł´åĲĪãģ¯ ãĤŃ ãĥ£ ãĥ³ ãĤ» ãĥ« æī ± ãģĦ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġzip _ code _ edit text . text . toString () ĊĠĠĠĠĠĠĠ Ġreturn Ġtext Ġ!= Ġzip Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWeb API ãĤĴ åĳ¼ ãģ³ åĩº ãģĹ ãĥ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ãĤĴ åıĹ ãģĳ åıĸ ãĤĭ ãĢĤ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġurl ĠWeb API ãģ® URL ĊĠĠĠĠ Ġ* Ġ@ return Ġãĥ ¬ ãĤ¹ ãĥĿ ãĥ³ãĤ¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Response ( url : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Call ( Request . Builder (). url ( url ). build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. body ?. string () ĊĠĠĠ Ġ} Ċ }