基于Metro的应用软件设计与实现(4)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

基于Metro的应用软件设计与实现(4)


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)