내보내기(0) 인쇄
모두 확장
정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Windows Phone 8의 필터 확장성

2014-06-18

적용 대상: Windows Phone 8 및 Windows Phone Silverlight 8.1만

 

Windows Phone 8 에서는 필터라는 카메라 앱을 만들 수 있습니다. 필터는 기본 제공 카메라 앱에서 열리며, 뷰파인더 환경에 바로 실행되어 사용자가 순간을 캡처하는 것을 돕습니다. 모든 필터는 필터 확장 기능을 등록하여 필터 선택기에 표시되도록 해야 합니다. 앱이 필터 선택기에서 실행되면 뷰파인더 환경으로 열리도록 하는 것은 앱의 책임입니다. 또한 필터 선택기에 특별히 사용할 새로운 아이콘도 만들어야 합니다. 이 항목에서는 필터 확장성을 앱에 통합하는 방법에 대해 설명합니다. 필터 앱에 대한 자세한 내용은 Windows Phone용 필터 디자인 지침을 참조하세요.

필터 선택기를 사용하려면 앱 아이콘과는 다른 해상도의 아이콘이 필요합니다. 앱은 Assets 폴더에서 세 개의 아이콘을 제공해야 하며, 각각은 세 가지 휴대폰 해상도 중 하나를 나타냅니다. 이 아이콘들에 대한 자세한 내용은 Windows Phone용 필터 디자인 지침을 참조하세요.

필터 환경과 통합하기 위해서는 Camera_Capture_App 확장을 등록해야 합니다. 이 확장은 앱이 필터 선택기에서 실행될 때 뷰파인더를 표시할 수 있는 운영 체제를 선언합니다. 또한 Windows Phone 스토어 에서도 사용되어 필터를 식별하고 필터 선택기에 표시합니다. 확장은 WMAppManifest.xml 파일에서 지정합니다. Tokens 요소 바로 뒤 Extensions 요소 내에서 다음 Extension 요소를 사용하여 필터 확장을 지정합니다.

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

Windows Phone 매니페스트 디자이너는 확장을 지원하지 않으므로 XML(텍스트) 편집기를 사용하여 확장을 편집합니다. 자세한 내용은 Windows Phone 8의 앱 매니페스트 파일을 수정하는 방법을 참조하세요.

앱이 필터 선택기에서 실행되면 뷰파인더 환경으로 열리도록 하는 것은 앱의 책임입니다. 사용자가 필터 선택기에서 앱을 탭하면 딥 링크 URI를 사용하여 사용자에게 앱을 표시합니다. URI가 기본 페이지(예: MainPage.xaml)를 실행하거나, URI 매퍼를 사용하여 다른 페이지를 실행하도록 할 수 있습니다. 이 단계에서는 두 가지 경우를 모두 설명합니다.

앱을 기본 페이지로 실행

앱에 페이지가 하나만 있고 이 페이지에 뷰파인더가 표시되는 경우에는 URI 매핑이 필요하지 않습니다. 앱은 앱 매니페스트 파일의 DefaultTask 요소에서 지정된 페이지로 실행됩니다. 새 Windows Phone 앱을 만들 때는 기본적으로 MainPage.xaml이 시작 페이지로 지정됩니다.

앱을 다른 페이지로 실행

기본 시작 페이지에서 뷰파인더를 제공하지 않는 경우에는 URI 매핑을 사용하여 사용자에게 뷰파인더가 있는 앱의 페이지를 표시합니다.

필터 선택기의 시작을 앱의 특정 페이지에 매핑하기 위해서는 System.Windows.Navigation 네임스페이스의 UriMapperBase 클래스를 기반으로 URI 매퍼 클래스를 직접 만드는 것이 좋습니다. URI 매퍼 클래스에서 MapUri(Uri) 메서드를 재정의하여 수신 URI를 앱의 페이지에 매핑합니다.

예를 들어 다음 코드에서는 문자열 ViewfinderLaunch를 포함하는 URI를 찾습니다. URI 매퍼에서 이 문자열을 찾으면 매퍼는 사용자에게 viewfinderExperience.xaml이라는 뷰파인더가 있는 페이지를 표시합니다. 이 문자열을 못 찾으면 들어오는 URI가 원래 상태로 반환됩니다.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Navigation;

namespace LensExample
{
    class LensExampleUriMapper : 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;
        }
    }
}


앱용 URI 매퍼 클래스를 만든 후 App.xaml.cs 파일의 앱 프레임에 할당합니다. 다음 예제에서는 이 작업을 수행할 수 있는 방법을 보여 줍니다.


// Assign the lens example URI-mapper class to the application frame.
RootFrame.UriMapper = new LensExampleUriMapper();


이 코드는 LensExampleUriMapper 클래스를 앱 프레임의 UriMapper 속성에 할당합니다. InitializePhoneApplication 메서드에서 기존 코드는 수정하지 않도록 합니다. 아래 예제에 나와 있는 대로 UriMapper 할당만 추가하세요.


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 LensExampleUriMapper();

    // Handle navigation failures
    RootFrame.NavigationFailed += RootFrame_NavigationFailed;

    // Ensure we don't initialize again
    phoneApplicationInitialized = true;
}


필터 선택기에서 앱이 시작되면 초기화 동안 URI 매퍼를 할당합니다. 임의의 페이지를 시작하기 전에 앱은 URI 매퍼의 MapUri 메서드를 호출하여 시작할 페이지를 결정합니다. URI 매퍼가 반환하는 URI는 앱이 시작하는 페이지입니다.

표시:
© 2015 Microsoft