(この記事はWindows 8 RP、VisualStudio2012RCで確認されています)
Metroスタイルアプリケーションでカメラを起動して動画を撮影、任意の場所に保存する方法を紹介します。
カメラを利用するのでPackage.appxamanifestファイルを開いてカメラの利用を宣言します。
カメラの起動にはCameraCaptureUIクラスを利用します。
// ダイアログ生成 CameraCaptureUI dialog = new CameraCaptureUI(); // 選べるフォーマットはMP4とWMV dialog.VideoSettings.Format = CameraCaptureUIVideoFormat.Mp4; // ビデオモードでカメラ起動 StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Video);
カメラ起動時に自動でカメラのアクセスへの許可を求めるダイアログが表示されます。
ここから先はOSに制御が移り、アプリケーションはStorageFile型で撮影したファイルを受け取るまで待機します(上記サンプルコードの最終行)。
カメラが起動します。
画面クリックで撮影を開始します。
撮影後プレビューを確認、OKならOKボタンを押します。
プログラムに制御が戻ってきますので、返ってきたFileStorage型の変数の中身を確認します。
キャンセルされ場合はnullが渡されますので、nullではない場合にファイルの保存場所を確認する処理に移ることにします。
if (file != null) { FileSavePicker savePicker = new FileSavePicker(); savePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary; savePicker.FileTypeChoices.Add("mp4 movie", new List<string>() { ".mp4" }); savePicker.SuggestedFileName = "New Document"; StorageFile save_file = await savePicker.PickSaveFileAsync(); if (save_file != null) { await file.MoveAndReplaceAsync(save_file); }
FileSavePickerでユーザーにファイルの保存先を選択してもらいます。
ファイルの保存場所の選択画面(下画像)から再び制御はアプリケーションを離れ、保存先ファイルを表すStorageFile型の変数を受け取ります。
最後はカメラで撮影したファイルを、保存先ファイルにMoveAndReplaceAsyncメソッドで移動して完了です。
ファイルが保存され、再生も可能です。
Please give us your valuable comment