我可以为Window Universal App创建一个警报应用程序吗?

Tan*_*005 5 c# c++ win-universal-app windows-10 uwp

我想创建一个警报应用程序.

我找到了在后台操作计时器的方法.但是没有找到控制显示器功率的API(我希望在电源关闭时打开显示器的电源).

Windows 10(Windows Universal App)是否有足够的API来创建该应用程序?

Jus*_* XL 16

Windows-universal-samples最近更新了一些新的RTM样本,包括这一样本 - 通知.

由于Alarm也是一种通知,它现在构建在通用Windows平台的新Toast通知框架中.

从上面的Notification链接下载源代码后,使用Visual Studio 2015 RTM运行它,然后在加载应用程序后,转到

toasts> scenario> scenario:alarm

你会看到一个功能齐全的报警应用程序(以及提醒和许多其他样本).


我们来谈谈代码.

基本上,与Windows Phone Silverlight不同,您现在可以通过像这样指定xml有效负载来自定义警报弹出窗口(确保scenario设置为alarm)

<toast launch='args' scenario='alarm'>
    <visual>
        <binding template='ToastGeneric'>
            <text>Alarm</text>
            <text>Get up now!!</text>
        </binding>
    </visual>
    <actions>

        <action arguments = 'snooze'
                content = 'snooze' />

        <action arguments = 'dismiss'
                content = 'dismiss' />

    </actions>
</toast>
Run Code Online (Sandbox Code Playgroud)

然后创建一个加载上述xml字符串的XmlDocument

var xmlString = @"//copy above xml here//";
var doc = new Windows.Data.Xml.Dom.XmlDocument();
doc.LoadXml(xmlString);
Run Code Online (Sandbox Code Playgroud)

然后创建一个ToastNotification并触发它ToastNotificationManager-

var toast = new ToastNotification(doc);
ToastNotificationManager.CreateToastNotifier().Show(toast);
Run Code Online (Sandbox Code Playgroud)

而已!您将看到如下所示的警报弹出窗口. 在此输入图像描述


更新

微软最近回复了我的一个API请求,我在这里发布内容,所以每个人都知道添加了哪些API,哪些仍然未完成.

做了什么

  1. 现在有一种方法可以在通用Windows应用程序中创建警报/提醒;
  2. 闹钟/提醒器支持自定义贪睡时间(您可以选择让系统处理暂停,或者唤醒您的后台任务以手动执行);
  3. 警报/提醒器仅支持振动(就像吐司一样),可以被用户覆盖以关闭振动;
  4. 警报/提醒支持良好的可定制性(自定义可选内嵌图像,自定义附加操作等).

一些参考

我们(MSFT)知道什么是缺失的,并希望在不久的将来支持

  1. 警报/提醒中的本机平台支持,以便在时区更改时自动处理时间转换(解决方法 - 可以通过使用TimeZoneChange系统触发器手动完成此操作) ;
  2. 本机平台支持报警/提醒重复事件(解决方法 - 目前只能由应用程序手动定期唤醒并提前重新安排一堆警报/提醒) ;

  3. 本机平台支持从音乐库中选择歌曲作为警报/提醒的铃声(解决方法 - 这可以通过从音乐库中读取和复制文件,然后在应用程序包中使用文件的已保存/修改版本或应用数据作为铃声(吐司通知通过指向appx中的文件或xml有效负载中的appdata支持自定义声音)).


Bel*_*lls 2

AlarmApplicationManager可用于创建警报应用程序。它提供了安排 Toast 通知的功能。

var scheduledToast = new ScheduledToastNotification(content, DateTime.Now.AddMinutes(5));
toastNotifier.AddToSchedule(scheduledToast);
Run Code Online (Sandbox Code Playgroud)

还可以在创建 Toast 模板时设置音频源,但只能来自 Windows 提供的一组预定义声音。

有关更多详细信息,请参阅AlarmApplicationManager构建警报应用程序