4.2初始化MediaCaptureSettings属性
MediaCaptureSettings属性为MediaCapture对象提供配置设置。我们可以使用MediaCaptureInitializationSettings类初始化这些属性。
4.3初始化、创建MediaCapture对象
MediaCapture对象包含捕获视频所需要的方法和异步操作。使用MediaCapture.InitializeAsync方法可以初始化MediaCapture对象
4.4创建编码配置文件
编码配置文件中包含了如何对目标文件进行编码的所有设置。MediaProperties API提供了几个用于创建MediaEncodingProfile对象的选项。
在Windows.Media.MediaProperties命名空间中提供了一组预定义的编码配置文件:
AAC音频
MP3音频
Windows Media音频(WMA)
MP4视频
Windows Media视频(WMV)
4.5开始、停止录制
先创建一个文件,将视频捕获到文件中。然后调用 StartRecordToStorageFileAsync方法,并传入MediaEncodingProfile类和目标存储文件中。要停止捕获视频,我们可以调用 StopRecordAsync的方法停止视频的捕获。
4.6拍照的异步方法
CameraCaptureUI dialog = new CameraCaptureUI();
Size aspectRatio = new Size(16, 9);
dialog.PhotoSettings.CroppedAspectRatio = aspectRatio;
StorageFile file = await dialog.CaptureFileAsync(CameraCaptureUIMode.Photo);
if (file != null)
{
BitmapImage bitmapImage = new BitmapImage();
using (IRandomAccessStream fileStream = await file.OpenAsync(FileAccessMode.Read))
{
bitmapImage.SetSource(fileStream);
}
CapturedPhoto.Source = bitmapImage;
ResetButton.Visibility = Visibility.Visible;
appSettings[photoKey] = file.Path;
}
else
{
rootPage.NotifyUser("No photo captured.", NotifyType.StatusMessage);
}
从上面代码中不难看出,由于前面加了await,所以下面的代码在上面的方法执行完之后才会执行。看上去像是同步的,其实在编译的时候,后面的代码是放到回调中的,实际上还是异步的。由于异步在执行过程中需要一个回调方法,执行起来相对麻烦。Win8为了给用户良好的体验,微软在方法执行时,凡是有可能超过50毫秒的方法,全部只提供异步方法,不提供同步方法,从而给用户带来流畅的体验。 基于Metro的应用软件设计与实现(4):http://www.751com.cn/jisuanji/lunwen_2701.html