是否可以在BackgroundAudioPlayer中设置开始和结束位置

时间:2015-02-21 14:02:03

标签: c# windows-phone-8

我正在四处寻找BackgroundAudioPlayer的开始和结束位置。虽然我可以设置开始位置,但我也希望设置结束位置。

假设我的音频文件是22分钟,用户只希望从10分钟到18分钟听到。是否有可能在BackgroundAudioPlayer设置开始和结束位置?

谢谢!

1 个答案:

答案 0 :(得分:0)

我对桌面应用程序遇到了这个挑战,我通过启动计时器并将勾号时间设置为位置stop-start 来解决它。当计时器启动时,您将停止音频播放器和计时器。

您也可以使用线程执行此操作,但计时器似乎是一个更清洁的解决方案。下面找一个例子 - 虽然我使用属于GUI的MediaElement(这就是我使用pinvoke的原因)。

void sndPlayer_MediaOpened(object sender, EventArgs e)
{
    // Set the current position in the recording
    sndPlayer.Position = currentRecording.tPosition;

    // Start playing
    sndPlayer.Play();

    // Schedule a function to stop the player
    timerControlPlayer.Interval = (double)currentDuration * 1000.0;
    timerControlPlayer.Start();
}

void timerControlPlayer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
    // We don't need the timer to pop in again
    timerControlPlayer.Stop();

    // Access the gui thread (the sound player belongs to that one)
    guiDispatcher.Invoke(() =>
        {
            sndPlayer.Stop();
            SoundPlayed(this, new SoundPlayedEventArgs(currentRecording.nSpeakerCount));
            sndPlayer.Close();
        });
}

// Used as an elegant solution to start / stop the sound player
timerControlPlayer = new System.Timers.Timer();
timerControlPlayer.Elapsed += timerControlPlayer_Elapsed;