我正在尝试编写我的第一个 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 否则我无法将应用程序部署到手机上......