【UWP开发】自定义锁屏&桌面壁纸

mtobeiyf关注
2015.11.01 00:16:55字数 394阅读 1,249

调用通用的API来设置桌面壁纸,可以实现很多有趣的功能。
在Windows通用平台中,可以使Windows.System.UserProfile命名空间下的类UserProfilePersonalizationSettings来对系统的开始界面背景和锁屏壁纸进行操作。它可以修改锁屏壁纸和桌面壁纸,调用后会返回bool值,如果成功就是true,否则返回false。
在调用UserProfilePersonalizationSettings类前,先访问一下IsSupported方法,看看是否支持该操作。然后通过Current属性可以获取到一个UserProfilePersonalizationSettings实例,之后你就可以设置壁纸了。
调用TrySetLockScreenImageAsync方法设置锁屏壁纸,调用TrySetWallpaperImageAsync方法可以设置桌面壁纸,参数都是用来作为背景的图片文件的StorageFile

 
 

下面通过实例来演示一下如何实现这个功能。

因为UserProfilePersonalizationSettings被封装在Windows.System.UserProfile中,先引用

using Windows.System.UserProfile

设置壁纸

UserProfilePersonalizationSettings setting
= UserProfilePersonalizationSettings.Current;
//实例化对象
bool b = await setting.TrySetLockScreenImageAsync(file);

其中TrySetLockScreenImageAsync(file)是尝试设置文件对象file为锁屏壁纸。

在测试中,我是直接在项目根目录下添加了一个pic.jpg的1280*720的图片文件。(其实应该放Assets里面的)

那么如何导入图片文件呢?
需要用到StorageFileUri
在Class下定义:

private static Uri imgUri = new Uri("ms-appx:///pic.jpg");

这样就有个Uri指向根目录下的pic.jpg文件。

接下来要用到StorageFile来导入文件。

还是要先引用

using Windows.Storage;

从imgUri导入文件,注意要用到异步

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(imgUri);

下面贴上主要源码。

public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
} private static Uri imgUri = new Uri("ms-appx:///pic.jpg"); private async void button_Click(object sender, RoutedEventArgs e)
{
var msg = new MessageDialog("");
if (!UserProfilePersonalizationSettings.IsSupported())
{
var mess = new MessageDialog("人品太差,不支持哦!");
await mess.ShowAsync();
}
//获取文件
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(imgUri);
//设置背景
UserProfilePersonalizationSettings setting = UserProfilePersonalizationSettings.Current;
bool b = await setting.TrySetLockScreenImageAsync(file);
}
}

实际  返回false

C# code

----------------------------------------------

private static Uri imgUri = new Uri("ms-appx:///Assets/pic.jpg");

private async void Button_Click_1(object sender, RoutedEventArgs e)

{

var msg = new MessageDialog("");

if (!UserProfilePersonalizationSettings.IsSupported())

{

var mess = new MessageDialog("人品太差,不支持哦!");

await mess.ShowAsync();

}

img.Source = new BitmapImage(new Uri("ms-appx:///pic.jpg", UriKind.RelativeOrAbsolute));

//获取文件

StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///pic.jpg", UriKind.RelativeOrAbsolute));

//设置背景

UserProfilePersonalizationSettings setting = UserProfilePersonalizationSettings.Current;

bool b = await setting.TrySetLockScreenImageAsync(file);

if (b)

{

msg.Content = "set ok!";

await msg.ShowAsync();

}

else

{

msg.Content = "can not set lock screen!";

await msg.ShowAsync();

}

}

