Windows应用商店App MediaCapture模拟器崩溃

时间:2013-04-15 16:54:17

标签: c# windows-8 windows-store-apps

我在我的应用程序中使用以下功能使用MediaCapture类捕获照片并将其复制到剪贴板:

        async private void UseCamera()
        {
        var _ImageFormat = ImageEncodingProperties.CreatePng();
        var _fileStream = new InMemoryRandomAccessStream();

        try
        {
            await _mediaCapture.InitializeAsync();
        }

        catch (Exception e)
        {
            new Windows.UI.Popups.MessageDialog(e.Message).ShowAsync();
        }

        try
        {
            await _mediaCapture.CapturePhotoToStreamAsync(_ImageFormat, _fileStream);
        }

        catch (Exception e)
        {
            new Windows.UI.Popups.MessageDialog(e.Message).ShowAsync();
        }

        var _streamRef = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromStream(_fileStream);
        _dataPackage.SetBitmap(_streamRef);


        Clipboard.SetContent(_dataPackage);
        Clipboard.Flush();

    }

应用程序在我的本地计算机上正常运行。但是当我尝试在模拟器上运行它时,我收到了这个错误:

"类型' System.UnauthorizedAccessException'的例外情况发生在SensorGridCamera.exe中但未在用户代码中处理

其他信息:访问被拒绝。 (HRESULT异常:0x80070005(E_ACCESSDENIED))"

任何人都可以帮我吗?

2 个答案:

答案 0 :(得分:1)

听起来这是一个权限问题,因为管理员应该修复它。将Application Manifest添加到项目中。然后将<requestedExecutionLevel level="asInvoker" uiAccess="false" />更改为<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />这将强制您的应用程序在运行时请求以管理员身份运行。

答案 1 :(得分:1)

好的,所以我找到了这个对我有用的东西:

诀窍是在await _mediaCapture.InitializeAsync()中传递MediaCaptureInitializationSettings对象;方法作为参数,在你这样做之前,将对象的PhotoCaptureSource属性设置为VideoPreview并瞧!

            MediaCaptureInitializationSettings _cameraSettings1 = new MediaCaptureInitializationSettings();
            _cameraSettings1.PhotoCaptureSource = PhotoCaptureSource.VideoPreview;
            await _mediaCapture.InitializeAsync(_cameraSettings1);

希望它有所帮助。 干杯:)

相关问题