基于Metro的应用软件设计与实现(4)
时间:2017-02-09 10:58 来源:毕业论文 作者:毕业论文 点击:次
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毫秒的方法,全部只提供异步方法,不提供同步方法,从而给用户带来流畅的体验。 (责任编辑:qin) |