Windows Phone 8 镜头应用 - Lenses for Windows Phone 8

Lens 翻译过来其实就是滤镜透镜的意思,在Windows phone 8 中使用快门按钮的时候可以启动相机功能,相机的AppBar 中可以看到一个Lens按钮。这是一种应用的全新体验的方式,我个人就很喜欢这种方式打开相机十分方便,并且在默认相机中就可以选择目标应用的滤镜效果 这样做十分有效的提升了用户体验,而这用户体验是Windows phone平台所特有的,也为更多的lens应用提供了更多的程序入口。

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

同时欢迎大家在这里和我沟通交流或者在新浪微博上 @王博_Nick

下图是启动相机后 显示在AppBar中的Lins 按钮。

下图是一个使用lens的应用的体验流程。

 

首先如果你的应用是要进行拍摄以及保存照片到相册一定要在WMAppManifest中声明使用镜头和相册媒体库访问权限。

另外并不是选了以上两个Item你的应用就可以显示在Lens picker中 需要你进行镜头的扩展注册 需要修改WMAppManifest文件但是这次是要进行打开编辑加入以下代码:

<Extension ExtensionName="Camera_Capture_App" 
           ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5631}"
           TaskID="_default" />

并且要紧跟在Token节点后

这样在从新部署你的应用 在Lens picker中就可以看到你的应用了

从上图可以看出来 只有我的DEMO程序没有图标显示看上去很不友好一定会被很多同学鄙视,当然我也是要设置一下默认选择其中的图标的,我们都知道WP8是支持3种分辨率的 所以在Lens picker中我们也需要三种的图标尺寸来适应着三种分辨率

这里有一个详细的模板说明提供下载 包含PDF 和原始PSD文件非常友好啊:Icon templates for Windows Phone 8

你这里需要提供以上三种分辨率的图标并且使用命名规范,并且放在 Assets文件夹下  这样你就可以看到你的应用在不同分辨率下 Lens picker中的Icon 这里可以看到我偷懒就直接使用的SDK的图标但是 效果已经有啦~

这里我在啰嗦一句 如果你希望做出以下这种可以适应系统的颜色变化的效果 就用PNG透明图片即可。


点击Lens按钮后会出现支持Lens API的所有应用列表 点击列表中的某一个应用图标后会通过Deep Link的形式跳转(打开)至目标应用。处理这种Deep Link的方法请参考 windows phone 8 中的应用间通信 也可以参考MSDN :http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662936(v=vs.105).aspx

 

相信一般的提供滤镜的应用都提供了 图片编辑的功能,各种效果 特效过后让照片显示的光鲜靓丽,当然在照片库中可以使用一个入口连接将照片送入一个 lens 应用中去进行编辑

从上图中可以看到这张图片是从一个LensAPP保存的并且可以使用该App打开这张图片 下面我介绍一下如何实现此功能

首先你的图片是通过你的LensAPP保存的,之后会就在相app bar 中的item中就会直接出现Open Link

                MediaLibrary library = new MediaLibrary();

                string lName = GeneratePhotoName();


                var myStore = IsolatedStorageFile.GetUserStoreForApplication();


                if (myStore.FileExists(lName))
                {
                    MessageBox.Show("图片已经存在");
                }
                else
                {
                    Picture newPicture = this.mediaLibrary.SavePictureToCameraRoll(lName, e.ChosenPhoto);

                    MessageBox.Show("保存成功!", "提示", MessageBoxButton.OK);

 

 

 声明媒体拓展功能也需要在WMAppManifest 文件中注册声明

<Extension ExtensionName="Photos_Rich_Media_Edit" 
           ConsumerID="{5B04B775-356B-4AA0-AAF8-6491FFEA5632}" 
           TaskID="_default" />

 

同样也是需要在紧跟Token节点 在Extension中加入此节点

从open link中拿到图片的方法 也很简单的 利用的就是应用间Share文件的方法,

 

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    // Get a dictionary of query string keys and values.
    IDictionary<string, string> queryStrings = this.NavigationContext.QueryString;

    // Ensure that there is at least one key in the query string, and check whether the "token" key is present.
    if (queryStrings.ContainsKey("token"))
    {
        // Retrieve the photo from the media library using the token passed to the app.
        MediaLibrary library = new MediaLibrary();
        Picture photoFromLibrary = library.GetPictureFromToken(queryStrings["token"]);

        // Create a BitmapImage object and add set it as the image control source.
        // To retrieve a full-resolution image, use the GetImage() method instead.
        BitmapImage bitmapFromPhoto = new BitmapImage();
        bitmapFromPhoto.SetSource(photoFromLibrary.GetPreviewImage());
        image1.Source = bitmapFromPhoto;

    }
}

 

deep link的方法之前已经介绍过了相信大家已经不想再听我啰嗦了 再次给出参考连接吧

参考 windows phone 8 中的应用间通信

MSDN:http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj662942(v=vs.105).aspx

看到这里相信大家对Lens APP有了一定的了解赶快动手试试吧,欢迎大家在这里和我沟通交流或者在新浪微博上 @王博_Nick

posted @ 2012-12-21 14:26  王博_Nick  Views(1382)  Comments(0Edit  收藏  举报