package Ġcom . example . sd gp _ silent _ voice Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġkotlinx . android . synt hetic . main . activity _ log _ in .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġokhttp 3 .* Ċ import Ġorg . json . JSONObject Ċ import Ġjava . io . IOException Ċ Ċ class ĠSign up Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ signup ) ĊĊĠĠĠĠĠĠĠ Ġval Ġback Btn Ġ= ĠfindViewById < ImageView >( R . id . imageView 4 ) ĊĠĠĠĠĠĠĠ Ġback Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent Ġ( this , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġalready Have Btn Ġ= ĠfindViewById < TextView >( R . id . textView 8 ) ĊĠĠĠĠĠĠĠ Ġalready Have Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent Ġ( this , ĠLog In Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġinstances Ġfrom Ġbuttons Ġand Ġtex fields ĊĠĠĠĠĠĠĠ Ġval Ġsignup Btn Ġ= ĠfindViewById < Button >( R . id . signup _ button ); ĊĊĠĠĠĠĠĠĠ Ġval Ġf Name Text Ġ= ĠfindViewById < TextView >( R . id . firstName ); ĊĠĠĠĠĠĠĠ Ġval Ġl Name Text Ġ= ĠfindViewById < TextView >( R . id . lastName ); ĊĠĠĠĠĠĠĠ Ġval Ġusername Text Ġ= ĠfindViewById < TextView >( R . id . username ); ĊĠĠĠĠĠĠĠ Ġval Ġmail Text Ġ= ĠfindViewById < TextView >( R . id . email ); ĊĠĠĠĠĠĠĠ Ġval Ġpassword Text Ġ= ĠfindViewById < TextView >( R . id . password ); ĊĠĠĠĠĠĠĠ Ġval Ġconf Password Text Ġ= ĠfindViewById < TextView >( R . id . conf Password ); ĊĊĠĠĠĠĠĠĠ Ġ// Ġset Ġup Ġfunction Ġto Ġsignup Ġbutton Ġclick ĊĠĠĠĠĠĠĠ Ġsignup Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCapt uring Ġthe Ġvalues Ġentered Ġby Ġthe Ġuser ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġf Name Ġ= Ġf Name Text . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġl Name Ġ= Ġl Name Text . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġusername Text . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmail Ġ= Ġmail Text . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword Text . text . toString (); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconf Password Ġ= Ġconf Password Text . text . toString (); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUser Ġinput Ġvalidations ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( f Name . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Name Text . error Ġ= Ġ" First Ġname Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġf Name Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// return @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" First ĠName :", Ġ" First Ġname Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( l Name . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Name Text . error Ġ= Ġ" Last Ġname Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġl Name Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// return @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" last ĠName :", Ġ" Last Ġname Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( username . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Text . error Ġ= Ġ" Username Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Username :", Ġ" Username Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( mail . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmail Text . error Ġ= Ġ" Email Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmail Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Email ", Ġ" Email Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( password . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Text . error Ġ= Ġ" Password Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Password ", Ġ" Password Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( conf Password . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Password Text . error Ġ= Ġ" Password Ġcan Ġnot Ġbe Ġempty !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Password Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Password ", Ġ" Password Ġcan Ġnot Ġbe Ġempty !"); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( password Ġ!= Ġconf Password ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Password Text . error Ġ= Ġ" Confirm Ġpassword Ġdoes Ġnot Ġmatch Ġwith Ġthe Ġpassword Ġyou Ġhave Ġentered !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconf Password Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" Password Ġvalidation : Ġ", Ġ" Confirm Ġpassword Ġdoes Ġnot Ġmatch Ġwith Ġthe Ġpassword Ġyou Ġhave Ġentered !") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġnew User Ġ= Ġ"{\" firstName \": Ġ\"$ f Name \",\" lastName \": Ġ\"$ l Name \",\" userName \": Ġ\"$ username \",\" email \": Ġ\"$ mail \",\" encrypted Password \": Ġ\"$ password \" }"; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġnew Ġcoroutine Ġto Ġsend Ġthe Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlaunch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Req ( new User ); ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcall Ġthe Ġmethod Ġto Ġsend Ġthe Ġre ques ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġto Ġbuild Ġand Ġsend Ġthe Ġrequest ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuser ĠRequest Ġbody Ġincluding Ġthe Ġdetails Ġof Ġthe Ġuser ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsend Req ( user : ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠOk HttpClient (); ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠInstance Ġfrom Ġthe ĠOk HttpClient Ġlibrary ĊĊĠĠĠĠĠĠĠ Ġval Ġreq Ġ= ĠRequest Body . create ( MediaType . parse (" application / json ; Ġcharset = utf - 8 "), Ġuser ); Ġ// Ġcreate Ġrequest Ġbody ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠRequest . Builder () ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBuild Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . url (" http :// localhost : 5 0 0 0 / api / signup ") ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLocal host ĠURL ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. url (" http :// 1 7 2 . 2 0 . 1 0 . 1 0 : 5 0 0 0 / api / signup ") ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIP Ġaddress Ġfrom ĠChar aka 's Ġmobile Ġhot spot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . url (" http :// 1 9 2 . 1 6 8 . 8 . 1 9 7 : 5 0 0 0 / api / signup ") ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIP Ġaddress Ġfrom ĠChar aka 's Ġhome Ġwifi ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . url (" http :// 1 9 2 . 1 6 8 . 8 . 1 6 3 : 5 0 0 0 / api / signup ") ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIP Ġaddress Ġfrom Ġoffice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. method (" POST ", Ġreq ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. header (" Content - Type ", Ġ" application / json ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĊĠĠĠĠĠĠĠ Ġclient . new Call ( request ). enqueue ( object Ġ: ĠCallback Ġ{ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsend Ġthe Ġrequest ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfunction Ġto Ġfire Ġif Ġthe Ġrequest Ġwas Ġunable Ġto Ġsend ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall , Ġe : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Response :", Ġ" -------------------- Ġrequest Ġfailed Ġ-------------------- "); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" IOException : Ġ", Ġe . message . toString () Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Exception : Ġ", Ġ" If Ġfailed Ġto Ġconnect Ġto Ġthe Ġgiven Ġip Ġaddress Ġin Ġthe Ġrequest Ġurl , Ġfind Ġyour Ġcurrent Ġip Ġaddress Ġand Ġadd Ġit Ġto Ġthe Ġnetwork _ security . xml Ġfile Ġand Ġthe Ġrequest Ġurl ."); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfunction Ġto Ġfire Ġis Ġthe Ġrequest Ġwas Ġsent Ġand Ġthe Ġresponse Ġwas Ġreceived ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall , Ġres : ĠResponse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Response :", Ġ" -------------------- Ġresponse Ġreceived Ġ-------------------- "); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġres . body ()?. string (); ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġconverting Ġresponse Ġbody Ġto Ġa ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcheck Ġwhether Ġthe Ġresponse Ġis Ġempty Ġor Ġnot ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Confirmation ĠMessage :", Ġmessage ); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message Ġ== Ġ" email _ exists "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Status : Ġ", Ġ" This Ġemail Ġis Ġalready Ġregistered !"); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Text . error Ġ= Ġ" This Ġemail Ġis Ġalready Ġregistered !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemail Text . request Focus (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message Ġ== Ġ" username _ exists "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Status : Ġ", Ġ" This Ġusername Ġis Ġalready Ġtaken !"); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Text . error Ġ= Ġ" This Ġusername Ġis Ġalready Ġtaken !"; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword Text . request Focus () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message Ġ== Ġ" user _ added "){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Status : Ġ", Ġ" User Ġadded Ġsuccessfully !"); ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// call Ġintent Ġto Ġload Ġcamera Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ }