Cách tạo ứng dụng Lens trong Windows Phone 8

Published by admin on

I. Introduction

Ở bài viết trước mình đã chi sẻ về cơ bản thế nào là lens, giúp chúng ta có cái nhìn tổng quát về tính năng lens trong Windows Phone.

Trong bày biết này mình xin chia sẻ cách tạo ứng dụng Lens trong Windows Phone 8. Mình mặc định là các bạn đã tạo được ứng dụng Photos, Camera và muốn dùng nó như một Lens.

Để bắt đầu bài này mong là các bạn đã chắc chắn hiểu thế nào là Lens trong Windows Phone 8.

II.Fundamental

Trước tiên là các bạn tạo ứng dụng của mình nhé, và đảm bảo lả ứng dụng dùng để chính sửa ảnh, chụp ảnh hay liên quan đến camera nhé.

Khi đã có ứng dụng rồi bây giờ chúng ta bắt đầu làm Lens :

1. Tạo app icon cho lens

Chuẩn bị các app icon cho lens, bởi vì khi hiển thị trong ứng dụng thì kích thước app icon của len sẽ khác với app icon ngoài lilvetile và tùy theo độ phân giải của màn hình nữa, các bạn xem thông tin phía dưới :

image

Các bạn lưu ý là phải để trong thư mục Assets và đặt tên đúng với tên file trên bản phía trên nhé.

2. Cấu hình lens extension

lens mà một trong những tính năng mở rộng trong Windows Phone 8, do đó chúng ta phải vào WMAppManifest.xml để  khai báo extension. các bạn chọn chuột phải vào file WMAppManifest.xml –> View Code –> thêm vào thẻ Extensions phía sau thẻ Token đoạn code sau :

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

3. Xử lý việc khởi động một lens từ lens picker

Khi người dùng mở ứng dụng camera lên và chọn vào lens của bạn thì lập tức hế thống sẽ lấy URL được cấu hình sẵn dẫn tới ứng dụng của bạn, mặc định là hệ thống sẽ chọn tới trang MainPage, tuy nhiên nếu chúng ta muốn khi chọn vào lens mà ứng dụng của chúng ta mởi lên sẽ đến một page nào đó khác thì chúng ta phải cấu hình. Việc cấu hình này chúng ta phải kế thừa lớp UrlMapperBase và override lại phương thức MapUri của nó. Lớp này mình gọi là LenUriMapper

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Navigation;

namespace LensExample

{

class LensUriMapper : UriMapperBase

{

private string tempUri;

public override Uri MapUri(Uri uri)

{

tempUri = uri.ToString();

// Look for a URI from the lens picker.

if (tempUri.Contains("ViewfinderLaunch"))

{

// Launch as a lens, launch viewfinder screen.

return new Uri("/viewfinderExperience.xaml", UriKind.Relative);

}

// Otherwise perform normal launch.

return uri;  

}

}

}

Lớp phương thức MapUri trong lớp LenUriMapper làm nhiệm vụ trả về đường dẫn tới một page ứng dụng lens của bạn. Tuy nhiên việc này chỉ có tác dụng khi chúng ta vào file App.xaml.cs vả khởi tạo UriMapper cho RootFrame :

// Assign the lens example URI-mapper class to the application frame.

RootFrame.UriMapper = new LensUriMapper();

Cụ thể là tìm phương thức InitializePhoneApplication() khởi tạo UriMapper torng đó nhé :

private void InitializePhoneApplication()

{

    if (phoneApplicationInitialized)

        return;

    // Create the frame but don't set it as RootVisual yet; this allows the splash

    // screen to remain active until the application is ready to render.

    RootFrame = new PhoneApplicationFrame();

    RootFrame.Navigated += CompleteInitializePhoneApplication;

    // Assign the lens example URI-mapper class to the application frame.

    RootFrame.UriMapper = new LensUriMapper();

    // Handle navigation failures

    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Ensure we don't initialize again

    phoneApplicationInitialized = true;

}

Vậy là khi ứng dụng khởi tạo nó sẽ kiểm tra nhé, nếu bạn vào app bình thường từ app list thì mặc định là ứng dụng sẽ vào MainPage, nếu bạn vào app từ lens picker thì mặc định nếu các bạn không cấu hình UriMapper thì ứng dụng sẽ mởi lên ở MainPage. Nếu bạn đã cấu hình UriMapper thì yên tâm là khi chọn vào lens thì hệ thống sẽ mở ứng dụng lên đúng với page của bạn.

Theo phamnguyen.info