【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. WIN10小技巧

    WIN10激活: powershell管理员运行slmgr /skms kms.03k.orgslmgr /ato CMD:%TEMP% 全选垃圾,删除 手机投屏到WIN10:win+i---系统-- ...

  2. java网络编程基础——基本网络支持

    基本网络支持 java.net包主要为网络编程提供支持. 1.InetAddress InetAddress类代表IP地址,还有两个子类:Inet4Address.Inet6Address. pack ...

  3. js扩展函数收集

    1,checkbox序列化 2,form表单对象化 3,数组字符串化

  4. Appium - adb命令操作

    1.Android 调试桥adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信.它可为各种设备操作提供便利,如安装和调 ...

  5. Unittest方法 -- 用例执行顺序

    import unittestfrom selenium import webdriverclass F4(unittest.TestCase): @classmethod def setUpClas ...

  6. 在R中使用Keras和TensorFlow构建深度学习模型

    一.以TensorFlow为后端的Keras框架安装 #首先在ubuntu16.04中运行以下代码 sudo apt-get install libcurl4-openssl-dev libssl-d ...

  7. Guava - 字符串处理

    Joiner 连接 比如,有这样一个集合[1,2,3,4,5,7,null],想把这个集合转换成以#分割的字符串,并过滤掉集合中的空元素 List<Integer> eleList = A ...

  8. synchronized锁机制(六)

    前言 1.理解同步关键词synchronized 2.同步方法与同步代码块的区别 3.理解锁的对象this 脏读 一个常见的概念.在多线程中,难免会出现在多个线程中对同一个对象的实例变量进行并发访问的 ...

  9. 开发工具IDE从入门到爱不释手(六)常用插件Git

    Git 环境准备 本地基本操作 本地文件关联git管理 文件提交git Ctrl+K:提交 关联远程仓库 先注册github账号 连接本地 git菜单 撤销提交 追加提交 Code Review

  10. Go是一门什么样的语言?

    Go语言基本介绍 首先Go语言诞生于2007年由谷歌公司研发,2009年开源,2012年推出1.0版本,Go是一种语言层面支持并发(Go最大的特色.天生支持并发).内置runtime,支持垃圾回收(G ...