uwp 的锁屏功能的更多相关文章

  1. iOS开发——使用技术OC篇&简单九宫格锁屏功能的实现与封装

    简单九宫格锁屏功能的实现与封装 首先来看看最后的实现界面. 在这开始看下面的内容之前希望你能先大概思考活着回顾一下如果 你会怎么做,只要知道大概的思路就可以. 由于iphone5指纹解锁的实现是的这个 ...

  2. CentOS系统里如何正确取消或者延长屏幕保护自动锁屏功能(图文详解)

    不多说,直接上干货! 对于我这里想说的是,分别从CentOS6.X  和  CentOS7.X来谈及. 1. 问题:默认启动屏幕保护 问题描述: CentOS系统在用户闲置一段时间(默认为5分钟)后, ...

  3. 【Centos】Centos7.5取消自动锁屏功能

    目录 00. 目录 01. 问题描述 02. 问题分析 03. 解决办法 04. 附录 00. 目录 @ 参考博客:[Centos]Centos7.5取消自动锁屏功能 01. 问题描述 Centos7 ...

  4. js防windos锁屏功能实现

    <li class="layui-nav-item"> <a href="javascript:;" id="lock"& ...

  5. Android定时锁屏功能实现(AlarmManager定时部分)

    菜鸟入坑记——第一篇 关键字:AlarmManager 一.AlarmManager简介: 参考网址:https://www.jianshu.com/p/8a2ce9d02640        参考网 ...

  6. Android开发之实现锁屏功能

    锁屏须要引入设备超级管理员.在文档Android开发文档的Administration中有具体的说明. Android设备管理系统功能和控制訪问. 主要有一下几个步骤: 1  创建广播接收者,实现De ...

  7. CentOS取消屏幕保护自动锁屏功能

    CentOS系统在用户闲置一段时间(默认为5分钟)后,会启动屏幕保护程序(默认的屏保为黑屏),并要求重新输入密码才能回到原来的桌面. 设置屏幕保护:System -> Preferences - ...

  8. ajax请求锁屏功能

    我们有时候在进行ajax请求的时候希望页面不允许点击,等请求结束之后才可以进行点击,那么可以写: $(".cloudos-container").ajaxStart($.block ...

  9. 调整Kali Linux的锁屏时间

    调整Kali Linux的锁屏时间   锁屏是保护隐私的一种重要机制.当用户不操作电脑一段时间后,系统会进入锁屏状态.用户需要输入口令,才能重新进入系统.避免因为操作人员离开电脑后,被其他人员利用现有 ...

随机推荐

  1. C语言:变量

    变量: 1.在程序运行过程中,值可以改变的量称为变量 2.每个变量都有一个名字,称为变量名 3.每个变量都必须进行变量说明,指明变量的类型 4.每个变量都有一个对应的地址,写法:&变量名 5. ...

  2. C语言:float表示范围

    #include <stdio.h> #include <limits.h> //整数限制 #include <float.h> //浮点数限制 void main ...

  3. urllib库中的URL编码解码和GETPOST请求

    在urllib库的使用过程中,会在请求发送之前按照发送请求的方式进行编码处理,来使得传递的参数更加的安全,也更加符合模拟浏览器发送请求的形式.这就需要用urllib中的parse模块.parse的使用 ...

  4. IO编程之IO流

    Java的IO流是实现输入.输出的基础,它可以方便的实现数据的输入输出操作.在Java中把不同的输入输出源(键盘.文件.网络连接)抽象表述为流(stream).通过流可以使java程序使用相同的方式访 ...

  5. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-热部署项目到tomcat中,但是数据库配置文件错误,中途停止部署,导致执行shutdow.sh报错异常: Could not contact localhost:8005. Tomcat may not be running error while shutting down】

    1,经过千辛万苦的尝试和百度,终于一个博客:http://stackmirror.caup.cn/page/skxugjqj0ldc关于catalina.sh文件的执行引起了我的注意: 2,我执行ca ...

  6. YsoSerial 工具常用Payload分析之CC3(二)

    这是CC链分析的第二篇文章,我想按着common-collections的版本顺序来介绍,所以顺序为 cc1.3.5.6.7(common-collections 3.1),cc2.4(common- ...

  7. IO流之节点流(字符流)和数据流关闭

    ​输入流----Reader 1 public class Reader { 2 public static void main(String[] args) throws Exception { 3 ...

  8. 网络损伤仪WANsim中关于丢包的介绍

    网络损伤仪WANsim中的4种丢包模型 丢包是指在网络上传输的数据包无法到达指定目的地.丢包在广域网中是一个很常见的问题.想要模拟出真实的广域网环境,对丢包的精确模拟是必不可少的. 在网络损伤仪WAN ...

  9. 前端基础js(四)

    一. js [1] html:用于显示页面 [2] css:用于描述页面的样式 [3] javaScript:用于描述页面的行为 二.js中三大部分内容 [1] 基本语法:函数.对象.事件类型(变量, ...

  10. 开发工具IDE从入门到爱不释手(五)更多实用操作

    更多实用技巧 Tabs分屏和独立 日志链接及浏览器 设置浏览器 本地修改历史 三秒钟不操作,自动保存一个版本 右键--Local History--Show History 查看方法调用情况 按住方法 ...