package Ġcom . ep iph any . call show . common . utils Ċ Ċ import Ġandroid . app widget . App Widget Manager Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . Application Info Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . text . TextUtils Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ object ĠCommon Util Ġ{ ĊĠĠĠ Ġfun Ġis App Installed ( context : ĠContext , Ġpkg Name : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpm Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( pm Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpm . get Package Info ( pkg Name !! , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠPackage Manager . Name NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas SD Card (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnvironment . get External Storage State () Ġ== Ġ" mounted " ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( PackageManager . Name NotFoundException :: class ) ĊĠĠĠ Ġfun Ġget App Label ( context : ĠContext , ĠpackageName : ĠString ?): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠ Ġval Ġapplication Info Ġ= Ġmanager . getApplication Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ META _ DATA ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapplication Info . load Label ( manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( PackageManager . Name NotFoundException :: class ) ĊĠĠĠ Ġfun Ġget App Icon ( context : ĠContext , ĠpackageName : ĠString ?): ĠDrawable ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġcontext . package Manager ĊĠĠĠĠĠĠĠ Ġval Ġapplication Info Ġ= Ġmanager . getApplication Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPackage Manager . GET _ META _ DATA ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapplication Info . load Icon ( manager ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠdateFormat HM Ġ= Ġ" HH : mm " ĊĊĊĠĠĠ Ġfun Ġget Friendly Time ( time : ĠLong ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdate Ġ= ĠDate () ĊĠĠĠĠĠĠĠ Ġdate . time Ġ= Ġtime ĊĠĠĠĠĠĠĠ Ġval Ġtime In Millis Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Calendar . getInstance (). time In Millis Ġ/ Ġ 8 6 4 0 0 0 0 0 Ġ- Ġdate . time Ġ/ Ġ 8 6 4 0 0 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( time In Millis Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat Data ( date Format HM , Ġtime ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġtime In Millis . toString () Ġ+ Ġ" å¤© åīį " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġformat Data ( str : ĠString ?, Ġj : ĠLong ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( j Ġ== Ġ 0 L ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSimpleDateFormat ( str ). format ( Date ( j )) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġparse Time ( seconds : ĠLong , Ġshow Seconds : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġday Ġ= ĠTimeUnit . SECONDS . to Days ( seconds ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġhours Ġ= ĠTimeUnit . SECONDS . to Hours ( seconds ) Ġ- ĠTimeUnit . DAYS . to Hours ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Days ( seconds ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġminute Ġ= ĠTimeUnit . SECONDS . to Minutes ( seconds ) Ġ- ĠTimeUnit . HOUR S . to Minutes ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Hours ( seconds ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġsecond Ġ= ĠTimeUnit . SECONDS . to Seconds ( seconds ) Ġ- ĠTimeUnit . MIN UTES . to Seconds ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Minutes ( seconds ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠ Ġif Ġ( day Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( day ). append (" å¤© ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( hours Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( hours ). append (" å°ı æĹ¶ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( minute Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( minute ). append (" åĪĨ éĴŁ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( second Ġ> Ġ 0 Ġ&& Ġshow Seconds ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append ( second ). append (" ç§Ĵ ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis System App ( info : ĠApplication Info ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo . flags Ġand Ġ 1 Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat FileSize ( j : ĠLong , Ġz : ĠBoolean ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstrings Ġ= Ġformat FileSize Array ( j , Ġz ) ĊĠĠĠĠĠĠĠ Ġreturn Ġstrings [ 0 ] Ġ+ Ġstrings [ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Size Th ous and ( size : ĠLong , Ġpointed : ĠBoolean ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstrings Ġ= Ġformat Size With Th ous and ( size , Ġpointed ) ĊĠĠĠĠĠĠĠ Ġreturn Ġstrings [ 0 ] Ġ+ Ġstrings [ 1 ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Size With Th ous and ( size : ĠLong , Ġpointed : ĠBoolean ): ĠArray < String ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecimal Format Ġ= Ġif Ġ( point ed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecimal Format (" 0 ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecimal Format (" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdecimal Format . is Grouping Used Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstr Array Ġ= ĠarrayOf Null s < String >( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" B " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 1 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" B " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 1 0 0 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format (( size . toFloat () Ġ/ Ġ 1 0 0 0 . 0 f ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" KB " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 1 0 0 0 0 0 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format (( size Ġ* Ġ 1 . 0 f Ġ/ Ġ 1 0 0 0 0 0 0 ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" MB " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= ĠDecimal Format (" 0 . 0 "). format (( size Ġ* Ġ 1 . 0 f Ġ/ Ġ 1 0 0 0 0 0 0 0 0 0 ). toDouble ()) ĊĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" GB " ĊĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Is Next Day ( last Time : ĠLong ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" yyyy MM dd ", ĠLocale . US ) ĊĠĠĠĠĠĠĠ Ġval Ġlast Date Ġ= Ġsdf . format ( Date ( last Time )) ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Date Ġ= Ġsdf . format ( Date ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Date . toInt () Ġ> Ġlast Date . toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat FileSize Array ( j : ĠLong , Ġz : ĠBoolean ): ĠArray < String ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdecimal Format : ĠDecimal Format Ġ= Ġif Ġ( z ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecimal Format (" 0 ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDecimal Format (" 0 . 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdecimal Format . is Grouping Used Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġstr Array Ġ= ĠarrayOf Null s < String >( 2 ) ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġ" 0 B " ĊĠĠĠĠĠĠĠ Ġif Ġ( j Ġ<= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" B " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( j Ġ< Ġ 1 0 2 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format ( j ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" B " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( j Ġ< Ġ 1 0 2 4 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format (( j . toFloat () Ġ/ Ġ 1 0 2 4 . 0 f ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" KB " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( j Ġ< Ġ 1 0 4 8 5 7 6 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= Ġdecimal Format . format ((( j Ġshr Ġ 1 0 ). toFloat () Ġ/ Ġ 1 0 2 4 . 0 f ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" MB " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstr Array [ 0 ] Ġ= ĠDecimal Format (" 0 . 0 "). format ((( j Ġshr Ġ 2 0 ). toFloat () Ġ/ Ġ 1 0 2 4 . 0 f ). toDouble ()) ĊĠĠĠĠĠĠĠ Ġstr Array [ 1 ] Ġ= Ġ" GB " ĊĠĠĠĠĠĠĠ Ġreturn Ġstr Array ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġæ£Ģ æŁ¥ æĺ¯åĲ¦ å·² æ·»åĬł Widget , Ġè¿ĶåĽŀ app Widget Id åĪĻ ä»£è¡¨ å·² æ·»åĬł ĊĠĠĠ Ġfun Ġis Widget Added ( context : ĠContext ?, Ġcls : ĠClass < *> ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= ĠApp Widget Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠ Ġval Ġmy Provider Ġ= ĠComponent Name ( context !! , Ġcls !! ) ĊĠĠĠĠĠĠĠ Ġval Ġapp Widget Ids Ġ= Ġinstance . getApp Widget Ids ( my Provider ) ĊĠĠĠĠĠĠĠ Ġreturn Ġapp Widget Ids . isNotEmpty () Ġ&& Ġapp Widget Ids [ 0 ] Ġ> Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Widget Need Auto Added ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġcls : ĠClass <* >, ĊĠĠĠĠĠĠĠ Ġconfig Key : ĠString , ĊĠĠĠĠĠĠĠ Ġprobability : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Widget Added ( context , Ġcls )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis First Add Widget : ĠBoolean Ġ= ĠShared Preference Util . getBoolean ( config Key , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is First Add Widget ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠShared Preference Util . set Boolean ( config Key , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Pin Widget ( context , Ġcls ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( probability ) Ġ{ Ġ// Ġæ ¦Ĥ çİĩ æĺ¾ç¤º ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Pin Widget ( context , Ġcls ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Pin Widget ( context : ĠContext , Ġcls : ĠClass <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapp Widget Manager Ġ= ĠApp Widget Manager . getInstance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( app Widget Manager . is Request Pin App Widget Supported ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Provider Ġ= ĠComponent Name ( context , Ġcls ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Widget Manager . request Pin App Widget ( my Provider , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Ġjava . lang . Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġs Name : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġs Version : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ EM UI Ġ= Ġ" EM UI " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ FL Y ME Ġ= Ġ" FL Y ME " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ MI UI Ġ= Ġ" MI UI " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ OP PO Ġ= Ġ" OP PO " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ Q IK U Ġ= Ġ" Q IK U " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ SM ART IS AN Ġ= Ġ" SM ART IS AN " ĊĠĠĠ Ġprivate Ġconst Ġval ĠROM _ V IV O Ġ= Ġ" V IV O " ĊĊĠĠĠ Ġfun Ġis Em ui (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ EM UI ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Mi ui (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ MI UI ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis V ivo (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ V IV O ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Opp o (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ OP PO ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Fly me (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ FL Y ME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis 3 6 0 (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ Q IK U ) Ġ|| Ġcheck (" 3 6 0 ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Smart isan (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck ( ROM _ SM ART IS AN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck ( str : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s Name Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Name Ġ== Ġstr ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck Rom () ĊĠĠĠĠĠĠĠ Ġreturn Ġs Name Ġ== Ġstr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Rom Version (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( s Version Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Version ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcheck Rom () ĊĠĠĠĠĠĠĠ Ġreturn Ġs Version ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Rom () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprop Ġ= ĠSystem Info . getSystem Property (" ro . mi ui . ui . version . name ", Ġ"") ĊĠĠĠĠĠĠĠ Ġs Version Ġ= Ġprop ĊĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( prop )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ MI UI ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop 2 Ġ= ĠSystem Info . getSystem Property (" ro . build . version . em ui ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= Ġprop 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( prop 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ EM UI ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop 3 Ġ= ĠSystem Info . getSystem Property (" ro . build . version . op por om ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= Ġprop 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( prop 3 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ OP PO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop 4 Ġ= ĠSystem Info . getSystem Property (" ro . v ivo . os . version ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= Ġprop 4 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( prop 4 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ V IV O ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop 5 Ġ= ĠSystem Info . getSystem Property (" ro . smart isan . version ", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= Ġprop 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( prop 5 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ SM ART IS AN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= ĠBuild . DISPLAY ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Version !!. toUpperCase (). contains ( ROM _ FL Y ME )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠROM _ FL Y ME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Version Ġ= Ġ" unknown " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Name Ġ= ĠBuild . MAN U FACT UR ER . toUpperCase () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Formatted Num ( num : ĠFloat ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠDecimal Format (" 0 .# "). format ( num . toDouble ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Count ( count : ĠLong ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( count Ġ>= Ġ 1 0 0 0 0 ) Ġget Formatted Num ( count Ġ/ Ġ 1 0 0 0 0 f ) Ġ+ Ġ" w " Ġelse Ġcount . toString () Ġ+ Ġ"" ĊĠĠĠ Ġ} Ċ Ċ }