繁体   English   中英

如何在计时器上播放媒体文件?

[英]how to play the media file on timer?

该函数playMedia在timer_tick函数内一次又一次地调用60秒钟...我如何一次调用它,以便我的歌曲在该间隔内连续播放而不循环。...这首歌是我的媒体元素。

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        timer.Start();
        timer.Tick +=timer_tick;
    }

int flagmusic=0;

public void timer_tick(object sender, object args)
{
  //if some condition which is true for 60 secs
   playMedia();
  //else
  song.stop();
}

 private void playMedia()
    {

         try
         {
                 Uri pathUri = new Uri("ms-appx:///Assets/breath.mp3");
                 song.Source = pathUri;
                 song.Play();
        }
        catch { }

    }

我不确定我是否正确解释了您的问题。 据我了解,调用OnNavigatedTo时,您要开始播放歌曲,让其播放60秒,然后停止播放。

如果是这样,我将从在类范围内创建计时器开始,并在程序启动时对其进行初始化:

Timer timer = new Timer();
timer.Tick += timer_tick;
timer.Interval = 60000;
timer.Stop();  // make sure it's not running

OnNavigatedTo ,启动声音并启动计时器。

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    playMedia();
    timer.Start();
}

因此,歌曲正在播放,计时器正在运行。 计时器计时时,停止播放歌曲并停止计时器。

public void timer_tick(object sender, object args)
{
    timer.Stop();
    song.stop();
}

它在您的原始代码中多次播放歌曲的原因是,每次调用OnNavigatedTo时,都会使用timer.Tick += timer_tick; 已添加到计时器事件的调用列表中。 因此,第一次调用该函数时,歌曲只播放了一次。 下次,它播放了两次。 然后是三,四等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM