package Ġjp . co . yu ji . my debug application . presentation . view . fragment . device Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . ACTIVITY _ SERVICE Ċ import Ġandroid . content . Context . WIFI _ SERVICE Ċ import Ġandroid . net . wifi . Wifi Info Ċ import Ġandroid . net . wifi . Wifi Manager Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . provider . Settings Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . view . WindowManager Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġjp . co . yu ji . my debug application . R Ċ import Ġjp . co . yu ji . my debug application . domain . model . Common Dto Ċ import Ġjp . co . yu ji . my debug application . presentation . view . adapter . common . Common RecyclerView Adapter Ċ import Ġjp . co . yu ji . my debug application . presentation . view . fragment . Base Fragment Ċ import Ġjava . math . BigInteger Ċ import Ġjava . net . Inet Address Ċ import Ġjava . util .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ common . view .* ĊĊ Ċ /** Ċ Ġ* ĠDevice ĠInfo ĠFragment . Ċ Ġ*/ Ċ class ĠDevice Info Fragment Ġ: ĠBase Fragment () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance () Ġ: ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDevice Info Fragment () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate View ( in flater , Ġcontainer , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ common , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġview . re cyclerView . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠCommon RecyclerView Adapter ( require Activity (), Ġget DeviceInfo ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . re cyclerView . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Title (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . string . screen _ name _ device _ info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget DeviceInfo () Ġ: ĠArrayList < Common Dto > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Common Dto >() ĊĠĠĠĠĠĠĠ Ġadd Build Info ( list ) ĊĠĠĠĠĠĠĠ Ġadd Screen Info ( list ) ĊĠĠĠĠĠĠĠ Ġadd Memory Info ( list ) ĊĠĠĠĠĠĠĠ Ġadd Time Info ( list ) ĊĠĠĠĠĠĠĠ Ġadd Other Info ( list ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Build Info ( list Ġ: ĠArrayList < Common Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Android ", Ġandroid . os . Build . VERSION . RELEASE )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" API ĠLevel ", Ġ( android . os . Build . VERSION . SDK _ INT ). toString ())) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Device ", Ġandroid . os . Build . DEVICE )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Model ", Ġandroid . os . Build . MODEL )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Product ", Ġandroid . os . Build . PRODUCT )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Screen Info ( list Ġ: ĠArrayList < Common Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġval Ġwindow Manager Ġ= Ġcontext ?. getSystem Service ( Context . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġwindow Manager . default Display . get Metrics ( display Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġscreen Width Ġ= Ġdisplay Metrics . width Pixels ĊĠĠĠĠĠĠĠ Ġval Ġscreen Height Ġ= Ġdisplay Metrics . height Pixels ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Resolution ", Ġ"$ screen Width ĠX Ġ$ screen Height ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= Ġresources . display Metrics ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" X dpi ", Ġmetrics . xd pi . toString () Ġ+ Ġ" Ġdpi ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Y dpi ", Ġmetrics . yd pi . toString () Ġ+ Ġ" Ġdpi ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Density ", Ġmetrics . density . toString ())) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Density D pi ", Ġmetrics . density D pi . toString () Ġ+ Ġ" Ġdpi ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Scaled Density ", Ġmetrics . scaled Density . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Memory Info ( list Ġ: ĠArrayList < Common Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Manager Ġ= Ġcontext ?. getSystem Service ( ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ĊĠĠĠĠĠĠĠ Ġval Ġmemory Info Ġ= ĠActivity Manager . Memory Info () ĊĠĠĠĠĠĠĠ Ġactivity Manager . get Memory Info ( memory Info ) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Total ĠMemory ", Ġ( memory Info . total Mem / 1 0 2 4 / 1 0 2 4 ). toString () Ġ+ Ġ" ĠMB ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Available ĠMemory ", Ġ( memory Info . avail Mem / 1 0 2 4 / 1 0 2 4 ). toString () Ġ+ Ġ" ĠMB ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Low Memory ĠThreshold ", Ġ( memory Info . threshold / 1 0 2 4 / 1 0 2 4 ). toString () Ġ+ Ġ" ĠMB ")) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Low Memory ?", Ġmemory Info . low Memory . toString ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Time Info ( list Ġ: ĠArrayList < Common Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Zone Ġ= ĠTime Zone . getDefault Ġ() ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" TimeZone ", Ġtime Zone . displayName )) ĊĠĠĠĠĠĠĠ Ġval Ġu ptime Ġ= ĠSystem Clock . uptime Millis () ĊĠĠĠĠĠĠĠ Ġval Ġday Ġ= Ġ( uptime / 1 0 0 0 / 6 0 / 6 0 / 2 4 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġremain ed Day Ġ= Ġu ptime %( 1 0 0 0 * 6 0 * 6 0 * 2 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġhour Ġ= Ġ( remain ed Day / 1 0 0 0 / 6 0 / 6 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġremain ed Hour Ġ= Ġremain ed Day %( 1 0 0 0 * 6 0 * 6 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġ( remain ed Hour / 1 0 0 0 / 6 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" U ptime ", Ġday . toString () Ġ+ Ġ" Ġdays Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġhour . toString () Ġ+ Ġ" Ġh Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġminutes . toString () Ġ+ Ġ" Ġm ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Hardware Ids ") ĊĠĠĠ Ġprivate Ġfun Ġadd Other Info ( list Ġ: ĠArrayList < Common Dto >) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Language ", ĠLocale . getDefault (). language )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Display ĠLanguage ", ĠLocale . getDefault (). display Language )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Display ĠName ", ĠLocale . getDefault (). displayName )) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Display ĠScript ", ĠLocale . getDefault (). display Script )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Display ĠVariant ", ĠLocale . getDefault (). display Variant )) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" IP ĠAddress ", Ġget IpAddress ())) ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Mac ĠAddress ", Ġget Mac Address ())) ĊĊĠĠĠĠĠĠĠ Ġvar Ġandroid Id Ġ= ĠSettings . Secure . getString ( context ?. content Resolver , ĠSettings . Secure . ANDROID _ ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( android Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Id Ġ= Ġ" none " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlist . add ( Common Dto (" Android ĠID ", Ġandroid Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget IpAddress () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwifi Manager Ġ= Ġcontext ?. getSystem Service ( WIFI _ SERVICE ) Ġas ĠW ifi Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwifi Info : ĠW ifi Info Ġ= Ġwifi Manager . connection Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy IPAddress : ĠByteArray Ġ= ĠBigInteger . valueOf ( wifi Info . ipAddress . to Long ()). toByteArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġyou Ġmust Ġreverse Ġthe Ġbyte Ġarray Ġbefore Ġconversion . ĠUse ĠApache 's Ġcommon s Ġlibrary ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy IPAddress . reverse () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmy Inet IP : ĠInet Address Ġ= ĠInet Address . getBy Address ( my IPAddress ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmy Inet IP . host Address ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Log Event (" exception Ġin Ġget Ġip Ġaddress : Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" none " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Hardware Ids ") ĊĠĠĠ Ġprivate Ġfun Ġget Mac Address () Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwifi Manager Ġ= Ġcontext ?. getSystem Service ( WIFI _ SERVICE ) Ġas ĠW ifi Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġwifi Manager . connection Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo . mac Address ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Log Event (" exception Ġin Ġget Ġmac Ġaddress : Ġ${ e . message }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ" none " ĊĠĠĠ Ġ} Ċ Ċ }