package Ġ` is `. xyz . mp v Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Environment Ċ import Ġandroid . os . storage . Storage Manager Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . util . Typed Value Ċ import Ġjava . io . File Ċ Ċ object ĠUtils Ġ{ ĊĠĠĠ Ġfun Ġhas Software Keys ( activity : ĠActivity ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠDetect Ġwhether Ġdevice Ġhas Ġsoftware Ġhome Ġbutton ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// stackoverflow . com / questions / 1 4 8 5 3 0 3 9 /# answer - 1 4 8 7 1 9 7 4 ĊĠĠĠĠĠĠĠ Ġval Ġdisp Ġ= Ġactivity . window Manager . default Display ĊĊĠĠĠĠĠĠĠ Ġval Ġreal Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġdisp . get Real Metrics ( real Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġreal W Ġ= Ġreal Metrics . width Pixels ĊĠĠĠĠĠĠĠ Ġval Ġreal H Ġ= Ġreal Metrics . height Pixels ĊĠĠĠĠĠĠĠ Ġval Ġmetrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġdisp . get Metrics ( metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġw Ġ= Ġmetrics . width Pixels ĊĠĠĠĠĠĠĠ Ġval Ġh Ġ= Ġmetrics . height Pixels ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ( real W Ġ- Ġw Ġ> Ġ 0 ) Ġor Ġ( real H Ġ- Ġh Ġ> Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconvert Dp ( context : ĠContext , Ġdp : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠTyped Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġdp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . resources . display Metrics ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpretty Time ( d : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġd Ġ/ Ġ 3 6 0 0 ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġd Ġ% Ġ 3 6 0 0 Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġd Ġ% Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġif Ġ( hours Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"% 0 2 d :% 0 2 d ". format ( minutes , Ġseconds ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"% d :% 0 2 d :% 0 2 d ". format ( hours , Ġminutes , Ġseconds ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Screen Brightness ( activity : ĠActivity ): ĠFloat ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġwindow Ġhas Ġbrightness Ġset ĊĠĠĠĠĠĠĠ Ġval Ġlp Ġ= Ġactivity . window . attributes ĊĠĠĠĠĠĠĠ Ġif Ġ( lp . screen Brightness Ġ>= Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlp . screen Brightness ĊĊĠĠĠĠĠĠĠ Ġ// Ġread Ġsystem Ġpref : Ġhttps :// stackoverflow . com / questions / 4 5 4 4 9 6 7 /# answer - 8 1 1 4 3 0 7 ĊĠĠĠĠĠĠĠ Ġ// Ġ( does n 't Ġwork Ġwith Ġauto - brightness Ġmode ) ĊĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= Ġactivity . content Resolver ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . getInt ( resolver , ĠSettings . System . SCREEN _ BR IGHT NESS ) Ġ/ Ġ 2 5 5 f ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSettings . Setting NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠStorage Path ( val Ġpath : ĠFile , Ġval Ġdescription : ĠString ) ĊĊĠĠĠ Ġ@ Suppress Lint (" New Api ") ĊĠĠĠ Ġfun Ġget Storage Volumes ( context : ĠContext ): ĠList < Storage Path > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġmutable ListOf < Storage Path >() ĊĠĠĠĠĠĠĠ Ġassert ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) ĊĊĠĠĠĠĠĠĠ Ġval Ġstorage Manager Ġ= Ġcontext . getSystem Service ( Context . STORAGE _ SERVICE ) Ġas ĠStorage Manager ĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġall Ġmedia Ġdirs , Ġthere Ġwill Ġbe Ġone Ġon Ġeach Ġstorage Ġvolume ĊĠĠĠĠĠĠĠ Ġfor Ġ( path Ġin Ġcontext . external Media Dirs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs vol Ġ= Ġstorage Manager . get Storage Volume ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sv ol Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Can 't Ġget Ġstorage Ġvolume Ġfor Ġ$ path ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sv ol . state Ġ!= ĠEnvironment . MEDIA _ MOUNT ED ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontinue ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfind Ġthe Ġactual Ġroot Ġpath Ġof Ġthat Ġvolume ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġroot Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( storage Manager . get Storage Volume ( root . parent File ) Ġ== Ġs vol ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= Ġroot . parent File ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( Storage Path ( root , Ġs vol . getDescription ( context ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" mp v " Ċ }