Windows Phone 8 锁屏背景与通知

Windows Phone 8 在锁屏背景图片是支持应用自定义的,并且在屏幕下方还支持应用通知提醒,这是一个十分吸引眼球的新功能 虽说目前已经看到很多应用已经做个了个特性今天我还是在这个里为大家相信说明一下 为后面想做这个功能的同学先铺铺路。

此文是升级到Windows Phone 8必需知道的13个特性系列的一个更新 希望这个系列可以给 Windows Phone 8开发者带来一些开发上的便利。

1. 锁屏背景

正如我说windows phone 8 是支持锁屏背景的替换的 下图是摘自MSDN的一张原图很好理解

代码写起来十分的简单

首先还是在WMAppManifest文件中声明下 这段XML要紧跟在<Tokens>节点后面

<Extensions>

<Extension ExtensionName="LockScreen_Background"

ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}"

TaskID="_default" /></Extensions>

修改锁屏背景代码

这里我解释一下"ms-appx:///" 和"ms-appdata:///Local/"

ms-appdata points to the root of the local app data folder.也就是说当你的图片文件是在文件系统中的时候使用ms-appdata前缀,时常从网络下载的图片保存在隔离存储器中就要使用这个前缀了。

ms-appx points to the Local app install folder, to reference resources bundled in the XAP package. 当此张图片是和当前应用一起打包在XAP包中的时候使用ms-appx前缀。

private async void LockHelper

(string filePathOfTheImage, bool isAppResource){

try

{var isProvider =

Windows.Phone.System.UserProfile.LockScreenManager.IsProvidedByCurrentApplication;

if (!isProvider)

{

// If you‘re not the provider, this call will prompt the user for permission.            // Calling RequestAccessAsync from a background agent is not allowed.

var op = await

Windows.Phone.System.UserProfile.LockScreenManager.RequestAccessAsync();            // Only do further work if the access was granted.

isProvider = op ==

Windows.Phone.System.UserProfile.LockScreenRequestResult.Granted;

}

if (isProvider)

{

// At this stage, the app is the active lock screen background provider.

// The following code example shows the new URI schema.

// ms-appdata points to the root of the local app data folder.

// ms-appx points to the Local app install folder, to reference resources bundled in the XAP package.

var schema = isAppResource ? "ms-appx:///" : "ms-appdata:///Local/";

var uri = new Uri(schema + filePathOfTheImage, UriKind.Absolute);

// Set the lock screen background image.

Windows.Phone.System.UserProfile.LockScreen.SetImageUri(uri);

// Get the URI of the lock screen background image.

var currentImage = Windows.Phone.System.UserProfile.LockScreen.GetImageUri();

System.Diagnostics.Debug.WriteLine("The new lock screen background image is set to {0}", currentImage.ToString());

}

else

{MessageBox.Show("You said no, so I can‘t update your background.");        }    }

catch(System.Exceptionex)

{

System.Diagnostics.Debug.WriteLine(ex.ToString());

}}

经过我的测试执行到这里 LockScreenManager.RequestAccessAsync()会弹出一个用户提示 需要用户确认。

// Setup lockscreen.

if

(!LockScreenManager.IsProvidedByCurrentApplication)

{await LockScreenManager.RequestAccessAsync();                }

当你在更新你的锁屏背景时 尤其是从独立存储空间中读取时 请尽量避免相同的文件名经我测试相同文件名有可能会造成系统默认缓存导致图片更新延迟的情况发生。

MSDN也提供了一个替换名称的方法

string fileName;var currentImage = LockScreen.GetImageUri();

if (currentImage.ToString().EndsWith("_A.jpg")){

fileName = "LiveLockBackground_B.jpg";}

else{fileName = "LiveLockBackground_A.jpg";}var lockImage = string.Format("{0}", fileName);// At this point in the code, write the image to isolated storage.

当然在运行程序之前我们不能用代码干预设置锁屏背景在我们的程序中可以先预设一张图片作为锁屏背景 但是这张图片的命名必须是DefaultLockScreen.jpg且将这张图片放置在项目根目录下.

