重新想象 Windows 8 Store Apps (59) - 锁屏
生活随笔
收集整理的这篇文章主要介绍了
重新想象 Windows 8 Store Apps (59) - 锁屏
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
原文:重新想象 Windows 8 Store Apps (59) - 锁屏
[源码下载]
作者:webabcd
介绍
重新想象 Windows 8 Store Apps 之 锁屏
- 登录锁屏,获取当前程序的锁屏权限,从锁屏中移除
- 发送徽章或文本到锁屏
- 将一个 app 的多个 tile 绑定到锁屏
- 自定义锁屏图片
示例
1、演示如何登录锁屏,获取当前程序的锁屏权限,从锁屏中移除
LockScreen/AccessLockScreen.xaml
LockScreen/AccessLockScreen.xaml.cs
/** 演示如何登录锁屏,获取当前程序的锁屏权限,从锁屏中移除* * 注:* 要想请求锁屏权限,需要后台任务支持“推送通知”或“控制通道”*/using System; using Windows.ApplicationModel.Background; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls;namespace XamlDemo.LockScreen {public sealed partial class AccessLockScreen : Page{public AccessLockScreen(){this.InitializeComponent();}private async void btnRequestAccess_Click(object sender, RoutedEventArgs e){try{// 向系统请求登录锁屏,会弹出确认对话框// 需要后台任务支持“推送通知”或“控制通道”,否则会抛出异常// 不能在模拟器中运行// 如果 BackgroundAccessStatus 不等于 Unspecified,则即使调用 RequestAccessAsync() 也不会出现对话框,需要用户去“设置”中去添加或移除锁屏应用BackgroundAccessStatus status = await BackgroundExecutionManager.RequestAccessAsync();/** BackgroundAccessStatus - 当前 app 的锁屏权限* Unspecified - 用户尚未选择* Denied - 被用户拒绝* AllowedWithAlwaysOnRealTimeConnectivity - 用于允许了,且支持实时连接,即使电量低* AllowedMayUseActiveRealTimeConnectivity - 用于允许了,且支持实时连接,但是如果电量低则无法实时连接*/lblMsg.Text = "RequestAccessAsync(): " + status.ToString();}catch (Exception ex){lblMsg.Text = ex.ToString();}}private void btnGetAccessStatus_Click(object sender, RoutedEventArgs e){try{// 获取当前应用程序的锁屏权限BackgroundAccessStatus status = BackgroundExecutionManager.GetAccessStatus();lblMsg.Text = "GetAccessStatus(): " + status.ToString();}catch (Exception ex){lblMsg.Text = ex.ToString();}}private void btnRemoveAccess_Click(object sender, RoutedEventArgs e){try{// 将当前应用程序从锁屏中移除 BackgroundExecutionManager.RemoveAccess();lblMsg.Text = "RemoveAccess()";}catch (Exception ex){lblMsg.Text = ex.ToString();}}} }
2、演示如何发送徽章或文本到锁屏
LockScreen/SendNotification.xaml
LockScreen/SendNotification.xaml.cs
/** 演示如何发送徽章或文本到锁屏* * 注:* 如果需要发送文本到锁屏,需要手动在“设置”中将 app 添加到“选择要显示详细状态的应用”中* * 另:* 关于 tile 和 badge 请参见:XamlDemo/Tile*/using NotificationsExtensions.BadgeContent; using NotificationsExtensions.TileContent; using Windows.UI.Notifications; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls;namespace XamlDemo.LockScreen {public sealed partial class SendNotification : Page{public SendNotification(){this.InitializeComponent();}private void btnSendBadge_Click(object sender, RoutedEventArgs e){// 发送 badge 到锁屏BadgeNumericNotificationContent badgeContent = new BadgeNumericNotificationContent(3);BadgeNotification badge = badgeContent.CreateNotification();BadgeUpdater badgeUpdater = BadgeUpdateManager.CreateBadgeUpdaterForApplication();badgeUpdater.Update(badge);}private void btnSendTile_Click(object sender, RoutedEventArgs e){// 发送文本到锁屏,前提是此 app 在“选择要显示详细状态的应用”中ITileWideSmallImageAndText03 tileContent = TileContentFactory.CreateTileWideSmallImageAndText03();tileContent.TextBodyWrap.Text = "hello webabcd";tileContent.Image.Src = "ms-appx:///Assets/Logo.png";tileContent.RequireSquareContent = false;TileUpdateManager.CreateTileUpdaterForApplication().Update(tileContent.CreateNotification());}} }
3、演示如何将一个 app 的多个 tile 绑定到锁屏
LockScreen/MultipleTiles.xaml
LockScreen/MultipleTiles.xaml.cs
/** 演示如何将一个 app 的多个 tile 绑定到锁屏* * 要想将 SecondaryTile 绑定到锁屏,需要注意:* 1、需要设置 SecondaryTile 的 LockScreenBadgeLogo* 2、如果需要文本支持则还需要设置 SecondaryTile 的 LockScreenDisplayBadgeAndTileText 为 true* 3、需要手动在“设置”中将 SecondaryTile 添加到锁屏,当然如果需要文本支持则需要手动将 app 添加到“选择要显示详细状态的应用”中*/using NotificationsExtensions.BadgeContent; using NotificationsExtensions.TileContent; using System; using Windows.UI.Notifications; using Windows.UI.Popups; using Windows.UI.StartScreen; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using XamlDemo.Common;namespace XamlDemo.LockScreen {public sealed partial class MultipleTiles : Page{private string _tile1Id = "123";private string _tile2Id = "456";public MultipleTiles(){this.InitializeComponent();}// 仅支持 badge 的可以登录锁屏的 SecondaryTileprivate async void btnOnlyBadge_Click(object sender, RoutedEventArgs e){SecondaryTile secondTile = new SecondaryTile(_tile1Id,"testOnlyBadge","testOnlyBadge","argument1",TileOptions.ShowNameOnLogo,new Uri("ms-appx:///Assets/Logo.png"));// 需要指定 LockScreenBadgeLogosecondTile.LockScreenBadgeLogo = new Uri("ms-appx:///Assets/BadgeLogo.png");bool isPinned = await secondTile.RequestCreateForSelectionAsync(Helper.GetElementRect((FrameworkElement)sender), Placement.Above);if (isPinned){BadgeNumericNotificationContent badgeContent = new BadgeNumericNotificationContent(2);BadgeUpdateManager.CreateBadgeUpdaterForSecondaryTile(_tile1Id).Update(badgeContent.CreateNotification());}}// 即支持徽章又支持文本的可以登录锁屏的 SecondaryTileprivate async void btnBadgeAndText_Click(object sender, RoutedEventArgs e){SecondaryTile secondTile = new SecondaryTile(_tile2Id,"testBadgeAndText","testBadgeAndText","argument2",TileOptions.ShowNameOnLogo | TileOptions.ShowNameOnWideLogo,new Uri("ms-appx:///Assets/Logo.png"),new Uri("ms-appx:///Assets/WideLogo.png"));// 需要指定 LockScreenBadgeLogosecondTile.LockScreenBadgeLogo = new Uri("ms-appx:///Assets/BadgeLogo.png");// 需要设置 LockScreenDisplayBadgeAndTileText 为 truesecondTile.LockScreenDisplayBadgeAndTileText = true;bool isPinned = await secondTile.RequestCreateForSelectionAsync(Helper.GetElementRect((FrameworkElement)sender), Placement.Above);if (isPinned){ITileWideText03 tileContent = TileContentFactory.CreateTileWideText03();tileContent.TextHeadingWrap.Text = "hello webabcd";tileContent.RequireSquareContent = false;TileUpdateManager.CreateTileUpdaterForSecondaryTile(_tile2Id).Update(tileContent.CreateNotification());}}} }
4、演示如何自定义锁屏图片
LockScreen/CustomLockScreenImage.xaml
LockScreen/CustomLockScreenImage.xaml.cs
/** 演示如何自定义锁屏图片*/using System; using Windows.Storage; using Windows.Storage.Pickers; using Windows.Storage.Streams; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media.Imaging; using XamlDemo.Common;namespace XamlDemo.LockScreen {public sealed partial class CustomLockScreenImage : Page{public CustomLockScreenImage(){this.InitializeComponent();}private async void btnDemo_Click(object sender, RoutedEventArgs e){if (Helper.EnsureUnsnapped()){FileOpenPicker imagePicker = new FileOpenPicker{ViewMode = PickerViewMode.Thumbnail,SuggestedStartLocation = PickerLocationId.PicturesLibrary,FileTypeFilter = { ".jpg", ".jpeg", ".png", ".bmp" }};StorageFile imageFile = await imagePicker.PickSingleFileAsync();if (imageFile != null){// 将指定的图片设置为锁屏图片await Windows.System.UserProfile.LockScreen.SetImageFileAsync(imageFile);// 获取当前的锁屏图片IRandomAccessStream imageStream = Windows.System.UserProfile.LockScreen.GetImageStream();if (imageStream != null){BitmapImage lockScreenImage = new BitmapImage();lockScreenImage.SetSource(imageStream);img.Source = lockScreenImage;}}}}} }
OK
[源码下载]
总结
以上是生活随笔为你收集整理的重新想象 Windows 8 Store Apps (59) - 锁屏的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: word制作一个申请表
- 下一篇: windows备份0x80070422错