package Ġcom . aos . app . ut Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . Stat Fs Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroid . text . format . Formatter Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠDescribe Ġ Ġ: Ċ Ġ*/ Ċ Ċ fun ĠContext . get Tele phony Manager (): ĠTele phony Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġapplication Context . getSystem Service ( Context . TELE PHONY _ SERVICE ) Ġas ? ĠTele phony Manager Ċ } Ċ Ċ fun ĠContext . get Wifi Manager (): ĠW ifi Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġapplication Context . getSystem Service ( Context . WIFI _ SERVICE ) Ġas ? ĠW ifi Manager Ċ } Ċ Ċ fun ĠContext . get WindowManager (): ĠWindow Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġapplication Context . getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ? ĠWindow Manager Ċ } Ċ Ċ fun ĠContext . getActivity Manager (): ĠActivity Manager ? Ġ{ ĊĠĠĠ Ġreturn Ġget System Service ( Context . ACTIVITY _ SERVICE ) Ġas ? ĠActivity Manager Ċ } Ċ Ċ fun ĠContext . check Permission ( permission : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn ĠContext Compat . check Self Permission ( this , Ġpermission ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED Ċ } Ċ Ċ @ Suppress Lint (" Missing Permission ", Ġ" Hardware Ids ") Ċ fun ĠContext . getDevice IME I (): ĠString Ġ{ ĊĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . READ _ PHONE _ STATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStrings . EMPTY ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠI ME I Ġ= Ġget Tele phony Manager ()?. deviceId Ġ?: ĠStrings . EMPTY ĊĠĠĠ Ġreturn Ġif Ġ( IME I Ġ== Ġ" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ") ĠStrings . EMPTY Ġelse ĠI ME I Ċ } Ċ Ċ @ Suppress Lint (" Missing Permission ", Ġ" Hardware Ids ") Ċ fun ĠContext . getDevice IM SI (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . READ _ PHONE _ STATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStrings . EMPTY ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġget Tele phony Manager ()?. subscriber Id Ġ?: ĠStrings . EMPTY Ċ } ĊĊ Ċ fun ĠContext . getDevice Display Size (): ĠPoint Ġ{ ĊĠĠĠ Ġreturn ĠPoint (). also Ġ{ Ġget WindowManager ()?. default Display ?. getSize ( it ) Ġ} Ċ } Ċ Ċ fun ĠContext . getDevice Display Width (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Device Display Size (). x Ċ } Ċ Ċ fun ĠContext . getDevice Display Height (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġget Device Display Size (). y Ċ } Ċ Ċ fun ĠContext . getDevice Resolution ( concat Char : ĠChar Ġ= ĠCh ars . ASTER IS K ): ĠString Ġ{ ĊĠĠĠ Ġval Ġpoint Ġ= Ġget Device Display Size () ĊĠĠĠ Ġreturn Ġ"${ point . y }$ concat Char ${ point . x }" Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ æīĭæľº åı· Ċ Ġ*/ Ċ @ Suppress Lint (" Hardware Ids ", Ġ" Missing Permission ") Ċ fun ĠContext . getDevice PhoneNumber (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . READ _ PHONE _ STATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStrings . EMPTY ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġget Tele phony Manager ()?. line 1 Number Ġ?: ĠStrings . EMPTY Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ æīĭæľº ç½ĳç»ľ è¿Ĳ èĲ¥ åķĨ ä¿¡æģ¯ Ċ Ġ*/ Ċ fun ĠContext . getDevice Provider Name (): ĠString Ġ{ ĊĠĠĠ Ġval ĠIM SI Ġ= Ġget Device IM SI () ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ ĠIM SI . startsWith (" 4 6 0 0 0 ") Ġ|| ĠIM SI . startsWith (" 4 6 0 0 2 ") Ġ-> Ġ" ä¸ŃåĽ½ ç§»åĬ¨ " ĊĠĠĠĠĠĠĠ ĠIM SI . startsWith (" 4 6 0 0 1 ") Ġ-> Ġ" ä¸ŃåĽ½ èģĶ éĢļ " ĊĠĠĠĠĠĠĠ ĠIM SI . startsWith (" 4 6 0 0 3 ") Ġ-> Ġ" ä¸ŃåĽ½ çĶµ ä¿¡ " ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStrings . EMPTY ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress Lint (" Hardware Ids ") Ċ fun ĠContext . getDevice Android Id (): ĠString Ġ{ ĊĠĠĠ Ġval Ġandroid Id Ġ= ĠSettings . Secure . getString ( content Resolver , ĠSettings . Secure . ANDROID _ ID ) ĊĠĠĠ Ġreturn Ġif Ġ(" 9 7 7 4 d 5 6 d 6 8 2 e 5 4 9 c " Ġ== Ġandroid Id ) ĠStrings . EMPTY Ġelse Ġandroid Id Ċ } Ċ Ċ @ Suppress Lint (" Missing Permission ", Ġ" Hardware Ids ") Ċ fun ĠContext . getDevice Wifi Mac Address (): ĠString Ġ{ ĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . ACCESS _ WIFI _ STATE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠStrings . EMPTY ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġget Wifi Manager ()?. connection Info ?. mac Address Ġ?: ĠStrings . EMPTY Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ èİ·å¾Ĺ æľº èº« åĨħåŃĺ æĢ» å¤§å°ı Ċ Ġ*/ Ċ fun ĠContext . getDevice Mem Total Size (): ĠLong Ġ{ ĊĠĠĠ Ġval Ġinfo Ġ= ĠActivity Manager . Memory Info () ĊĠĠĠ ĠgetActivity Manager ()?. get Memory Info ( info ) ĊĠĠĠ Ġreturn Ġinfo . total Mem Ġshr Ġ 1 0 Ċ } Ċ Ċ fun ĠContext . getDevice Mem Total Size Format String (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠFormatter . format FileSize ( this , Ġget Device Mem Total Size ()) Ċ } Ċ Ċ /** Ċ Ġ* Ġèİ·åıĸ è®¾å¤ĩ åı¯çĶ¨ åĨħåŃĺ å¤§å°ı Ċ Ġ*/ Ċ fun ĠContext . getDevice Mem Avail Size (): ĠLong Ġ{ ĊĠĠĠ Ġval Ġinfo Ġ= ĠActivity Manager . Memory Info () ĊĠĠĠ ĠgetActivity Manager ()?. get Memory Info ( info ) ĊĠĠĠ Ġreturn Ġinfo . avail Mem Ġshr Ġ 1 0 Ċ } Ċ Ċ fun ĠContext . getDevice Mem Avail Size Format String (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠFormatter . format FileSize ( this , Ġget Device Mem Avail Size ()) Ċ } ĊĊ Ċ /** Ċ Ġ* Ġ èİ·å¾Ĺ SD åį¡ æĢ» å¤§å°ı Ċ Ġ*/ Ċ fun ĠContext . getDevice SD Card Total Size (): ĠLong Ġ{ ĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . READ _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpath Ġ= ĠEnvironment . get External Storage Directory () ĊĠĠĠ Ġval Ġstat Ġ= ĠStat Fs ( path . path ) ĊĠĠĠ Ġval ĠblockSize Ġ= Ġstat . block Size . to Long () ĊĠĠĠ Ġval Ġtotal Blocks Ġ= Ġstat . block Count . to Long () ĊĠĠĠ Ġreturn ĠblockSize Ġ* Ġtotal Blocks Ċ } Ċ Ċ fun ĠContext . getDevice SD Card Total Size Format String (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠFormatter . format FileSize ( this , Ġget Device SD Card Total Size ()) Ċ } Ċ Ċ /** Ċ Ġ* Ġ èİ·å¾Ĺ sd åį¡ åī © ä½Ļ å®¹ éĩı ï¼Į åį³åı¯ çĶ¨ å¤§å°ı Ċ Ġ*/ Ċ fun ĠContext . getDevice SD Card Avail Size (): ĠLong Ġ{ ĊĠĠĠ Ġif Ġ(! check Permission ( Manifest . permission . READ _ EXTERNAL _ STORAGE )) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġpath Ġ= ĠEnvironment . get External Storage Directory () ĊĠĠĠ Ġval Ġstat Ġ= ĠStat Fs ( path . path ) ĊĠĠĠ Ġval ĠblockSize Ġ= Ġstat . block Size . to Long () ĊĠĠĠ Ġval Ġavailable Blocks Ġ= Ġstat . available Blocks . to Long () ĊĠĠĠ Ġreturn ĠblockSize Ġ* Ġavailable Blocks Ċ } Ċ Ċ fun ĠContext . getDevice SD Card Avail Size Format String (): ĠString Ġ{ ĊĠĠĠ Ġreturn ĠFormatter . format FileSize ( this , Ġget Device SD Card Avail Size ()) Ċ } ĊĊ Ċ fun ĠContext . getDevice UUID (): ĠString Ġ{ ĊĠĠĠ Ġvar Ġuuid : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġval Ġandroid Id Ġ= Ġget Device Android Id () ĊĠĠĠ Ġval Ġ ime i Ġ= Ġthis . getDevice IME I () ĊĠĠĠ Ġval Ġim si Ġ= Ġthis . getDevice IM SI () ĊĊĠĠĠ Ġvar Ġfirst Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġsecond Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġif Ġ(! android Id . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirst Id Ġ= Ġandroid Id ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! im si . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfirst Id Ġ= Ġim si ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! ime i . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġsecond Id Ġ= Ġ ime i ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( android Id . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmac Addr Ġ= Ġget Device Wifi Mac Address () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! mac Addr . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond Id Ġ= Ġmac Addr ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ(! first Id . isNull Or Blank () Ġ|| Ġ! second Id . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfull Id Ġ= Ġfirst Id Ġ+ Ġsecond Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠUUID . name UUID From Bytes ( full Id . toByteArray ( charset (" utf 8 ")) ). toString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( uuid . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġuuid Ġ= ĠUUID . randomUUID (). toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġuuid Ċ } Ċ Ċ object ĠDevice Utils Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æīĭæľº åĵģ çīĮ åıĬ åŀĭ åı· ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠgetModel (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . MODEL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ è®¾å¤ĩ åĪ¶ éĢł åķĨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Manufacturer (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . MAN U FACT UR ER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget System SDK Int (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . VERSION . SDK _ INT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget System Version (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBuild . VERSION . RELEASE ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠStrings Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEMPTY Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEL LI PS IS Ġ= Ġ" ..." Ġ// çľģ çķ¥ åı· ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠCh ars Ġ{ ĊĠĠĠ Ġconst Ġval ĠBL ANK Ġ= Ġ' Ġ' Ġ// ç©º æł¼ ĊĠĠĠ Ġconst Ġval ĠCOL ON Ġ= Ġ':' // åĨ Ĵ åı· ĊĠĠĠ Ġconst Ġval ĠS EM IC OL ON Ġ= Ġ';' Ġ// åĪĨ åı· ĊĠĠĠ Ġconst Ġval ĠCOM MA Ġ= Ġ',' Ġ// èĭ± æĸĩ éĢ Ĺ åı· ĊĠĠĠ Ġconst Ġval ĠPOINT Ġ= Ġ'.' // åı¥ åı· æĪĸ å°ı æķ° çĤ¹ ĊĠĠĠ Ġconst Ġval ĠQ UEST ION _ MARK Ġ= Ġ' ?' Ġ// éĹ® åı· ĊĠĠĠ Ġconst Ġval ĠAND Ġ= Ġ'& ' Ġ// éĹ® åı· ĊĠĠĠ Ġconst Ġval ĠOR Ġ= Ġ' |' Ġ// éĹ® åı· ĊĠĠĠ Ġconst Ġval ĠSL ASH _ FORWARD Ġ= Ġ'/' Ġ// æŃ£ æĸ ľ æĿ ł Ġ å·¦ æĸ ľ æĿ ł ĊĠĠĠ Ġconst Ġval ĠSL ASH _ BACK Ġ= Ġ'\\ ' Ġ// åıį æĸ ľ æĿ ł Ġ åı³ æĸ ľ æĿ ł ĊĠĠĠ Ġconst Ġval ĠH YP HEN Ġ= Ġ'-' Ġ// è¿ŀ åŃĹç¬¦ ĊĠĠĠ Ġconst Ġval ĠUN DER LINE Ġ= Ġ'_' // ä¸ĭ åĪĴ çº¿ ĊĠĠĠ Ġconst Ġval ĠAT Ġ= Ġ'@ ' ĊĠĠĠ Ġconst Ġval ĠAST ER IS K Ġ= Ġ'*' ĊĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ ROUND _ LEFT Ġ= Ġ'(' ĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ ROUND _ RIGHT Ġ= Ġ')' ĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ S QUARE _ LEFT Ġ= Ġ'[' ĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ S QUARE _ RIGHT Ġ= Ġ' ]' ĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ LEFT Ġ= Ġ'{ ' ĊĠĠĠ Ġconst Ġval ĠBR ACK ET _ RIGHT Ġ= Ġ' }' ĊĠĠĠ Ġconst Ġval ĠQU OTE Ġ= Ġ'"' ĊĠĠĠ Ġconst Ġval ĠS INGLE _ QUOTE Ġ= Ġ'\'' ĊĠĠĠ Ġconst Ġval ĠEX CL AM ATION _ MARK Ġ= Ġ' !' ĊĠĠĠ Ġconst Ġval ĠR MB Ġ= Ġ' Â ¥ ' ĊĠĠĠ Ġconst Ġval ĠD OL L AR Ġ= Ġ'$ ' ĊĠĠĠ Ġconst Ġval ĠPER CENT Ġ= Ġ'%' Ċ }