1

我正在尝试编写我的第一个 Windows 手机应用程序,但我遇到了一些问题。我以前从未接触过 C#。

该应用程序是一个简单的倒计时计时器,最后会播放声音。

这是一个 Windows Phone 8 应用程序。我使用 Visual Studio 2015 创建了它:新项目 > 模板 > Visual C# > Windows > Windows 8 > Windows Phone > Blank App

我在 Package.appxmanifest 的声明中添加了一个带有音频的后台任务

我在 MainPage.xaml 中使用 MediaElement

<MediaElement Name="media" 
              AudioCategory="BackgroundCapableMedia" 
              Source="Audio/bell.mp3" AutoPlay="False" />

我在项目中添加了 Audio/bell.mp3。

我正在使用这样的 DispatchTimer

DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 0, 1);
timer.Tick += new EventHandler<object>(timer_Tick);


void timer_Tick(object sender, object e)
        {
            if (tik > 0)
                tik--;

            progress.Value = progress.Maximum - tik;

            if(tik <= 0)
            {
                timer.Stop();
                media.Play();
            }
        }

它在屏幕解锁的情况下工作得很好,声音在时间结束时播放。

但是,如果我在时间到之前锁定屏幕,计时器会继续(这很完美),但是当时间到时,我在 media.Play(); 上得到System.UnauthorizedAccessException ;

Additional information: Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))

我不明白为什么我只在锁定屏幕上被拒绝访问。我需要做什么来改变它?我真的很想在锁定屏幕上播放声音来通知用户时间到了。

我尝试使应用程序在锁定屏幕中运行添加

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

到 App.xaml.cs 但我得到了

The name PhoneApplicationService does not exist in this context

而且我无法添加 Microsoft.Phone.dll 否则我无法将应用程序部署到手机上......

4

0 回答 0