package Ġfr . camp us . academy . kotlin . tp _ media _ player . dao Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . provider . Media Store Ċ import Ġfr . camp us . academy . kotlin . tp _ media _ player . entity . Music Ċ Ċ class ĠMusic DAO Ċ { ĊĠĠĠ Ġfun ĠgetList M us ics ( context : ĠContext ): ĠMutable List < Music > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprojection Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Media . TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Media . SIZE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Media . DURATION ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġcontext . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Media . EXTERNAL _ CONTENT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlist M us ics : ĠMutable List < Music > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( cursor . moveTo Next ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist M us ics . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMusic ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Audio . Media . TITLE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Media Store . Audio . Media . SIZE )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcursor . getInt ( cursor . getColumnIndex ( Media Store . Audio . Media . DURATION )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} catch Ġ( e : ĠException ) Ġ{ Ġe . printStackTrace () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinally Ġ{ Ġcursor . close () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġlist M us ics ĊĠĠĠ Ġ} Ċ }