windows phone 8 设置锁屏背景

  本来想研究一下 利用闪光灯实现手电筒的代码,发现不是简答设置FlashMode属性可以解决问题的,ms也没有提供api,无意瞄了一眼侧边栏的文章列表,发现了设置屏幕锁屏背景的实现,手一抖点进去了。还算比较容易实现,用的的类查了一下,类的方法属性也没有几个,代码中都用到了。开始写的时候问题来了,,,,敲了一个类,试图右键解析添加引用,根本没有解析这一选项(我和我的小伙伴都惊呆了),,,,,,是不是错过了什么。最低电话支持 windows phone 8,ms对wp7的放弃,让我心都碎了,就是说在我的古董机上根本测试不了啊。无奈还是要吧代码敲一下,以后用到就copy一下。

  用到的类有LockScreenManager和LockScreen。LockScreenManager类先判断当前应用是否为锁屏背景屏幕提供程序,将应用程序设置为锁定屏幕背景提供程序。在调用LockScreen的静态方法SetImageUri 设置锁屏背景。

private async Task<bool> IsLockScreenProvided()
{
    bool isProvider = LockScreenManager.IsProvidedByCurrentApplication;
    if (!isProvider)
    {
        //将当前应用程序设置为锁屏背景提供程序
        LockScreenRequestResult lsr = await LockScreenManager.RequestAccessAsync();   
        isProvider = lsr == LockScreenRequestResult.Granted;
    }
    return isProvider;
}

private async void SetLockScreenWallPaper(string filePathOfTheImage, bool isAppResource)
{
    try
    {
        if (await IsLockScreenProvided())
        {
         // ms-appdata 表示本地应用程序根目录
         // ms-appx 引用程序安装目录,以资源的形式捆绑在xap安装包中
         //这应该是wp8与wp7的不同吧,wp7里这两个路径不是这么表示的,知道的牛人可以详细介绍一下??
         var schema = isAppResource ? "ms-appx:///" : "ms-appdata:///Local/";
         var uri = new Uri(schema + filePathOfTheImage, UriKind.Absolute);
         //将锁定屏幕背景设置为位于提供的统一资源标识符 (URI) 处的图像。
         LockScreen.SetImageUri(uri);

         //获取当前锁定屏幕背景的统一资源标识符 (URI)。
         //var currentImage = LockScreen.GetImageUri();
        }
        else
        {
            MessageBox.Show("Permission denied by user to set the background.");
        }
    } 
    catch (System.Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }

}
async 和 await 关键字是第一次见到!现在理解就是通过最简单的方法,让你实现异步
posted on 2013-08-05 23:19  mayue-tzc  阅读(517)  评论(0编辑  收藏  举报