package Ġcom . jes en . code . ffmpeg play kot . util Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . provider . Media Store Ċ import Ġcom . jes en . code . ffmpeg play kot . view . activity . Picker Activity Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġcom . jes en . code . ffmpeg play kot . datab e an . Media Data Ċ import Ġcom . jes en . code . ffmpeg play kot . datab e an . MediaType Ċ Ċ object ĠPic Scan Helper Ġ{ ĊĊĠĠĠ Ġfun Ġstart ( context : ĠContext , Ġhandler : ĠHandler ){ ĊĠĠĠĠĠĠĠ ĠThread { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Scan ( context , Ġhandler ) ĊĠĠĠĠĠĠĠ Ġ}. start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Scan ( context : ĠContext , Ġhandler : ĠHandler ){ ĊĠĠĠĠĠĠĠ Ġval Ġmedia Columns : Array < String > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DATA , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . OR IENTATION , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . DATE _ AD DED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . MIME _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Media Store . Images . Media . SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . LAT IT UDE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . LONG IT UDE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsort Order : ĠString Ġ= ĠMedia Store . Images . Media . DATE _ AD DED Ġ+ Ġ" Ġdesc "; ĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġcontext . content Resolver . query ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , Ġmedia Columns , Ġnull , Ġnull , Ġsort Order ); ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse Data ( cursor , Ġhandler ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Data ( cursor : ĠCursor , Ġhandler : ĠHandler ){ ĊĠĠĠĠĠĠĠ Ġval Ġimage List : ĠMutable List < Media Data > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= ĠScan Result Util . getLong Result ByKey ( cursor , ĠMedia Store . Images . Media ._ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcreateTime Ġ= ĠScan Result Util . getLong Result ByKey ( cursor , ĠMedia Store . Images . Media . DATE _ AD DED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfilePath Ġ= ĠScan Result Util . getString Result ByKey ( cursor , ĠMedia Store . Images . Media . DATA ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmimeType Ġ= ĠScan Result Util . getString Result ByKey ( cursor , ĠMedia Store . Images . Media . MIME _ TYPE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// val ĠfileSize Ġ= ĠScan Result Util . getString Result ByKey ( cursor , Media Store . Images . Media . SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlatitude Ġ= ĠScan Result Util . get Float Result ByKey ( cursor , ĠMedia Store . Images . Media . LAT IT UDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlongitude Ġ= ĠScan Result Util . get Float Result ByKey ( cursor , ĠMedia Store . Images . Media . LONG IT UDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġalbum Name Ġ= ĠScan Result Util . get Album Name From Path ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage List . add ( Media Data ( id , ĠcreateTime , Ġnull , Ġalbum Name , ĠfilePath , Ġnull , ĠmimeType , Ġlatitude , Ġlongitude )) ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cursor . moveTo Next ()) ĊĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= ĠMessage () ĊĠĠĠĠĠĠĠ Ġmsg . obj Ġ= Ġimage List ĊĠĠĠĠĠĠĠ Ġmsg . what Ġ= ĠMediaType . MEDIA _ TYPE _ PI CTURE ĊĠĠĠĠĠĠĠ Ġhandler . sendMessage ( msg ) ĊĠĠĠ Ġ} Ċ }