同时在锁屏设置页面我们可以看到 open app的按钮可以直接导航到我们的应用中去 这里处理这个导航的方法和App to App 的方法类似 重载在App中处理InitializePhoneApplication方法UriMapperBase即可 相信参考windows phone 8 中的应用间通信

protected override void

OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)

{

base.OnNavigatedTo(e);

string lockscreenKey = "WallpaperSettings";

string lockscreenValue = "0";

bool lockscreenValueExists =

NavigationContext.QueryString.TryGetValue(lockscreenKey, out lockscreenValue);    if (lockscreenValueExists)

{

// Navigate the user to your app‘s lock screen settings screen here,

// or indicate that the lock screen background image is updating.    }}

当然在应用中也可以通过LaunchUriAsync 方法打开设置页面 相信参考:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662937(v=vs.105).aspx

private async void btnGoToLockSettings_Click(object sender, RoutedEventArgs e){

// Launch URI for the lock screen settings screen.

var op = await Windows.System.Launcher.LaunchUriAsync(new

Uri("ms-settings-lock:"));}

2. 锁屏通知

windows phone 7 中已经包含了推送通知,在windows phone 8中开发者可以将其融入到锁屏界面中来

下图还是一张选自MSDN的截图很清晰的说明通知的情况,左侧大字是显示的应用的详细状态,下面一行可以显示5个应用程序的通知数量。

同样在锁屏设置中可以选择设置显示通知的应用及显示即时状态的应用。

下面介绍下应用如何实现这个通知

首先第一步还是要在WMAppManifest中声明我们的应用是一个支持锁屏通知的应用同时指定通知的图标来源。

图标必须是一个白色背景透明 38 x 38 像素的PNG 图片。

在Token节点中

<DeviceLockImageURI

IsRelative="true" IsResource="false">Assets/LockImage.png</DeviceLockImageURI>

其次在声明支持通知 前者是声明支持显示应用显示即时状态 后者是声明显示应用显示详细状态。

<Extensions>      <Extension ExtensionName="LockScreen_Notification_IconCount" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" />      <Extension ExtensionName="LockScreen_Notification_TextField" ConsumerID="{111DFF24-AA15-4A96-8006-2BFF8122084F}" TaskID="_default" /></Extensions>

如果还有困惑的话IT在线教育平台还有几个相似的例子。不过我想各位看官应该已经很清楚了。其实就这么简单,只要你的应用之前支持推送你 那么经过以上的设置推送信息就会显示在锁屏界面上了。

大功告成。

时间: 2024-08-06 04:42:36

Windows Phone 8 锁屏背景与通知的相关文章

Windows技巧|如何在Windows 10在锁屏状态下打开某种应用程序?

本文标签:    电脑技巧 Windows技巧 Win10的锁屏界面 互联网杂谈 在Win10的锁屏界面,右下角有三个图标,中间有个像时钟的图标就是所谓的"轻松使用"按钮,里面有讲述人.放大镜.屏幕键盘等功能,这些功能我们可以修改成我们常用的应用程序,这样将大大的方便我们的操作,那么该如何修改呢? 默认情况下在锁屏界面点击右下角中间的图标会弹出"轻松使用"菜单 具体方法如下: 1.在Cortana搜索栏输入regedit,按回车键进入注册表编辑器; 2.定位到:HK

Windows 聚焦的锁屏壁纸设置为桌面壁纸

需求: Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸,想设置为桌面壁纸. 步骤如下: 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里. a. 打开“资源管理器 b. 在地址栏复制粘贴下方路径后按回车键,即可快速跳转至这个隐藏的文件夹. %localappdata%\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets PS: 右键单击“Assets”

快速构建Windows 8风格应用33-构建锁屏提醒

原文:快速构建Windows 8风格应用33-构建锁屏提醒 引言 Windows Phone(8&7.5)和Windows 8引入了锁屏概念,其实做过Windows Phone 7.5应用开发者都知道7.5时代手机锁屏是不支持第三方开发者开发的.那么现在我们第三方开发者可以在Windows 8和Windows Phone 8的锁屏界面开发显示自己应用的信息了. Windows 8 锁屏具有三种用途: 防止触控设备上的意外登录尝试: 为用户提供个性化的界面: 向用户显示精简的信息:日期和时间.网络

WP8.1学习系列(第三章)——磁贴和锁屏通知

一.创建默认磁贴 创建默认磁贴,不需要任何代码只有制作几张图片就可以了. 1.创建工程之后,在工程目录找到package.appxmanifest,打开它. 2.在应用程序栏,通知选项,选择徽章和图块文本.    3.然后切换到可见资产栏,右边有几个初始选项.图块(磁贴)旁边有一个显示名称选项,一个正方形150*150的磁贴,一个是310*150的, 分别对应着开始屏幕中切换磁贴大小的最大和中等大小模式,只有这两种才能下显示名称,还有一种更小的图标是不能显示名称了,因为它已经够 小了,还要显示文

windows phone 8.1开发:锁屏提醒

原文出自:http://www.bcmeng.com/lockscreen/ 之前小梦和大家分享了toast通知,磁铁更新,今天小梦和大家分享windows phone 8.1开发中的锁屏提醒.相比toast通知和磁铁更新,锁屏提醒十分简单.锁屏提醒有俩种:数字提醒和字形提醒,在Windows Phone 8.1中,手机锁屏提醒仅支持“警报”和“注意”状态字形以及数字.向手机发送任何其他字形将清除锁屏提醒.其支持字形如下: 状态 字形 XML 无 未显示锁屏提醒 <badge value="

使用恶意USB设备解锁 Windows &amp; Mac 锁屏状态

NSA专业物理入侵设备——USB Armory,可解锁任意锁屏状态的下的Windows和Mac操作系统,含最新发布的Windows10.及较早的Mac OSX El Capitan / Mavericks,想知道原理是什么?进来看看吧! 首先,这原本是没有可能实现的,但事实是我真的办到了(相信我,因为不敢相信这是真的,我已经测试了很多次.) USB Ethernet + DHCP + Responder == 证书 论题: 如果我在电脑上插入一个伪装成USB以太网适配器的设备, 那么即使这个系统

windows远程桌面3389超时锁定时间调整方法(取消锁屏时间限制)

我们在管理服务器操作时,有时候需要长时间操作服务器,有时候稍微离开下倒杯水或接个稍长点的电话,就超时断开了很烦啦!有没有方法解决这个问题类?答案是有的!我只要在组策略里面,稍微修改下超时时间就可以了.可以根据需要适当延长超时时间,或永不超时.具体设置为:  打开电脑选择运行,输入gpedit.msc,然后依次选择: 计算机配置.管理模板.windows组件.终端服务.会话.设置右边属性栏目里面的“为断开的会话设置时间”可以自定为:.从不.1分钟.5分钟.最长为2天. 设置后就不用烦恼啦!开工顺利

重新想象 Windows 8.1 Store Apps (92) - 其他新特性: CoreDispatcher, 日历, 自定义锁屏系列图片

[源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之其他新特性 CoreDispatcher 的新特性 “日历”的相关操作 自定义锁屏时需要显示的系列图片 示例1.演示 CoreDispatcher 在 win8.1 中的新特性CoreDispatcherDemo.xaml.cs /* * 演示 CoreDispatcher 在 win8.1 中的新特性 * * 关于几个 Core 的基础请参见:http://www.cnblogs.com/weba

如何为自己的windows 8系统的电脑更换锁屏壁纸

现在的人都喜欢个性,今天教大家如何设置自己想要的锁屏壁纸 工具/原料 Windows 8系统的笔记本电脑 方法/步骤 将鼠标移到电脑的右下方,点击设置按钮进入设置页面 找到更改电脑设置并点击进入设置页面,页面出现一些系统自带的锁屏壁纸,可以选择进行设置 点击浏览,选择我们自己存到电脑里的图片并点击,然后单击保存设置完成最终的设置