BackgroundMediaPlayer仅在调试时播放声音

时间:2016-05-04 11:05:34

标签: c# win-universal-app

当我的移动应用程序暂停时,我想每两秒播放一次声音。

OnSuspending中,我致电BackgroundMediaPlayer.Current以启动后台任务。

AudioTask:

public sealed class AudioTask : IBackgroundTask
{
    private ThreadPoolTimer timer;
    private BackgroundTaskDeferral deferral;
    private bool canceled;

    public void Run(IBackgroundTaskInstance taskInstance)
    {
        Debug.WriteLine("AudioTask starting");
        deferral = taskInstance.GetDeferral();

        StorageFolder folder = await Package.Current.InstalledLocation.GetFolderAsync("Assets");
        StorageFile file = await folder.GetFileAsync("sound.wav");
        var stream = await file.OpenAsync(FileAccessMode.Read);
        BackgroundMediaPlayer.Current.AutoPlay = false;
        BackgroundMediaPlayer.Current.SetStreamSource(stream);

        timer = ThreadPoolTimer.CreatePeriodicTimer(new TimerElapsedHandler(PeriodicTimerCallback), TimeSpan.FromSeconds(2));
        taskInstance.Canceled += new BackgroundTaskCanceledEventHandler(OnCanceled);
    }

    private void OnCanceled(IBackgroundTaskInstance sender, BackgroundTaskCancellationReason reason)
    {
        Debug.WriteLine("AudioTask canceled");
        canceled = true;
    }

    private void PeriodicTimerCallback(ThreadPoolTimer timer)
    {
        Debug.WriteLine("AudioTask timer callback");
        if (!canceled)
        {
            BackgroundMediaPlayer.Current.Play();
        }
        else
        {
            timer.Cancel();
            deferral.Complete();
        }
    }
}

这在调试时工作正常,但是当我在没有调试器的情况下使用应用程序时,没有播放声音。

0 个答案:

没有答案