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

Windows Phone 7용 사진 앱 선택기 확장

2014-06-18

적용 대상: Windows Phone OS 7.1 만

이 항목에서는 사진 앱 선택기에 사진 편집 앱을 표시하는 방법을 설명합니다. 이 선택기를 사용하면 보고 있던 사진을 편집할 앱을 선택할 수 있습니다. 사용자에게 사진을 선택하라는 메시지를 표시하지 않고도 앱에서 해당 사진에 액세스하는 방법을 알아보세요. 사진 환경을 확장할 수 있는 다른 방법에 대한 자세한 내용은 Windows Phone 8의 사진 확장성을 참조하세요.

중요중요:

사진 앱 선택기는 더 이상 사용되지 않습니다. 새 Windows Phone 8 사진 편집 앱에서 대신 사진 편집 선택기를 확장합니다. 이 확장 지점에 대한 자세한 내용은 Windows Phone 8의 사진 편집 선택기 확장을 참조하세요.

이 항목에는 다음 단원이 포함되어 있습니다.

 

사진 앱 선택기는 기본 제공되는 사진 뷰어에 나타납니다. 링크를 탭하여 앱 바에서 실행합니다. 다음 이미지에는 사진 뷰어 링크와 사진 앱 선택기 확장(이 항목 뒷부분에서 설명)의 이름이 나와 있습니다.

Extending the photo viewer apps link.

다음 단계에서는 앱을 사진 앱 선택기에 통합하는 방법을 설명합니다.

Windows Phone OS 7.1 앱에서는 미디어 라이브러리의 사진에 액세스하기 위한 ID_CAP_MEDIALIB 기능을 지정해야 합니다. 기능은 앱 매니페스트 파일 WMAppManifest.xml에서 지정합니다.

<!-- For accessing photos in the media library. -->
<Capability Name="ID_CAP_MEDIALIB" />

사진 앱 선택기에 표시되려면 Photos_Extra_Viewer 확장을 등록해야 합니다. 확장은 앱 매니페스트 파일 WMAppManifest.xml에서 지정합니다. Tokens 요소 바로 뒤 Extensions 요소 내에서 다음 Extension 요소를 사용하여 사진 앱 선택기 확장을 지정합니다.

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

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

사용자가 사진 앱 선택기에서 앱을 탭하면 딥 링크 URI가 실행되어 앱이 열리고 보고 있던 사진으로 토큰이 전송됩니다. URI에 문자열 token이 포함되어 있으면 앱에서 사진 앱 선택기의 실행을 감지할 수 있습니다. 다음 예제에서는 기본 탐색 페이지가 MainPage.xaml인 경우 URI 매퍼에서 볼 수 있는 사진 앱 선택기의 실행 URI를 설명합니다.

/MainPage.xaml?token=%7B273fea8d-134c-4764-870d-42224d13eb1a%7D

이 예제에서는 token 매개 변수 값이 토큰입니다. 이 문자열을 사용해 미디어 라이브러리에서 사진을 검색할 수 있습니다. 이 작업은 이 항목 뒷부분에서 설명합니다.

사진 앱 선택기는 기본 탐색 페이지(이 경우 MainPage.xaml)를 대상으로 하므로, URI 매핑을 구현하지 않으면 이 페이지가 실행됩니다. 앱의 기본 탐색 페이지에서 토큰이 참조하는 사진을 처리할 수 있으면 URI 매핑이 필요하지 않을 수도 있습니다.

단, 사진을 편집하기 위해 다른 페이지를 실행하려면 URI를 해당 페이지에 매핑해야 합니다. 다음 예제에서는 사용자 지정 URI 매퍼 클래스를 사용해 이 작업을 수행하는 방법을 보여 줍니다.


using System;
using System.Windows.Navigation;

namespace CustomMapping
{
    class CustomUriMapper : UriMapperBase
    {
        public override Uri MapUri(Uri uri)
        {
            string tempUri = uri.ToString();
            string mappedUri;

            // Launch from the photo apps picker.
            // Incoming URI example: /MainPage.xaml?token=%7B273fea8d-134c-4764-870d-42224d13eb1a%7D
            if ((tempUri.Contains("token")) && !(tempUri.Contains("RichMediaEdit")))
            {
                // Redirect to PhotoPage.xaml.
                mappedUri = tempUri.Replace("MainPage", "PhotoPage");
                return new Uri(mappedUri, UriKind.Relative);
            }
            // Otherwise perform normal launch.
            return uri;
        }
    }
}


이 예제에서 URI 매퍼는 URI 내의 페이지 이름을 바꿔 수신 URI를 PhotoPage.xaml이라는 페이지로 매핑합니다. 해당 메서드에서 반환된 URI는 앱이 시작될 때 첫 번째 페이지를 실행하기 위해 앱의 루트 프레임에서 사용됩니다. 루트 프레임은 앱이 초기화될 때 할당되므로 사용자 지정 URI 매퍼를 사용합니다. 다음 코드에서는 URI 매퍼가 App.xaml.cs 파일의 InitializePhoneApplication 메서드에 할당되는 방법을 보여 줍니다.


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;

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

    // Assign the custom URI mapper class to the application frame.
    RootFrame.UriMapper = new CustomMapping.CustomUriMapper();

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


실행된 페이지는 페이지 NavigationContext 개체의 QueryString 속성을 사용하여 페이지를 실행한 URI의 모든 매개 변수에 액세스할 수 있습니다. 다음 예제에서는 token 매개 변수 값을 MediaLibraryGetPictureFromToken(String) 메서드와 함께 사용하여 미디어 라이브러리에서 사진을 추출하는 방법을 보여 줍니다. 이 코드는 사진 확장성 샘플의 PhotoPage.xaml.cs 파일에서 가져온 것입니다.


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.
        BitmapImage bitmapFromPhoto = new BitmapImage();
        bitmapFromPhoto.SetSource(photoFromLibrary.GetImage());
        image1.Source = bitmapFromPhoto;
    }
}


다음 절차에서는 Windows Phone OS 7.1 의 사진 앱 선택기에서 앱을 실행하는 방법에 대해 설명합니다.

참고참고:

Windows Phone OS 7.1 앱을 디버깅할 때 앱을 다시 실행하면 첫 번째 앱 인스턴스의 디버깅 프로세스가 중단된다는 점에 유의하세요. 또한 Emulator 7.1에서는 사진 확장성 테스트가 지원되지 않습니다. 이 에뮬레이터에는 사진 허브가 없기 때문입니다.

휴대폰에서 사진 앱 선택기를 테스트하려면

  1. 휴대폰에 사진이 있는지, Windows Phone 카메라로 사진을 찍었는지 확인합니다.

  2. 휴대폰을 컴퓨터에 연결하고 컴퓨터가 휴대폰을 인식할 때까지 기다립니다.

  3. Windows Phone에서 사진 선택기 또는 카메라 캡처 작업을 사용하는 앱을 테스트하는 방법에 설명된 대로 WPConnect.exe 도구를 실행합니다. 이 도구는 휴대폰의 미디어 데이터베이스로부터 Zune 소프트웨어의 연결을 해제합니다. WPConnect.exe를 통해 휴대폰이 컴퓨터에 연결되어 있는 동안 사진 허브를 사용할 수 있습니다.

  4. 앱이 단말기에 배포되도록 설정되어 있는지 확인하고 메뉴에서 디버그를 선택한 다음 디버깅 시작을 선택합니다.

  5. 앱이 보이면 시작을 탭하여 시작 화면으로 이동합니다.

  6. 시작 화면에서 사진 앱을 탭한 다음 모두를 탭합니다. 카메라 앨범 섹션을 탭하여 사진을 찾은 다음 사진 축소판 그림을 탭하여 사진을 확장합니다.

  7. 페이지 아래쪽의 앱 바에서 점 세 개를 탭합니다. 메뉴가 나타나고 목록 아래쪽에 링크가 표시됩니다. 을 선택합니다.

  8. 페이지에서 앱 이름을 탭합니다. 이렇게 하면 방금 보던 사진의 토큰이 포함된 URI가 실행됩니다.

Microsoft는 MSDN 웹 사이트에 대한 귀하의 의견을 이해하기 위해 온라인 설문 조사를 진행하고 있습니다. 참여하도록 선택하시면 MSDN 웹 사이트에서 나가실 때 온라인 설문 조사가 표시됩니다.

참여하시겠습니까?
표시:
© 2014 Microsoft