情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のカメラ キャプチャ タスクを使用する方法

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

ユーザーはカメラ キャプチャ タスクを使用し、組み込みのカメラ アプリケーションを使用してアプリケーションから写真を撮ることができます。ユーザーがタスクを完了すると、イベントが発生し、その結果、イベント ハンドラーが写真を受け取ります。Windows Phone 8 では、ユーザーがカメラ キャプチャ タスクで撮影された写真を受け入れる場合、写真は自動的に電話のカメラロールに保存されます。Windows Phone の旧バージョンでは、写真は自動的に保存されません。

重要:重要:

CameraCaptureTask API によってキャプチャされた写真は、常に電話のカメラ ロールにコピーされます。ユーザーが電話を自動アップロードに設定している場合、これらの画像は OneDrive にコピーされ、アプリで想定する閲覧者より広範な閲覧者と共有される可能性があります。このため、プライベート情報を含む一時的なイメージなど、明示的に共有やアップロードをしたくない画像をアプリでキャプチャする場合は、CameraCaptureTask API を使用しないでください。代わりに、PhotoCamera API を使用して、独自のカメラ UI を実装してください。カメラ アプリの作成の詳細については、「Windows Phone 8 の基本カメラ アプリを作成する方法」を参照してください。

セレクターを使用することによって、Windows Phone プラットフォーム全体で一貫性のあるユーザー エクスペリエンスを提供できます。詳細については、「Windows Phone 8 のランチャーとセレクター」を参照してください。

カメラ キャプチャ タスクに割り当てられたメモリはアプリケーション メモリの合計使用量に含まれません。これにより、写真をキャプチャするためにアプリケーションが使用するメモリの量を最小限に抑えることができます。これは、アプリケーションが 低メモリ デバイス 上で実行されるときに特に重要です。詳細については、「低メモリの電話向けの Windows Phone 8 用のアプリ開発」を参照してください。

エミュレーターを使用してカメラ キャプチャ タスクをテストする場合は、このタスクがアクティブな間に F7 キーを押して写真を撮ります。

カメラ キャプチャ タスクを使用するには

  1. 次のステートメントをコードに追加します。

    Imports Microsoft.Phone.Tasks
    
  2. タスク オブジェクトを宣言します。ページ スコープが必要であるため、ページ内でコンストラクターの前に宣言します。

    Dim cameraCaptureTask As CameraCaptureTask
    
  3. 次のコードをページ コンストラクターに追加します。このコードはタスク オブジェクトを初期化し、ユーザーがタスクを完了した後に実行するメソッドを識別します。

    cameraCaptureTask = new CameraCaptureTask()
    AddHandler cameraCaptureTask.Completed, AddressOf cameraCaptureTask_Completed
    
  4. ボタンのクリック イベントなど、アプリケーションの必要な場所に次のコードを追加します。この手順をテストするには、ページのコンストラクターにこのコードを配置します。これはタスクを起動するコードです。

    
    
    cameraCaptureTask.Show()
    
    
    
    
    
    
    
  5. 完了したイベント ハンドラーのコードをページに追加します。このコードは、ユーザーがタスクを完了した後に実行されます。結果は、イメージ データを格納するストリームを公開する PhotoResult オブジェクトです。写真イメージのストリームを操作する方法については、「Windows Phone 8 のカメラと写真」を参照してください。

    Private Sub cameraCaptureTask_Completed(sender As Object, e As PhotoResult)
    
        If e.TaskResult = TaskResult.OK
    
            MessageBox.Show(e.ChosenPhoto.Length.ToString())
    
            'Code to display the photo on the page in an image control named myImage.
            'Dim bmp as System.Windows.Media.Imaging.BitmapImage = new System.Windows.Media.Imaging.BitmapImage()
            'bmp.SetSource(e.ChosenPhoto)
            'myImage.Source = bmp
        End If
    End Sub
    

表示: