package Ġcom . example . music player . logic . utils Ċ Ċ import Ġandroid . media . Media Metadata Retriever Ċ import Ġcom . example . music player . logic . model . Local Song Ċ import Ġjava . io . File Ċ Ċ object ĠLocal Music Utils Ġ{ ĊĊĠĠĠ Ġfun Ġget Local Music List () Ġ: ĠList < Local Song > Ġ{ Ċ Ċ // ĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= ĠMy Application . context . content Resolver . query ( Media Store . Audio . Media . EXTERNAL _ CONTENT _ URI , Ġnull , Ġnull , Ġnull , ĠMedia Store . Audio . Audio Columns . IS _ M US IC ) Ċ // Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( cursor . moveTo First ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Audio . Media ._ ID )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Audio . Media . DISPLAY _ NAME )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġs inger Ġ= Ġcursor . getString ( cursor . getColumnIndex ( Media Store . Audio . Media . AR TI ST )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġcursor . getInt ( cursor . getColumnIndex ( Media Store . Audio . Media . DURATION )) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . with App ended Path ( Uri . parse (" content :// media / external / audio / media "), Ġid ) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name . contains ('- ')) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sing er Ġ== Ġ"< unknown >") Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs inger Ġ= Ġname . split (" Ġ- Ġ" )[ 0 ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname . split (" Ġ- Ġ" )[ 1 ]. split (". ")[ 0 ] Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List . add ( Local Song ( name , Ġs inger , Ġuri . toString (), Ġduration )) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( cursor . moveTo Next ()) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Local Music ", Ġ" cursor Ġis Ġnull ") Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠĠĠĠĠ Ġcursor ?. close () ĊĊĠĠĠĠĠĠĠ Ġval Ġmusic List Ġ= ĠArrayList < Local Song >() ĊĠĠĠĠĠĠĠ Ġval Ġmedia Metadata Retriever Ġ= ĠMedia Metadata Retriever () ĊĠĠĠĠĠĠĠ Ġval Ġdir File Ġ= ĠFile ("/ storage / em ulated / 0 / Download ") ĊĠĠĠĠĠĠĠ Ġval Ġfile List Ġ= Ġdir File . list Files () ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġfile List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Metadata Retriever . set DataSource ( file . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġmedia Metadata Retriever . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ TITLE ) ?: file . name . split ('. ')[ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġartist Ġ= Ġmedia Metadata Retriever . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ AR TI ST )? :" æľª çŁ¥ " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġduration Ġ= Ġmedia Metadata Retriever . extract Metadata ( Media Metadata Retriever . METADATA _ KEY _ DURATION ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmusic List . add ( Local Song ( name , Ġartist , Ġfile . to URI (). toString (), Ġduration ?: 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmusic List ĊĠĠĠ Ġ} ĊĊĊ Ċ }