package Ġcom . mat th ias l api er re . framework . sounds . android Ċ Ċ import Ġandroid . content . res . Asset FileDescriptor Ċ import Ġandroid . media . MediaPlayer Ċ import Ġandroid . media . MediaPlayer .* Ċ import Ġcom . mat th ias l api er re . framework . sounds . Music Ċ import Ġjava . io . IOException Ċ Ċ class ĠAndroid Music ( ĊĠĠĠ Ġasset Descriptor : ĠAsset FileDescriptor Ċ ) Ġ: ĠMusic , ĠOn Completion Listener , ĠOn Prepared Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Prepared Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġmedia Player : ĠMedia Player Ġ= ĠMedia Player (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset DataSource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Descriptor . file Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Descriptor . start Offset , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġasset Descriptor . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Prepared Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Loop ing Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Completion Listener ( this @ Android Music ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On Prepared Listener ( this @ Android Music ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠRuntimeException (" Couldn 't Ġload Ġmusic ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġis Loop ing : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmedia Player . is Loop ing ĊĠĠĠĠĠĠĠ Ġset ( is Loop ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . is Loop ing Ġ= Ġis Loop ing ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Playing : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmedia Player . is Playing ĊĊĠĠĠ Ġoverride Ġval Ġis Stopped : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ! media Player . is Playing ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmedia Player . release () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . pause () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġplay () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Player . is Playing ) Ġreturn ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Prepared ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . prepare () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . start () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Volume ( volume : ĠFloat ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmedia Player . set Volume ( volume , Ġvolume ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Player . is Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Player . stop () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Prepared Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Completion ( player : ĠMedia Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Prepared Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Prepared ( player : ĠMedia Player ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Prepared Ġ= Ġtrue ĊĠĠĠ Ġ} Ċ Ċ }