/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠCl iff ord ĠLi u Ċ Ġ* Ċ Ġ* Ġ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 . mad ness . collision . we arable . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . WindowManager Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ Ċ internal Ġobject ĠX Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġnormal Ġdrawable Ġthat Ġare Ġnot ĠAdapt ive Icon Drawable ĊĠĠĠĠ Ġ* Ġ@ param Ġdrawable Ġdrawable Ġres ĊĠĠĠĠ Ġ* Ġ@ return Ġbitmap ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdrawable To Bitmap Ġ( Ġdrawable : ĠDrawable ): ĠBitmap Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( drawable Ġis ĠBitmap Drawable Ġ&& Ġdrawable . bitmap Ġ!= Ġnull ) Ġreturn Ġdrawable . bitmap . collision Bitmap ĊĊĠĠĠĠĠĠĠ Ġval Ġintr insic Width Ġ= Ġdrawable . intrinsic Width ĊĠĠĠĠĠĠĠ Ġval Ġintr insic Height Ġ= Ġdrawable . intrinsic Height ĊĠĠĠĠĠĠĠ Ġval Ġbitmap : ĠBitmap Ġ= Ġif Ġ( intrinsic Width Ġ<= Ġ 0 Ġ|| Ġintr insic Height Ġ<= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( 5 0 0 , Ġ 5 0 0 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) Ġ// ĠSingle Ġcolor Ġbitmap Ġwill Ġbe Ġcreated Ġof Ġ 1 x 1 Ġpixel ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap . create Bitmap ( intrinsic Width , Ġintr insic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠĠĠĠĠ Ġdrawable . setBounds ( 0 , Ġ 0 , Ġcanvas . width , Ġcanvas . height ) ĊĠĠĠĠĠĠĠ Ġdrawable . draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbitmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġclip Ġthe Ġimage Ġto Ġtarget ĊĠĠĠĠ Ġ* Ġ@ param Ġsrc Ġimage Ġto Ġbe Ġprocessed ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Width Ġtarget Ġwidth ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Height Ġtarget Ġheight ĊĠĠĠĠ Ġ* Ġ@ return Ġproduct ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġto Target ( src : ĠBitmap , Ġtarget Width : ĠInt , Ġtarget Height : ĠInt ): ĠBitmap { ĊĠĠĠĠĠĠĠ Ġif Ġ( target Width Ġ== Ġ 0 Ġ|| Ġtarget Height Ġ== Ġ 0 ) Ġreturn Ġsrc ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Width Ġ= Ġsrc . width ĊĠĠĠĠĠĠĠ Ġval Ġoriginal Height Ġ= Ġsrc . height ĊĠĠĠĠĠĠĠ Ġif Ġ( original Height Ġ== Ġtarget Height Ġ&& Ġoriginal Width Ġ== Ġtarget Width ) Ġreturn Ġsrc ĊĠĠĠĠĠĠĠ Ġvar Ġimage : ĠBitmap ĊĠĠĠĠĠĠĠ Ġval Ġcrop Width Ġ= Ġoriginal Width Ġ* Ġtarget Height Ġ/ Ġoriginal Height Ġ>= Ġtarget Width ĊĠĠĠĠĠĠĠ Ġif Ġ( crop Width ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcrop Length Ġ= Ġ( original Width Ġ- Ġoriginal Height Ġ* Ġtarget Width Ġ/ Ġtarget Height ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠBitmap . create Bitmap ( src , Ġcrop Length , Ġ 0 , Ġoriginal Width Ġ- Ġ 2 Ġ* Ġcrop Length , Ġoriginal Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠBitmap . create Scaled Bitmap ( image , Ġtarget Width , Ġtarget Height , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} else Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcrop Length Ġ= Ġ( original Height Ġ- Ġoriginal Width Ġ* Ġtarget Height Ġ/ Ġtarget Width ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠBitmap . create Bitmap ( src , Ġ 0 , Ġcrop Length , Ġoriginal Width , Ġoriginal Height Ġ- Ġ 2 Ġ* Ġcrop Length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= ĠBitmap . create Scaled Bitmap ( image , Ġtarget Width , Ġtarget Height , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġimage ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Color ( Ġcontext : ĠContext , Ġcolor Res : ĠInt ): ĠInt { ĊĠĠĠĠĠĠĠ Ġreturn ĠContext Compat . getColor ( context , Ġcolor Res ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Color Hex ( Ġcontext : ĠContext , Ġcolor Res : ĠInt ): ĠString { ĊĠĠĠĠĠĠĠ Ġreturn ĠInteger . to HexString ( getColor ( context , Ġcolor Res ) Ġand Ġ 0 x 0 0 ffffff ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ ĠgetCurrent App Resolution ( context : ĠContext ): ĠPoint { ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= ĠPoint () ĊĠĠĠĠĠĠĠ Ġval Ġwindow Manager Ġ= Ġcontext . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ? Ġ?: Ġreturn ĠPoint () ĊĠĠĠĠĠĠĠ Ġwindow Manager . default Display . getSize ( size ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsize ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconst Ġval ĠDP Ġ= ĠTyped Value . COMPLEX _ UNIT _ DIP ĊĠĠĠ Ġconst Ġval ĠSP Ġ= ĠTyped Value . COMPLEX _ UNIT _ SP ĊĠĠĠ Ġfun Ġsize ( Ġcontext : ĠContext , Ġvalue : ĠFloat , Ġtype : ĠInt ): ĠFloat Ġ= ĠTyped Value . apply Dimension ( type , Ġvalue , Ġcontext . resources . display Metrics ) ĊĊĠĠĠ Ġfun Ġget Android Version By API ( api : ĠInt , Ġexact : ĠBoolean ): ĠString { ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( api ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDEV Ġ-> Ġif Ġ( exact ) Ġ" DEV " Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR Ġ-> Ġ" 1 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠQ Ġ-> Ġ" 1 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP Ġ-> Ġ" 9 " Ġ Ġ// Ġ 9 ĠP ie ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 8 . 1 . 0 " Ġelse Ġ" 8 " Ġ Ġ// Ġ 8 . 1 . 0 ĠO re o ĊĠĠĠĠĠĠĠĠĠĠĠ ĠO Ġ-> Ġif Ġ( exact ) Ġ" 8 . 0 . 0 " Ġelse Ġ" 8 " Ġ Ġ// Ġ 8 . 0 . 0 ĠO re o ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN _ MR 1 -> Ġif Ġ( exact ) Ġ" 7 . 1 " Ġelse Ġ" 7 " Ġ Ġ// Ġ 7 . 1 ĠN ou gat ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN Ġ-> Ġif Ġ( exact ) Ġ" 7 . 0 " Ġelse Ġ" 7 " Ġ Ġ// Ġ 7 . 0 ĠN ou gat ĊĠĠĠĠĠĠĠĠĠĠĠ ĠM Ġ-> Ġif Ġ( exact ) Ġ" 6 . 0 " Ġelse Ġ" 6 " Ġ Ġ// Ġ 6 . 0 ĠMar shm allow ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 5 . 1 " Ġelse Ġ" 5 " Ġ Ġ// Ġ 5 . 1 ĠL ol lip op ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL Ġ-> Ġif Ġ( exact ) Ġ" 5 . 0 " Ġelse Ġ" 5 " Ġ Ġ// Ġ 5 . 0 ĠL ol lip op ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK _ WATCH Ġ-> Ġif Ġ( exact ) Ġ" 4 . 4 W " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 4 W ĠKit K at ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Ġ-> Ġif Ġ( exact ) Ġ" 4 . 4 Ġ- Ġ 4 . 4 . 4 " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 4 Ġ- Ġ 4 . 4 . 4 ĠKit K at ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ _ MR 2 Ġ-> Ġif Ġ( exact ) Ġ" 4 . 3 . x " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 3 . x ĠJ el ly ĠBean ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 4 . 2 . x " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 2 . x ĠJ el ly ĠBean ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJ Ġ-> Ġif Ġ( exact ) Ġ" 4 . 1 . x " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 1 . x ĠJ el ly ĠBean ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 4 . 0 . 3 Ġ- Ġ 4 . 0 . 4 " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 0 . 3 Ġ- Ġ 4 . 0 . 4 ĠI ce ĠC ream ĠSand wich ĊĠĠĠĠĠĠĠĠĠĠĠ ĠI Ġ-> Ġif Ġ( exact ) Ġ" 4 . 0 . 1 Ġ- Ġ 4 . 0 . 2 " Ġelse Ġ" 4 " Ġ Ġ// Ġ 4 . 0 . 1 Ġ- Ġ 4 . 0 . 2 ĠI ce ĠC ream ĠSand wich ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH _ MR 2 Ġ-> Ġif Ġ( exact ) Ġ" 3 . 2 . x " Ġelse Ġ" 3 " Ġ Ġ// Ġ 3 . 2 . x ĠH oney comb ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 3 . 1 " Ġelse Ġ" 3 " Ġ Ġ// Ġ 3 . 1 ĠH oney comb ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH Ġ-> Ġif Ġ( exact ) Ġ" 3 . 0 " Ġelse Ġ" 3 " Ġ Ġ// Ġ 3 . 0 ĠH oney comb ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ Ġ" 2 . 3 . 3 Ġ- Ġ 2 . 3 . 7 " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 3 . 3 Ġ- Ġ 2 . 3 . 7 ĠG inger bread ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG Ġ-> Ġif Ġ( exact ) Ġ" 2 . 3 Ġ- Ġ 2 . 3 . 2 " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 3 Ġ- Ġ 2 . 3 . 2 ĠG inger bread ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF Ġ-> Ġif Ġ( exact ) Ġ" 2 . 2 . x " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 2 . x ĠF roy o ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE _ MR 1 Ġ-> Ġif Ġ( exact ) Ġ" 2 . 1 " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 1 ĠE cl air ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE _ 0 _ 1 Ġ-> Ġif Ġ( exact ) Ġ" 2 . 0 . 1 " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 0 . 1 ĠE cl air ĊĠĠĠĠĠĠĠĠĠĠĠ ĠE Ġ-> Ġif Ġ( exact ) Ġ" 2 . 0 " Ġelse Ġ" 2 " Ġ Ġ// Ġ 2 . 0 ĠE cl air ĊĠĠĠĠĠĠĠĠĠĠĠ ĠD Ġ-> Ġif Ġ( exact ) Ġ" 1 . 6 " Ġelse Ġ" 1 " Ġ Ġ// Ġ 1 . 6 ĠDon ut ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC Ġ-> Ġif Ġ( exact ) Ġ" 1 . 5 " Ġelse Ġ" 1 " Ġ Ġ// Ġ 1 . 5 ĠC up cake ĊĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġ-> Ġif Ġ( exact ) Ġ" 1 . 1 " Ġelse Ġ" 1 " Ġ Ġ// Ġ 1 . 1 Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġ-> Ġif Ġ( exact ) Ġ" 1 . 0 " Ġelse Ġ" 1 " Ġ Ġ// Ġ 1 . 0 Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġconst Ġval ĠDEV Ġ= ĠBuild . VERSION _ CODES . CUR _ DE VELO P MENT ĊĠĠĠ Ġconst Ġval ĠR Ġ= ĠBuild . VERSION _ CODES . R ĊĠĠĠ Ġconst Ġval ĠQ Ġ= ĠBuild . VERSION _ CODES . Q ĊĠĠĠ Ġconst Ġval ĠP Ġ= ĠBuild . VERSION _ CODES . P ĊĠĠĠ Ġconst Ġval ĠO _ MR 1 Ġ= ĠBuild . VERSION _ CODES . O _ MR 1 ĊĠĠĠ Ġconst Ġval ĠO Ġ= ĠBuild . VERSION _ CODES . O ĊĠĠĠ Ġconst Ġval ĠN _ MR 1 Ġ= ĠBuild . VERSION _ CODES . N _ MR 1 ĊĠĠĠ Ġconst Ġval ĠN Ġ= ĠBuild . VERSION _ CODES . N ĊĠĠĠ Ġconst Ġval ĠM Ġ= ĠBuild . VERSION _ CODES . M ĊĠĠĠ Ġconst Ġval ĠL _ MR 1 Ġ= ĠBuild . VERSION _ CODES . LO L LI POP _ MR 1 ĊĠĠĠ Ġconst Ġval ĠL Ġ= ĠBuild . VERSION _ CODES . LO L LI POP ĊĠĠĠ Ġconst Ġval ĠK _ WATCH Ġ= ĠBuild . VERSION _ CODES . KIT K AT _ WATCH ĊĠĠĠ Ġconst Ġval ĠK Ġ= ĠBuild . VERSION _ CODES . KIT K AT ĊĠĠĠ Ġconst Ġval ĠJ _ MR 2 Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 2 ĊĠĠĠ Ġconst Ġval ĠJ _ MR 1 Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ĊĠĠĠ Ġconst Ġval ĠJ Ġ= ĠBuild . VERSION _ CODES . J EL LY _ BE AN ĊĠĠĠ Ġconst Ġval ĠI _ MR 1 Ġ= ĠBuild . VERSION _ CODES . ICE _ CRE AM _ S AND W ICH _ MR 1 ĊĠĠĠ Ġconst Ġval ĠI Ġ= ĠBuild . VERSION _ CODES . ICE _ CRE AM _ S AND W ICH ĊĠĠĠ Ġconst Ġval ĠH _ MR 2 Ġ= ĠBuild . VERSION _ CODES . H ONE Y COMB _ MR 2 ĊĠĠĠ Ġconst Ġval ĠH _ MR 1 Ġ= ĠBuild . VERSION _ CODES . H ONE Y COMB _ MR 1 ĊĠĠĠ Ġconst Ġval ĠH Ġ= ĠBuild . VERSION _ CODES . H ONE Y COMB ĊĠĠĠ Ġconst Ġval ĠG _ MR 1 Ġ= ĠBuild . VERSION _ CODES . GING ER B READ _ MR 1 ĊĠĠĠ Ġconst Ġval ĠG Ġ= ĠBuild . VERSION _ CODES . GING ER B READ ĊĠĠĠ Ġconst Ġval ĠF Ġ= ĠBuild . VERSION _ CODES . F RO YO ĊĠĠĠ Ġconst Ġval ĠE _ MR 1 Ġ= ĠBuild . VERSION _ CODES . E CL AIR _ MR 1 ĊĠĠĠ Ġconst Ġval ĠE _ 0 _ 1 Ġ= ĠBuild . VERSION _ CODES . E CL AIR _ 0 _ 1 ĊĠĠĠ Ġconst Ġval ĠE Ġ= ĠBuild . VERSION _ CODES . E CL AIR ĊĠĠĠ Ġconst Ġval ĠD Ġ= ĠBuild . VERSION _ CODES . D ON UT ĊĠĠĠ Ġconst Ġval ĠC Ġ= ĠBuild . VERSION _ CODES . CUP CA KE ĊĠĠĠ Ġconst Ġval ĠB Ġ= ĠBuild . VERSION _ CODES . BASE _ 1 _ 1 ĊĠĠĠ Ġconst Ġval ĠA Ġ= ĠBuild . VERSION _ CODES . BASE ĊĊĠĠĠ Ġfun Ġabove Off ( api Level : ĠInt ): ĠBoolean Ġ= ĠBuild . VERSION . SDK _ INT Ġ> Ġapi Level ĊĊĠĠĠ Ġfun Ġabove On ( api Level : ĠInt ): ĠBoolean Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= Ġapi Level ĊĊĠĠĠ Ġfun Ġbelow Off ( api Level : ĠInt ): ĠBoolean Ġ= ĠBuild . VERSION . SDK _ INT Ġ< Ġapi Level ĊĊĠĠĠ Ġfun Ġbelow On ( api Level : ĠInt ): ĠBoolean Ġ= ĠBuild . VERSION . SDK _ INT Ġ<= Ġapi Level ĊĊĠĠĠ Ġfun Ġtoast ( Ġcontext : ĠContext , Ġmessage Res : ĠInt , Ġduration : ĠInt ){ ĊĠĠĠĠĠĠĠ Ġtoast ( context , Ġcontext . getString ( message Res ), Ġduration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtoast ( Ġcontext : ĠContext , Ġ Ġmessage : ĠCharSequence , Ġduration : ĠInt ){ ĊĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . Main ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! main Application . notification Available ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ launch ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġmessage , Ġduration ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