In this post I am going to detail some of the work I have been doing on Background Audio. But before I get onto it, let me say that the last few months have been crazy / busy, not highly motivational for personal dev etc. I have done a few updates over the last few months but no new development until this month.
About 2 weeks back I started work on Porting Slydr code to WPF control and that was a breeze. Infact last night I saw something about a simple app being tested.. makes me think on whether I should beat them to it
or not.
Now back to Background Audio. With Windows Phone, one had to create a Background Audio Player which the app and system would then communicate with. The app could kick the Background Audio Player off and then exit and the audio would keep on playing. I have talked about this before and will saying it again. WPDev 7x provided many ways of playing audio. With Windows 8 and #WinRT your options are restricted. I have gotten used to giving MediaElement more usage and credit for what it does.
<MediaElement x:Name="mePlayer" />
All you need to do is set the Source property and then call Play(). The audio starts playing. If the app gets suspended, the music stops playing. To enable background audio there are a number of things you need to do.
* Firstly set MediaElement‘s AudioCategory to BackgroundCapableMedia. This still doesn’t activate the Background Audio as its only the first step
* Now open package.appmanifest file. Open the Declarations tab and add Background Tasks. While you are there set the Supported task types property to Audio and Control Channel. You will also need to set the Start page in App settings. Of course now that you have done this, you will have to create a Badge logo before you can save the changes to appmanifest.

* Now back to codebehind of your page and add event handlers for MediaControl‘s PlayPressed, PausePressed, StopPressed and PlayPauseTogglePressed events
In my app I also support Previous Track / Next Track so I additionally added support for PreviousTrackPressed and NextTrackPressed events.
MediaControl.PlayPressed += MediaControl_PlayPressed; MediaControl.PausePressed += MediaControl_StopPressed; MediaControl.StopPressed += MediaControl_StopPressed; MediaControl.PlayPauseTogglePressed += MediaControl_PlayPauseTogglePressed; MediaControl.NextTrackPressed += MediaControl_NextTrackPressed; MediaControl.PreviousTrackPressed += MediaControl_PreviousTrackPressed;
and
void MediaControl_PreviousTrackPressed(object sender, object e)
{
this.Previous();
}
void MediaControl_NextTrackPressed(object sender, object e)
{
this.Next();
}
void MediaControl_PlayPauseTogglePressed(object sender, object e)
{
if (MediaControl.IsPlaying)
this.Stop();
else
this.Play();
}
void MediaControl_StopPressed(object sender, object e)
{
this.Stop();
}
void MediaControl_PlayPressed(object sender, object e)
{
this.Play();
}
Now when you run the app, initiate the audio playback and navigate away from the app.. Bingo. the audio is still playing.




