package Ġcom . example . ambient _ app Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ Ċ class ĠHome Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġ// ĠAssets ĊĠĠĠ Ġprivate Ġval Ġplay Ġ= ĠR . drawable . ic _ baseline _ play _ circle _ filled _ 2 4 ĊĠĠĠ Ġprivate Ġval Ġpause Ġ= ĠR . drawable . ic _ baseline _ pause _ circle _ filled _ 2 4 ĊĊĠĠĠ Ġ// ĠView ĠModel ĊĠĠĠ Ġprivate Ġval Ġmodel : ĠFragment ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late ĠView ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ home , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠButton ĠIcons ĊĠĠĠĠĠĠĠ Ġvar Ġimage Button : ĠImage Button Ġ= Ġview . findViewById ( R . id . button Play Rain ) ĊĠĠĠĠĠĠĠ Ġif ( model . rain Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠ Ġimage Button Ġ= Ġview . findViewById ( R . id . button Play Cr ick ets ) ĊĠĠĠĠĠĠĠ Ġif ( model . cr ick ets Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Button Ġ= Ġview . findViewById ( R . id . button Play Be ach ) ĊĠĠĠĠĠĠĠ Ġif ( model . be ach Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Button Ġ= Ġview . findViewById ( R . id . button Play City ) ĊĠĠĠĠĠĠĠ Ġif ( model . city Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Button Ġ= Ġview . findViewById ( R . id . button Play Restaurant ) ĊĠĠĠĠĠĠĠ Ġif ( model . restaurant Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġimage Button Ġ= Ġview . findViewById ( R . id . button Play Noise ) ĊĠĠĠĠĠĠĠ Ġif ( model . noise Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet ĠVolume ĠCont rollers ĊĠĠĠĠĠĠĠ Ġvar Ġseek Bar : ĠSeek Bar Ġ= Ġview . findViewById ( R . id . seek Bar Rain ) ĊĠĠĠĠĠĠĠ Ġval Ġthis Activity Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . rain Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Rain )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . rain Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Rain ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Rain ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġview . findViewById ( R . id . seek Bar Cr ick ets ) ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . cr ick ets Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Cr ick ets )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . cr ick ets Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Cr ick ets ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Cr ick ets ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġview . findViewById ( R . id . seek Bar Be ach ) ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . be ach Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Be ach )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . be ach Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Be ach ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Be ach ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġview . findViewById ( R . id . seek Bar City ) ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . city Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar City )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . city Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar City ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar City ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġview . findViewById ( R . id . seek Bar Restaurant ) ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . restaurant Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Restaurant )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . restaurant Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Restaurant ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Restaurant ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġseek Bar Ġ= Ġview . findViewById ( R . id . seek Bar Noise ) ĊĠĠĠĠĠĠĠ Ġseek Bar . set Progress ( model . noise Volume , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġseek Bar . setOn Seek Bar ChangeListener ( object Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Noise )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . noise Volume Ġ= Ġprogress } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Noise ))} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Activity . control Volume ( view . findViewById ( R . id . seek Bar Noise ))} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠControls Ġplayback Ġof Ġmedia Ġplayers Ġwhen Ġplay / pause Ġbutton Ġis Ġselected . ĊĠĠĠ Ġfun Ġcontrol Playback ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġimage Button Ġ= Ġview Ġas ĠImage Button ĊĠĠĠĠĠĠĠ Ġwhen ( image Button . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play Rain Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . rain Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play Cr ick ets Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . cr ick ets Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play Be ach Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . be ach Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play City Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . city Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play Restaurant Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . restaurant Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . button Play Noise Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . noise Playing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( pause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Button . setImage Resource ( play ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }