2012年8月25日 星期六

BackgroundAudioPlayer.Volume 設值時機

之前使用 MediaElement 時常常很習慣在建構之後立即設定音量,
例如在擁有 MediaElement 的 Class 建構式中撰寫 mediaElement.Volume = 1.0;

之後使用了 BackgroundAudioPlayer 後自然也延用了習慣,
在 Application_Launching 中撰寫 BackgroundAudioPlayer.Instance.Volume = 1.0;
一開始沒有查覺異樣,在某次改變了值後才發現音量並未被降低至新的值,
測試之後發現,在實際開始使用 BackgroundAudioPlayer 播音樂之前,
對它設定音量是不會有反應的,因為那時後播放器並未被初始化,可用的播放器根本就不存在。

想要確定音量值有確實被設值到播放器中,首先要確保設值的當下播放器是存在的,
由於我個人是播放串流音樂,所以我將音量設值的指令搬到 AudioStreamingAgent 中,
以下是我的做法,因為一旦走到 OnBeginStreaming 就能夠確定播放器已經被初始化了。

protected override void OnBeginStreaming(AudioTrack track, AudioStreamer streamer)
{
    BackgroundAudioPlayer.Instance.Volume = 1.0;
}

沒有留言:

張貼留言