package Ġcn . mi jack . image drive . core Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . support . media . Ex if Interface Ċ import Ġcn . mi jack . image drive . entity . Folder Ċ import Ġcn . mi jack . image drive . entity . Image Ċ import Ġcn . mi jack . image drive . entity . Media Ċ import Ġcn . mi jack . image drive . util . Utils Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . FileNotFoundException Ċ import Ġjava . io . IOException Ċ Ċ /** Ċ Ġ* Ġ@ author Ġadmin Ċ Ġ* Ġ@ date Ġ 2 0 1 7 / 8 / 3 0 Ċ Ġ*/ Ċ class ĠMedia Manager Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠgetImage Folder With Images ( context : ĠContext ): ĠList < Folder > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Images From Folder ( context , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Images From Folder ( context : ĠContext , Ġlimit : ĠInt ): ĠList < Folder > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Resolver Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠArrayList < Folder >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// table Ġimages ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// table Ġfiles ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Uri Ġ= ĠMedia Store . Files . getContent Uri (" external ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfolder Cursor Ġ= Ġcontent Resolver . query ( content Uri ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, ĠArray < String >( 3 ) Ġ{ ĠMedia Store . Images . Image Columns . DATA ; Ġ" count (* )"; ĠMedia Store . Files . File Columns . PARENT Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Files . File Columns . MEDIA _ TYPE Ġ+ Ġ"=" Ġ+ ĠMedia Store . Files . File Columns . MEDIA _ TYPE _ IMAGE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ") Ġgroup Ġby Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Files . File Columns . PARENT Ġ+ Ġ" Ġ-- " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ, Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( folder Cursor Ġ!= Ġnull Ġ&& Ġfolder Cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" ------------------------------------------------ ----- ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfile Ġ= ĠFile ( folder Cursor . getString ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġfolder Cursor . getInt ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠparentId Ġ= Ġfolder Cursor . getInt ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimages Ġ= Ġget Images From Folder ( context , Ġfile . getParent (), Ġlimit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Media Folder Ġ= ĠFolder ( file . getParent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Media Folder . data Ġ= Ġimages // ( images ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Media Folder . count Ġ= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( image Media Folder ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( folder Cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . close ( folder Cursor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Images From Folder ( context : ĠContext , Ġfolder : ĠString , Ġlimit : ĠInt ): ĠList < Image > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimages Ġ= ĠArrayList < Image >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Resolver Ġ= Ġcontext . content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Uri Ġ= ĠMedia Store . Files . getContent Uri (" external ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġselect Ġ= ĠMedia Store . Images . Media . DATA Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġlike Ġ'" Ġ+ Ġfolder Ġ+ Ġ"% ' Ġand Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Files . File Columns . MEDIA _ TYPE Ġ+ Ġ"=" Ġ+ ĠMedia Store . Files . File Columns . MEDIA _ TYPE _ IMAGE Ġ+ Ġ") Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( limit Ġ> Ġ 0 ) Ġ(" limit Ġ" Ġ+ Ġlimit ) Ġelse Ġ"") Ġ+ Ġ" Ġ-- " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġcontent Resolver . query ( content Uri , ĠArray ( 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media ._ ID ; ĠMedia Store . Images . Media . DATA ; ĠMedia Store . Images . Media . SIZE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DISPLAY _ NAME ; ĠMedia Store . Images . Media . DATE _ TA KEN ; ĠMedia Store . Images . Media . MIME _ TYPE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . WIDTH ; ĠMedia Store . Images . Media . HEIGHT ; ĠMedia Store . Images . Media . LAT IT UDE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . LONG IT UDE ; ĠMedia Store . Images . Media . OR IENTATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġselect , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġnull Ġ&& Ġc . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Media Store . Images . Media . DATA ))); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Ġ= ĠImage . getImage From Cursor ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . add ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( c . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . Companion . close ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimages ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġflat Folder ( folders : ĠList < Folder >): ĠList < Media > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= ĠArrayList < Media >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f : ĠFolder Ġin Ġfolders ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . add ( f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . addAll ( f . data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Images In Folder ( context : ĠContext , Ġfolder Path : ĠString ): ĠList < Image > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Images From Folder ( context , Ġfolder Path , Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget Images ( context : ĠContext ): ĠList < Image > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimages Ġ= ĠArrayList < Image >(); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontent Uri Ġ= ĠMedia Store . Files . getContent Uri (" external "); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġselect Ġ= ĠMedia Store . Files . File Columns . MEDIA _ TYPE Ġ+ Ġ"=" Ġ+ ĠMedia Store . Files . File Columns . MEDIA _ TYPE _ IMAGE ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġc Ġ= Ġcontext . content Resolver . query ( content Uri , ĠArray < String >( 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media ._ ID ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DATA ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . SIZE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DISPLAY _ NAME ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DATE _ TA KEN ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . MIME _ TYPE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . WIDTH ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . HEIGHT ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . LAT IT UDE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . LONG IT UDE ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . OR IENTATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġselect , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( c Ġ!= Ġnull Ġ&& Ġc . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . getString ( c . getColumnIndex ( Media Store . Images . Media . DATA ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġimage Ġ= ĠImage . getImage From Cursor ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . add ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( c . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUtils . close ( c ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimages ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġfun Ġget Ex if Interface ( image Path : ĠString ): ĠEx if Interface ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfis Ġ= ĠFileInputStream ( image Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġex if Interface Ġ= ĠEx if Interface ( fis ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġex if Interface . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġex if Interface ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġfun Ġdelete File ( path : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile . delete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ // Ċ } ĊĊ