public partial class TakePhotoPage
{
private MediaCapture _mediaCapture;
private bool _isPreviewing;
private DisplayRequest _displayRequest;
private async Task StartPreviewAsync()
{
try
{
_mediaCapture = new MediaCapture();
await _mediaCapture.InitializeAsync();
PreviewControl.Source = _mediaCapture;
await _mediaCapture.StartPreviewAsync();
_isPreviewing = true;
_displayRequest = new DisplayRequest();
_displayRequest.RequestActive();
DisplayInformation.AutoRotationPreferences = DisplayOrientations.PortraitFlipped;
// 解決手機上的旋轉問題
SimpleOrientationSensor sensor = SimpleOrientationSensor.GetDefault();
if (sensor == null)
{
return;
}
sensor.OrientationChanged += (s, arg) =>
{
switch (arg.Orientation)
{
case SimpleOrientation.Rotated90DegreesCounterclockwise:
_mediaCapture.SetPreviewRotation(VideoRotation.None);
break;
case SimpleOrientation.Rotated180DegreesCounterclockwise:
case SimpleOrientation.Rotated270DegreesCounterclockwise:
_mediaCapture.SetPreviewRotation(VideoRotation.Clockwise180Degrees);
break;
default:
_mediaCapture.SetPreviewRotation(VideoRotation.Clockwise90Degrees);
break;
}
};
}
catch (UnauthorizedAccessException)
{
// This will be thrown if the user denied access to the camera in privacy settings
var messageDialog = new MessageDialog("The app was denied access to the camera");
await messageDialog.ShowAsync();
}
catch (Exception ex)
{
var messageDialog = new MessageDialog("MediaCapture initialization failed. {0}", ex.Message);
await messageDialog.ShowAsync();
}
}
private async Task CleanupCameraAsync()
{
if (_mediaCapture == null)
{
return;
}
if (_isPreviewing)
{
await _mediaCapture.StopPreviewAsync();
}
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
PreviewControl.Source = null;
if (_displayRequest == null)
{
return;
}
_displayRequest.RequestRelease();
});
_mediaCapture.Dispose();
_mediaCapture = null;
}
}
參考資料:
https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/simple-camera-preview-access
http://stackoverflow.com/questions/27109817/how-to-rotate-camera-view-in-captureelement
文章標籤
全站熱搜
