내보내기(0) 인쇄
모두 확장

방법: Windows Phone용 응용프로그램에서 카메라 플래시 사용

2012-02-09

Windows Phone OS 7.1 을 사용하면 단말기 카메라에 프로그래밍 방식으로 액세스할 수 있습니다. 이 항목에서는 카메라 플래시 모드를 프로그래밍 방식으로 설정하는 방법에 대해 설명합니다. 이 내용은 방법: Windows Phone용 기본 카메라 응용프로그램 만들기에서 연결되며 해당 항목에서 기본 카메라 프로젝트를 만들었다는 가정 하에 작성되었습니다.

팁팁:

이 항목은 기본 카메라 샘플에 해당합니다. 전체 프로젝트를 다운로드하려면 Windows Phone용 코드 샘플을 참조하십시오.

Windows Phone 은 FlashMode 열거형에서 다음 플래시 모드를 지원합니다.

플래시 모드

설명

Off

카메라 플래시를 사용할 수 없습니다.

On

카메라 플래시를 사용할 수 있습니다.

RedEyeReduction

적목 현상 감소 모드가 활성화되어 있습니다.

Auto

자동 모드에서 카메라 플래시가 사용됩니다.

중요중요:

모든 단말기에서 모든 플래시 모드가 지원되는 것은 아니므로 플래시 모드를 사용하기 전에 IsFlashModeSupported(FlashMode) 메서드를 호출하여 해당 모드의 사용이 가능한지 여부를 확인해야 합니다.

이 섹션에서는 응용프로그램에서 플래시 모드를 구현하는 데 필요한 코드를 제공합니다.

참고참고:

이 항목은 C# 개발을 기준으로 하지만 Visual Basic 코드도 제공됩니다. 

카메라 플래시를 구현하려면

  1. 방법: Windows Phone용 기본 카메라 응용프로그램 만들기에서 만든 기본 카메라 프로젝트를 엽니다.

  2. 기본 페이지 XAML 파일인 MainPage.xaml에서 StackPanel 요소(ShutterButton라는 Button 요소 아래)에 다음 코드를 추가합니다. 이 코드는 카메라 플래시에 대한 버튼입니다.

    <Button Name="FlashButton" Content="Fl:TBD" Click="changeFlash_Clicked" FontSize="26" FontWeight="ExtraBold" Height="75"/>
    
    
  3. 기본 페이지에 대한 코드 숨김 파일인 MainPage.xaml.cs를 열고 MainPage 클래스 생성자 위에 다음 변수 선언을 추가합니다.

        // Holds current flash mode.
        private string currentFlashMode;
    
    
  4. MainPage.xaml.cs에서 OnNavigatedTo 메서드(Disable UI 주석 바로 아래)에 다음 코드를 추가합니다.

    FlashButton.IsEnabled = false;
    

    이 코드는 플래시 버튼을 사용하지 않도록 설정합니다. 단말기에서 카메라를 사용할 수 없을 때 이 코드가 사용됩니다.

  5. MainPage.xaml.cs에서 cam_Initialized 메서드(txtDebug 문 바로 아래)에 다음 코드를 추가합니다.

        // Set flash button text.
        FlashButton.Content = "Fl:" + cam.FlashMode.ToString();
    
    

    이 코드는 FlashButton 버튼에 현재 플래시 모드를 표시합니다.

  6. MainPage.xaml.cs에서 다음 코드를 MainPage 클래스에 추가합니다. 이 코드는 버튼을 누를 때마다 다른 플래시 모드로 전환하여 changeFlash_Clicked에 대한 이벤트 처리기를 구현합니다.

        // Activate a flash mode.
        // Cycle through flash mode options when the flash button is pressed.
        private void changeFlash_Clicked(object sender, RoutedEventArgs e)
        {
    
            switch (cam.FlashMode)
            {
                case FlashMode.Off:
                    if (cam.IsFlashModeSupported(FlashMode.On))
                    {
                        // Specify that flash should be used.
                        cam.FlashMode = FlashMode.On;
                        FlashButton.Content = "Fl:On";
                        currentFlashMode = "Flash mode: On";
                    }
                    break;
                case FlashMode.On:
                    if (cam.IsFlashModeSupported(FlashMode.RedEyeReduction))
                    {
                        // Specify that the red-eye reduction flash should be used.
                        cam.FlashMode = FlashMode.RedEyeReduction;
                        FlashButton.Content = "Fl:RER";
                        currentFlashMode = "Flash mode: RedEyeReduction";
                    }
                    else if (cam.IsFlashModeSupported(FlashMode.Auto))
                    {
                        // If red-eye reduction is not supported, specify automatic mode.
                        cam.FlashMode = FlashMode.Auto;
                        FlashButton.Content = "Fl:Auto";
                        currentFlashMode = "Flash mode: Auto";
                    }
                    else 
                    {
                        // If automatic is not supported, specify that no flash should be used.
                        cam.FlashMode = FlashMode.Off;
                        FlashButton.Content = "Fl:Off";
                        currentFlashMode = "Flash mode: Off";
                    }
                    break;
                case FlashMode.RedEyeReduction:
                    if (cam.IsFlashModeSupported(FlashMode.Auto))
                    {
                        // Specify that the flash should be used in the automatic mode.
                        cam.FlashMode = FlashMode.Auto;
                        FlashButton.Content = "Fl:Auto";
                        currentFlashMode = "Flash mode: Auto";
                    }
                    else
                    {
                        // If automatic is not supported, specify that no flash should be used.
                        cam.FlashMode = FlashMode.Off;
                        FlashButton.Content = "Fl:Off";
                        currentFlashMode = "Flash mode: Off";
                    }
                    break;
                case FlashMode.Auto:
                    if (cam.IsFlashModeSupported(FlashMode.Off))
                    {
                        // Specify that no flash should be used.
                        cam.FlashMode = FlashMode.Off;
                        FlashButton.Content = "Fl:Off";
                        currentFlashMode = "Flash mode: Off";
                    }
                    break;
            }
    
            // Display current flash mode.
            this.Dispatcher.BeginInvoke(delegate()
            {
                txtDebug.Text = currentFlashMode;
            });
        }
    
    
  7. 단말기에서 디버그 | 디버깅 시작 메뉴 명령을 선택하여 응용프로그램을 실행합니다.

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

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