/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 Ġm oo sph on . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ& quot ; AS ĠIS & quot ; ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . m oo sph on . g 2 v . selector Ċ Ċ import Ġandroid . provider . Media Store Ċ import Ġandroid . content . Content Resolver . SCHEME _ CONTENT Ċ import Ġandroid . content . Content Resolver Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġjava . util . ArrayList Ċ Ċ /** Ċ Ġ* Ġselector Ġutil Ġto Ġget Ġmedia Ġdata . Ċ Ġ*/ Ċ class ĠMedia Utils Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġor Ġdeal Ġwith Ġthe Ġmedia Ġdata Ġof Ġcurrent Ġphone . ĊĠĠĠĠ Ġ* Ġmore Ġdetails Ġvisit Ġframework Ġdocument . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Thumbnail Map : ĠMap < String , ĠString >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre > ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ author Ġm oo sph on Ġ Ġ( about Ġme : Ġ< a > https :// github . com / M oo sp han < a /> ) ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ date ĠĠĠ 2 0 1 8 / 0 9 / 1 6 ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ desc ĠĠ Ġget Ġthe Ġorigin Ġpath Ġfor Ġlocal Ġpictures . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre /> ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Picture Path ( resolver : ĠContent Resolver , Ġuri : ĠUri ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( uri Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( SCHEME _ CONTENT Ġ== Ġuri . scheme ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġresolver . query ( uri , ĠarrayOf ( Media Store . Images . Image Columns . DATA ), Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor Ġ== Ġnull Ġ|| Ġ! cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Image Columns . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġuri . getPath () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre > ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ author Ġm oo sph on Ġ Ġ( about Ġme : Ġ< a > https :// github . com / M oo sp han < a /> ) ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ date ĠĠĠ 2 0 1 8 / 0 9 / 1 6 ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ desc ĠĠ Ġget Ġall Ġpictures Ġof Ġthe Ġphone . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre /> ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Local P ictures ( mContext : ĠContext ?): ĠList < Image Media Entity >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= ĠArrayList < Image Media Entity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= ĠmContext ?. content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Image Thumb nails ( resolver !! , ĠarrayOf ( Media Store . Images . Thumb nails . IMAGE _ ID , ĠMedia Store . Images . Thumb nails . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġresolver . query ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Images . Image Columns . DATA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . MIME _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . DATE _ MODI FIED ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor Ġ== Ġnull Ġ|| Ġ! cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpic Path Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media ._ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . SIZE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmimeType Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . MIME _ TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġcursor . getLong ( cursor . getColumnIndex ( Media Store . Images . Media . DATE _ MODI FIED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Logger . e (" åĽ¾çīĩ æĮī éĻį åºı æİĴ åĪĹ ä¸º -> Ġ$ date ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImage Media Entity . Builder ( id , Ġpic Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MimeType ( mime Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSize ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDate Taken ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Thumbnail Path ( m Thumbnail Map ?. get ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// images . add ( cursor . getString ( cursor . getColumnIndex ( Media Store . Images . Image Columns . DATA ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . add ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Thumbnail Map Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġget Ġgif Ġimages Ġin Ġlocal Ġstorage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Local G ifs ( mContext : ĠContext ?): ĠList < Image Media Entity >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimages Ġ= ĠArrayList < Image Media Entity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= ĠmContext ?. content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Image Thumb nails ( resolver !! , ĠarrayOf ( Media Store . Images . Thumb nails . IMAGE _ ID , ĠMedia Store . Images . Thumb nails . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġresolver . query ( Media Store . Images . Media . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Images . Image Columns . DATA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . MIME _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Image Columns . DATE _ MODI FIED ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Media . MIME _ TYPE Ġ+ Ġ"= ?", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf (" image / gif "), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor Ġ== Ġnull Ġ|| Ġ! cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpic Path Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media ._ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . SIZE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠmimeType Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Images . Media . MIME _ TYPE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġcursor . getLong ( cursor . getColumnIndex ( Media Store . Images . Media . DATE _ MODI FIED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Logger . e (" åĽ¾çīĩ æĮī éĻį åºı æİĴ åĪĹ ä¸º -> Ġ$ date ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImage Media Entity . Builder ( id , Ġpic Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set MimeType ( mime Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSize ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDate Taken ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Thumbnail Path ( m Thumbnail Map ?. get ( id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// images . add ( cursor . getString ( cursor . getColumnIndex ( Media Store . Images . Image Columns . DATA ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimages . add ( image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Thumbnail Map Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} while Ġ( cursor . moveTo Next ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġimages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġsearch Ġfor Ġthumb nails Ġfor Ġlocal Ġimages ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ author Ġm oo sph on ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġquery Image Thumb nails ( cr : ĠContent Resolver , Ġprojection : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcur : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur Ġ= ĠMedia Store . Images . Thumb nails . query Mini Thumb nails ( cr , ĠMedia Store . Images . Thumb nails . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Images . Thumb nails . MIN I _ KIND , Ġprojection ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cur Ġ!= Ġnull Ġ&& Ġcur . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Id Ġ= Ġcur . getString ( cur . getColumnIndex ( Media Store . Images . Thumb nails . IMAGE _ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Path Ġ= Ġcur . getString ( cur . getColumnIndex ( Media Store . Images . Thumb nails . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Thumbnail Map Ġ= Ġmap Of ( image Id Ġto Ġimage Path ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cur . moveTo Next () Ġ&& Ġ! cur . is Last ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcur ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre > ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ author Ġm oo sph on Ġ Ġ( about Ġme : Ġ< a > https :// github . com / M oo sp han < a /> ) ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ date ĠĠĠ 2 0 1 8 / 0 9 / 1 6 ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠ Ġ@ desc ĠĠ Ġget Ġall Ġvideos Ġof Ġthe Ġphone . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ< pre /> ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget Local Videos ( mContext : ĠContext ?) Ġ: ĠList < Video Media Entity >? { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideos Ġ= ĠArrayList < Video Media Entity >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolver Ġ= ĠmContext ?. content Resolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor Ġ= Ġresolver ?. query ( Media Store . Video . Media . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( Media Store . Images . Image Columns . DATA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media ._ ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . DISPLAY _ NAME , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . RESOL UTION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . DURATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . DATE _ MODI FIED ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Media . MIME _ TYPE Ġ+ Ġ"= ?", ĠarrayOf (" video / mp 4 "), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cursor Ġ== Ġnull Ġ|| Ġ! cursor . moveTo First ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġcursor . getString ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġid ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getLong ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media ._ ID )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġdisplay Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġcursor . getString ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . DISPLAY _ NAME )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġresolution ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresolution Ġ= Ġcursor . getString ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . RESOL UTION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġsize ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġcursor . getLong ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . SIZE )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvideo Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġcursor . getLong ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . DURATION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdate Ġ= Ġcursor . getLong ( cursor . getColumnIndex OrThrow ( Media Store . Video . Media . DATE _ MODI FIED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Logger . e (" è§Ĩé¢ĳ ä¿®æĶ¹ æĹ¶éĹ´ ä¸º --> Ġ$ date ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvideo Ġ= ĠVideo Media Entity . Builder ( id . toString (), Ġpath ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Duration ( duration . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setSize ( size . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDate Taken ( date ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvideos . add ( video ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvideos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġget Ġvideo Ġthumbnail Ġimage Ġby Ġusing Ġ[ Content Resolver ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid Ġvideo Ġid ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ author Ġm oo sph on ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Video Thumbnail ById ( context : ĠContext ?, Ġid : ĠLong ): ĠString ? { ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æıĲ åīį çĶŁæĪĲ ç¼© çķ¥ åĽ¾ ï¼Į åĨį èİ·åıĸ ï¼ļ http :// stackoverflow . com / questions / 2 7 9 0 3 2 6 4 / how - to - get - the - video - thumbnail - path - and - not - the - bitmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Media Store . Video . Thumb nails . get Thumbnail ( context !!. content Resolver , Ġid , ĠMedia Store . Video . Thumb nails . MICRO _ KIND , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( Media Store . Video . Thumb nails . DATA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Thumb nails . VIDEO _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġthumb Cursor Ġ= Ġcontext ?. content Resolver !!. query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Video . Thumb nails . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĠMedia Store . Video . Thumb nails . VIDEO _ ID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ"=" Ġ+ Ġid , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġthumbnail Uri Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( thumb Cursor !!. moveTo First ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthumbnail Uri Ġ= Ġthumb Cursor . getString ( thumb Cursor . getColumnIndex ( Media Store . Video . Thumb nails . DATA )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthumb Cursor . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthumbnail Uri ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }