我在我的应用程序中使用以下功能使用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))"
任何人都可以帮我吗?
答案 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);
希望它有所帮助。 干杯:)