package Ġcom . github . ain ul . mus ica . util Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Media Store Ċ import Ġcom . github . ain ul . mus ica . model . Audio Model Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ class ĠAudio Util ( private Ġval Ġcontext : ĠContext ) Ġ{ ĊĊĠĠĠ Ġ@ Suppress (" DE PREC ATION ") ĊĠĠĠ Ġ@ Suppress Lint (" In lined Api ") ĊĠĠĠ Ġsuspend Ġfun Ġget Audio From Device (): ĠList < Audio Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtemp Audio List Ġ= ĠArrayList < Audio Model >() ĊĊĠĠĠĠĠĠĠ Ġval Ġuri : ĠUri Ġ= ĠMedia Store . Audio . Media . EXTERNAL _ CONTENT _ URI ĊĠĠĠĠĠĠĠ Ġval Ġprojection : ĠArray < String > Ġ= ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Audio Columns . DATA , ĠMedia Store . Audio . Audio Columns . TITLE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMedia Store . Audio . Audio Columns . AL BU M , ĠMedia Store . Audio . Artist Columns . AR TI ST ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġcursor : ĠCursor ? Ġ= Ġcontext . content Resolver . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġif Ġcursor Ġisn 't Ġnull , Ġrun Ġon Ġthe ĠIO Ġthread ĊĠĠĠĠĠĠĠ Ġcursor ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( it . moveTo Next ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio Model Ġ= ĠAudio Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath Ġ= Ġit . getString ( 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġit . getString ( 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalbum Ġ= Ġit . getString ( 2 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġartist Ġ= Ġit . getString ( 3 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp Audio List . add ( audio Model ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġclose Ġuse Ġof Ġcontent Resolver ĊĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtemp Audio List ĊĠĠĠ Ġ} Ċ }