エクスポート (0) 印刷
すべて展開

方法: Windows Phone でハードウェア カメラのシャッター ボタンにアクセスする

2012/02/09

Windows Phone OS 7.1 をターゲットにするカメラ アプリケーションでは、プログラムによってデバイスのハードウェア シャッター ボタンにアクセスします。このトピックでは、アプリケーションでこの機能を実装する方法を示します。これは、「方法: Windows Phone 用の基本的なカメラ アプリケーションを作成する」の続きであり、このトピックで既に基本的なカメラ プロジェクトを作成していることを前提としています。

ヒントヒント:

このトピックは、基本的なカメラのサンプルに対応しています。完全なプロジェクトをダウンロードするには、「Windows Phone のコード サンプル」を参照してください。

ハードウェア シャッター ボタンへのアクセスは、次の表に示されているように、CameraButtons クラスの一連のイベントを通じて管理されます。

イベント

説明

ShutterKeyHalfPressed

シャッター ボタンが約 800 ミリ秒間押されたままになると発生します。半押しの時間がこれよりも短い場合、このイベントはトリガーされません。

ShutterKeyPressed

シャッター ボタンが全押しを受け取ったときに発生します。

ShutterKeyReleased

シャッター ボタンから指を離したときに発生します。

これらのイベントは、写真またはビデオのキャプチャに使用できます。ビデオをキャプチャする場合は、ハードウェア シャッター ボタンを押す前に、CaptureSource.Start メソッドが呼び出されている必要があります。キャプチャ ソースが開始されていない場合、これらのイベントは発生しません。Windows Phone アプリケーションでビデオをキャプチャする詳細については、「方法: Windows Phone 用カメラ アプリケーションでビデオを記録する」を参照してください。

注注:

以前の演習では、プログラムによる PhotoCamera API へのアクセスの方法を示すために、ソフトウェア シャッターおよびオートフォーカス ボタンを使用しました。エンド ユーザーのエクスペリエンスを最適化するには、オートフォーカスとシャッターの操作のために、アプリケーションでカメラのハードウェア シャッター ボタンを使用することをお勧めします。

ここでは、これらのイベントを実装して、以下のアプリケーションの動作を実現します。

  • シャッター ボタンの全押しによって、画像をキャプチャし、メディア ライブラリに保存します。

  • シャッター ボタンの半押しによって、カメラのオートフォーカスを開始します。

  • シャッター ボタンから指を離すと、オートフォーカスが取り消されます。

注注:

このトピックは、C# 開発を基にしていますが、Visual Basic のコードも提供しています。

ハードウェア シャッター ボタンを実装するには

  1. 方法: Windows Phone 用の基本的なカメラ アプリケーションを作成する」で作成した基本的なカメラのプロジェクトを開きます。

  2. メイン ページの分離コード ファイル MainPage.xaml.cs を開き、OnNavigatedTo(NavigationEventArgs) メソッドに次のコードを追加します。

        // The event is fired when the shutter button receives a half press.
        CameraButtons.ShutterKeyHalfPressed += OnButtonHalfPress;
    
        // The event is fired when the shutter button receives a full press.
        CameraButtons.ShutterKeyPressed += OnButtonFullPress;
    
        // The event is fired when the shutter button is released.
        CameraButtons.ShutterKeyReleased += OnButtonRelease;
    
    
  3. MainPage.xaml.cs で、Dispose メソッドを呼び出した後、以下のコードを OnNavigatingFrom(NavigatingCancelEventArgs) メソッドに追加します。このコードにより、カメラに関係するメモリを解放できます。

        CameraButtons.ShutterKeyHalfPressed -= OnButtonHalfPress;
        CameraButtons.ShutterKeyPressed -= OnButtonFullPress;
        CameraButtons.ShutterKeyReleased -= OnButtonRelease;
    
    
  4. MainPage.xaml.cs で、次のコードを MainPage クラスに追加します。

            // Provide auto-focus with a half button press using the hardware shutter button.
            private void OnButtonHalfPress(object sender, EventArgs e)
            {
                if (cam != null)
                {
                    // Focus when a capture is not in progress.
                    try
                    {
                        this.Dispatcher.BeginInvoke(delegate()
                        {
                            txtDebug.Text = "Half Button Press: Auto Focus";
                        });
    
                        cam.Focus();
                    }
                    catch (Exception focusError)
                    {
                        // Cannot focus when a capture is in progress.
                        this.Dispatcher.BeginInvoke(delegate()
                        {
                            txtDebug.Text = focusError.Message;
                        });
                    }
                }
            }
    
            // Capture the image with a full button press using the hardware shutter button.
            private void OnButtonFullPress(object sender, EventArgs e)
            {
                if (cam != null)
                {
                    cam.CaptureImage();
                }
            }
    
            // Cancel the focus if the half button press is released using the hardware shutter button.
            private void OnButtonRelease(object sender, EventArgs e)
            {
    
                if (cam != null)
                {
                    cam.CancelFocus();
                }
            }
    
    

    このコードは、これらのイベント ハンドラーを使用して、PhotoCamera クラスの Focus()()()()CaptureImage()()()()、および CancelFocus()()()() メソッドを呼び出します。

    注注:

    オートフォーカスをハードウェア シャッター ボタンで有効にする場合、組み込みのカメラ エクスペリエンスに合わせて、オートフォーカスに若干の遅延が生じます。

  5. デバイスで、[デバッグ] メニューの [デバッグ開始] をクリックしてアプリケーションを実行します。

表示:
© 2015 Microsoft