package Ġcom . example . detail application . activity Ċ Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġkotlin . concurrent . schedule Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . core . content . Context Compat . startActivity Ċ import Ġcom . example . detail application .* Ċ import Ġcom . example . detail application . Main Adapter .* Ċ import Ġcom . example . detail application . Main Adapter . Type . Pixel Ċ import Ġcom . example . detail application . My Adapter . signIn Ċ import Ġcom . example . detail application . room . Im am Ċ import Ġcom . google . firebase . storage . Storage Reference Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . ArrayList Ċ import Ġcom . example . detail application . R Ċ import Ġcom . google . android . gms . auth . account . Work Account . getClient Ċ import Ġcom . google . android . gms . auth . api . Auth Proxy . getClient Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn . getClient Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Account Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Client Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . common . SignIn Button Ċ Ċ // import Ġcom . example . find hospital . R Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlist Adapter : ĠMy Adapter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsign In Button Ġ: ĠSign In Button ĊĠĠĠ Ġprivate Ġval Ġcontacts List : ĠArrayList < Im am > Ġ= ĠArrayList () ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cycler : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmake Call Button Ġ: ĠButton ĊĠĠĠ Ġprivate Ġval Ġnew Word Activity Request Code Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm PhoneNumber : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Code : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Send : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprofile Picture Ġ: ĠImageView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Google SignIn Client Ġ: ĠGoogle SignIn Client ; ĊĊĠĠĠ Ġvar Ġprogram Images Ġ= Ġint ArrayOf ( ĊĠĠĠĠĠĠĠ ĠR . drawable . os ama _ al at ssi _ im am _ finder _ ic _ launcher _ background , ĊĠĠĠĠĠĠĠ ĠR . drawable . abd ull ah _ mu ham mad _ im am _ finder _ ic _ launcher _ background , ĊĠĠĠĠĠĠĠ ĠR . drawable . mu ham mad _ kh ate eb _ im am _ finder _ ic _ launcher _ background , ĊĠĠĠĠĠĠĠ ĠR . drawable . id ris _ alam _ im am _ finder _ ic _ launcher _ background ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġprivate Ġval Ġword ViewModel : ĠWord ViewModel Ġby Ġview Models Ġ{ ĊĠĠĠĠĠĠĠ ĠWord ViewModel Factory (( application Ġas ĠWord s Application ). repository ) ĊĠĠĠĠĠĠĠ Ġword ViewModel . all Words . observe ( this , ĠObserver Ġ{ Ġwords Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġcached Ġcopy Ġof Ġthe Ġwords Ġin Ġthe Ġadapter . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwords ?. let Ġ{ Ġadapter . submit List ( it ) Ġ} Ċ }) ĊĠĠĠ Ġ}*/ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġfinal ĠHandler Ġhandler Ġ= Ġnew ĠHandler (); ĊĠĠĠ Ġhandler . post Delayed ( new ĠRunnable () Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġsomething Ġafter Ġ 5 s Ġ= Ġ 5 0 0 0 ms ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuttons [ in ew ][ j new ]. set BackgroundColor ( Color . BLACK ); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġ 5 0 0 0 ); ĊĊĠĠĠ Ġval Ġfab Ġ= ĠfindViewById < Floating ActionButton >( R . id . fab ) Ċ fab . setOnClickListener Ġ{ ĊĠ Ġval Ġintent Ġ= ĠIntent ( this @ MainActivity , ĠNew Word Activity :: class . java ) ĊĠ ĠstartActivity For Result ( intent , Ġnew Word Activity Request Code ) Ċ } ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġnew Word Activity Request Code Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. getString Extra ( New Word Activity . EXTRA _ REPLY )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġword Ġ= ĠIm am ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġword ViewModel . insert ( word ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplication Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . empty _ not _ saved , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġmake Call ( view : ĠView ){ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Phone Ġcalling ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠPhone Activity :: class . java ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġprivate Ġfun Ġsave File to Drive ( file : ĠFile , Ġmime : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDrive . Drive Api . new Drive Contents ( m Drive Client ). set Result Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠResult Callback < Drive Contents Result ?> () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Result ( result : ĠDrive Contents Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! result . getStatus (). is Success ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Failed Ġto Ġcreate Ġnew Ġcontents .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" Connection Ġsuccessful , Ġcreating Ġnew Ġcontents ...") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠoutputStream : ĠOutputStream ? Ġ= Ġresult . get Drive Contents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get OutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfis : ĠFileInputStream ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfis Ġ= ĠFileInputStream ( file . path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuf Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġn : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(- 1 Ġ!= Ġfis . read ( buf ). also Ġ{ Ġn Ġ= Ġit Ġ}) Ġba os . write ( buf , Ġ 0 , Ġn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġphoto Bytes : ĠByteArray Ġ= Ġba os . toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . write ( photo Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfis . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfis Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" FileNotFoundException : Ġ" Ġ+ Ġe . getMessage ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e 1 : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Unable Ġto Ġwrite Ġfile Ġcontents ." Ġ+ Ġe 1 . getMessage ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġfile . name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetadata Change Set : ĠMetadata Change Set Ġ= ĠBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MimeType ( mime ). setTitle ( title ). build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( mime Ġ== ĠMIME _ PH OTO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( VERBOSE ) ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , Ġ" Creating Ġnew Ġphoto Ġon ĠDrive Ġ(" Ġ+ Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrive . Drive Api . get Folder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drive Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Pic Folder Drive Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). create File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drive Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Change Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get Drive Contents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( mime Ġ== ĠMIME _ VIDEO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , Ġ" Creating Ġnew Ġvideo Ġon ĠDrive Ġ(" Ġ+ Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ")" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrive . Drive Api . get Folder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drive Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm V id Folder Drive Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). create File ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drive Client , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata Change Set , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . get Drive Contents () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . delete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( VERBOSE ) ĠLog . d ( TAG , Ġ" Deleted Ġ" Ġ+ Ġfile . name Ġ+ Ġ" Ġfrom Ġsd card ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Failed Ġto Ġdelete Ġ" Ġ+ Ġfile . name Ġ+ Ġ" Ġfrom Ġsd card ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġfun Ġupload Picture (){ ĊĠĠĠĠĠĠĠ Ġ// final ĠString Ġrandom Key Ġ= ĠUUID . randomUUID (). toString (); ĊĠĠĠĠĠĠĠ Ġvar Ġrandom Key Ġ: ĠString ĊĠĠĠĠĠĠĠ Ġrandom Key Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠĠĠĠĠ Ġvar Ġriver s Ref Ġ: ĠStorage Reference ĊĠĠĠĠĠĠĠ Ġ// river s Ref . out File ( image Uri ) ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġconst Ġstorage Ref Ġ= Ġfirebase . storage (). ref (); ĊĠĠĠĠĠĠĠ Ġconst Ġfile Ref Ġ= Ġstorage Ref . child (`${ folder }/${ filename }`); ĊĠĠĠĠĠĠĠ Ġconst Ġmetadata Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcontentType : Ġfile . type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Metadata : Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠ Ġreturn Ġfile Ref . put ( file , Ġmetadata ); ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġchoose Picture ( uri Ġ: ĠString ){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠPhoto Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . setType (" image /" Ġ+ Ġuri ) ĊĠĠĠĠĠĠĠ Ġupload Picture () ĊĠĠĠĠĠĠĠ Ġintent . setAction ( Intent . ACTION _ GET _ CONTENT ) ĊĠĠĠĠĠĠĠ Ġ// startActivity For Result ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign In (){ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Loading ĠGoogle Ġsign Ġin ", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠ ĠLog . d (" Login Activity ", Ġ" sign On : Ġ" Ġ+ Ġ" loading ĠGoogle Ġsign Ġin ") ĊĠĠĠĠĠĠĠ Ġthis @ MainActivity . startActivity ( m Google SignIn Client . signIn Intent ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġg so Ġ= ĠGoogle SignIn Options . Builder ( Google SignIn Options . DEFAULT _ SIGN _ IN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// . requestId Token ("") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. request Email () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġm Google SignIn Client Ġ= ĠGoogle SignIn . getClient ( this , Ġg so ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġ// var Ġcover Ġ= ĠfindViewById ( R . id . cover Img ); ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ CALL ) ĊĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" 5 0 3 9 3 5 9 4 9 1 ") ĊĠĠĠĠĠĠĠ Ġ// startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In Button Ġ= ĠfindViewById ( R . id . button SignIn ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . id ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button SignIn Ġ-> Ġsign In () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : Exception ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . recycler _ view ) ĊĠĠĠĠĠĠĠ Ġmake Call Button Ġ= ĠfindViewById ( R . id . button _ call ); ĊĠĠĠĠĠĠĠ Ġ// Load Ġthe Ġdate Ġfrom Ġthe Ġnetwork Ġor Ġother Ġresources ĊĠĠĠĠĠĠĠ Ġ// into Ġthe Ġarray Ġlist Ġasynchronously ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Mu ham mad ĠMult e ĠK h ate eb ", Ġ" 5 0 3 9 3 5 9 4 9 1 ", Ġ"/ drawable _ 2 0 0 px _ is mail _ ib n _ mus a _ men ks _ talk _ at _ ker ala _ state _ business _ ex cell ence _ aw ards _ 2 0 1 5 ")) ĊĠĠĠĠĠĠĠ Ġ// choose Picture ("/ drawable _ 2 0 0 px _ is mail _ ib n _ mus a _ men ks _ talk _ at _ ker ala _ state _ business _ ex cell ence _ aw ards _ 2 0 1 5 ") ĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Mu ham mad ĠMult e ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Id ris ĠAl am ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Os ama ĠAl at ssi ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Ab d ull ah ĠMu ham mad ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Mu ham mad ĠMu ham mad ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Mu ft i ĠMu ham mad ĠAli ")) ĊĠĠĠĠĠĠĠ Ġcontacts List . add ( Im am (" Ab d ul sal am ĠRoom al ")) ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġre cycler Ġ= ĠfindViewById ( R . id . my _ recycler _ view ) ĊĠĠĠĠĠĠĠ Ġvar Ġlayout Manager Ġ= ĠLinearLayoutManager ( this ) ĊĠĠĠĠĠĠĠ Ġre cycler ?. setLayout Manager ( layout Manager ) ĊĠĠĠĠĠĠĠ Ġlist Adapter Ġ= ĠMy Adapter ( contacts List , Ġthis ) ĊĠĠĠĠĠĠĠ Ġre cycler . setAdapter ( list Adapter ) ĊĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġnew ĠThread () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġwrite Ġcontent Ġto ĠDrive Contents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOutputStream ĠoutputStream Ġ= Ġdrive Contents . get OutputStream (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWrite Ġthe Ġbitmap Ġdata Ġfrom Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMetadata Change Set Ġmetadata Change Set Ġ= Ġnew ĠMetadata Change Set . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MimeType (" image / jpeg "). setTitle ( title ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Ġimage Ġ= ĠBitmap Factory . decode File ( location )); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠByteArrayOutputStream Ġbitmap Stream Ġ= Ġnew ĠByteArrayOutputStream (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . compress ( Bitmap . Compress Format . JPEG , Ġ 8 0 , Ġbitmap Stream ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream . write ( bitmap Stream . toByteArray ()); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( IOException Ġe 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" E ", Ġ" Unable Ġto Ġwrite Ġfile Ġcontents ."); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage . recycle (); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠoutputStream Ġ= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġtitle Ġ= Ġ" no isy "; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i (" E ", Ġ" Creating Ġnew Ġpic Ġon ĠDrive Ġ(" Ġ+ Ġtitle Ġ+ Ġ")"); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDrive . Drive Api . get Folder ( m Google ApiClient , drive Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create File ( m Google ApiClient , Ġmetadata Change Set , Ġdrive Contents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Result Callback ( file Callback ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. start (); ĊĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm PhoneNumber Ġ= ĠfindViewById ( R . id . phoneNumber ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Code Ġ= ĠfindViewById ( R . id . code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Send Ġ= ĠfindViewById ( R . id . send Button ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsign In Button . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Loading ĠGoogle Ġsign Ġin ", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" MainActivity ", Ġ" sign On : Ġ" Ġ+ Ġ" loading ĠGoogle Ġsign Ġin ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Timer (" Setting Up ", Ġfalse ). schedule ( 3 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity . startActivity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ MainActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠChat Activity :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Send . setOnClickListener { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" Sending ...", ĠToast . LENGTH _ SHORT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ){ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġm Send . setOnClickListener ( new ĠView . OnClickListener ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid ĠonClick ( View Ġv ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ ĠFor Ġusing Ġg lide ĊĠĠĠĠĠĠĠ ĠfindViewById < RecyclerView >( R . id . list ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġre cycler . setAdapter ( Main Adapter ( application Context , Ġmutable ListOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠType . Mask ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ// list Adapter !!. notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġinline Ġfun ĠTimer . schedule ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay : ĠLong , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross inline Ġaction : ĠTimer Task . () Ġ-> ĠUnit ĊĠĠĠĠĠĠĠ Ġ): ĠTimer Task ĊĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġ// ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġvar Ġaccount Ġ: ĠGoogle SignIn Account ? Ġ= Ġ ĠGoogle SignIn . getLast Signed In Account ( this ); ĊĠĠĠ Ġ} Ċ Ċ }