Windows Phone 8 的锁定屏幕背景

适用于:仅限于 Windows Phone 8。

在 Windows Phone 8,用户可以选择将应用用作锁定屏幕背景图像提供程序。

Lock Screen Background Area

为使您的应用能够在手机中提供锁定屏幕背景图像,您需要在应用清单文件中声明应用的目的,并添加用于处理背景图像更改的代码。

本主题包含以下各节。

若要提供手机锁定屏幕背景图像,首先您需要更新应用清单文件,以将您的应用声明为锁定屏幕背景的提供程序。

  1. “解决方案资源管理器”中,展开“属性”,右击 WMAppManifest.xml,再单击“打开方式”,然后单击“带编码的源代码(文本编辑器)”

  2. <Extension> 元素中添加锁定屏幕背景 <Extension> 元素。如果<“扩展”>元素没有在文件中出现,则将下面的整个代码示例置于文件中。<Extensions> 元素必须放置在 <Tokens> 元素的下方。

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

以下代码示例演示当用户点按指定按钮时,您如何可以更改锁定屏幕背景图像。

C#
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.Exception ex)
    {
        System.Diagnostics.Debug.WriteLine(ex.ToString());
    }
}

唯一的图像名称

如果您从独立存储中更新锁定屏幕背景图像,每一次更新时,您都将需要提供唯一的文件名。可以实现这一点的简单方式是为文件名实现 A/B 切换逻辑。

以下代码演示 A/B 切换逻辑示例。

C#
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.

在您的应用可以设置锁定屏幕背景图像之前,用户可以在手机锁定屏幕设置屏幕中将您的应用设置为该图像的提供程序。因此,您应在您的主要项目的 XAP 包的根上包括默认锁定屏幕背景图像。将该图像命名为 DefaultLockScreen.jpg。

如果用户在手机锁定屏幕设置屏幕中,将您的应用设置为默认锁定屏幕背景图像的提供程序,他们可能点按“打开应用”按钮,如下图所示。

Lock screen settings open app link

点按“打开应用”按钮可以启动您的应用,信息包括在 QueryString 中。为提供最佳的用户体验,您应针对该信息的处理而设计应用;例如,当应用更新图像时,您可以将用户导向应用内的自定义锁定屏幕设置屏幕,或显示信息:锁定屏幕背景图像正在更新。

以下代码示例演示您如何可以检查 OnNavigatedTo(NavigationEventArgs) 方法中 QueryString 信息。

C#
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.
    }
}

为了您的应用的用户利益着想,请考虑添加指向手机的锁定屏幕设置屏幕的链接。这对于用户有用,因为您无法从应用内以编程方式关闭作为锁定屏幕背景图像的提供程序的应用。用户将需要访问手机的设置屏幕,自己进行更改。提供设置屏幕的链接使之变得直接简单。

以下代码示例显示您如何可以将按钮单击路由至手机的锁定屏幕设置屏幕。

C#
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:"));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows Phone是由微软推出的移动操作系统,它提供了丰富的开发工具和教程,使开发者可以轻松地创建各种类型的应用程序。下面是Windows Phone开发教程的一些步骤: 1. 准备开发环境:首先,你需要安装Windows Phone SDK,并且拥有一台运行Windows 8或更高版本的电脑。然后,你需要注册一个开发者账户,这样你就可以在Windows Phone商店中发布你的应用程序了。 2. 学习开发语言:Windows Phone应用程序主要使用C#语言进行开发,因此你需要熟悉C#语言的基本语法和特性。同时,你也需要了解XAML标记语言,用于设计应用程序的用户界面。 3. 使用Visual Studio开发工具:Windows Phone开发主要使用Visual Studio作为集成开发环境,它提供了丰富的工具和模板,帮助你创建各种类型的应用程序,包括游戏、商务应用和社交应用等。 4. 学习应用程序的生命周期:你需要了解Windows Phone应用程序的生命周期和事件模型,以便正确地处理应用程序的启动、挂起和恢复等状态。 5. 学习应用程序的数据存储和互联网连接:在开发Windows Phone应用程序时,你可能需要将数据保存到本地数据库或者通过网络连接获取数据,因此你需要学习使用本地存储和网络连接的相关知识。 总之,学习Windows Phone开发需要你掌握C#语言和XAML标记语言,熟悉Visual Studio开发工具,并且了解应用程序的生命周期和数据存储等知识。通过不断的实践和学习,你可以成为一名优秀的Windows Phone开发者。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值