WindowsPhone PhoneCamera - Исключение при резюме страницы
У меня странное исключение. Я использую API PhoneCamera на странице, чтобы пользователь мог сделать несколько фотографий, которые загружаются непосредственно после захвата.
Мой код:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
_mediaLibrary = new MediaLibrary();
// Initialize the camera object
_phoneCamera = new PhotoCamera(CameraType.Primary);
_phoneCamera.Initialized += CamInitialized;
_phoneCamera.AutoFocusCompleted += PhoneCamera_AutoFocusCompleted;
_phoneCamera.CaptureImageAvailable += PhoneCamera_CaptureImageAvailable;
// Display the camera feed in the UI
ViewfinderBrush.SetSource(_phoneCamera);
// Rotation for transform
ViewfinderTransform.Rotation = _phoneCamera.Orientation;
}
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
{
if (_phoneCamera != null)
{
// Cleanup
_phoneCamera.Dispose();
_phoneCamera.Initialized -= CamInitialized;
_phoneCamera.AutoFocusCompleted -= PhoneCamera_AutoFocusCompleted;
_phoneCamera.CaptureImageAvailable -= PhoneCamera_CaptureImageAvailable;
if (_cameraInizialized)
{
CameraButtons.ShutterKeyHalfPressed -= CameraButtons_ShutterKeyHalfPressed;
CameraButtons.ShutterKeyPressed -= CameraButtons_ShutterKeyPressed;
}
}
base.OnNavigatingFrom(e);
}
private void CamInitialized(object sender, CameraOperationCompletedEventArgs e)
{
if (e.Succeeded)
{
// Set flashmode
Dispatcher.BeginInvoke(() => { _phoneCamera.FlashMode = FlashMode.Auto; });
// Subscribe to hardeware-button-events
CameraButtons.ShutterKeyHalfPressed += CameraButtons_ShutterKeyHalfPressed;
CameraButtons.ShutterKeyPressed += CameraButtons_ShutterKeyPressed;
_cameraInizialized = true;
}
else
{
// Show error message
}
}
Все работает нормально, когда инициализированное событие происходит. Но я получил исключение, когда пользователь нажал кнопку "Домой" на телефоне, пока камера инициализируется. (инициализированное событие не запущено).
Когда пользователь возвращается с кнопкой "Назад", возникает следующее исключение:
[Type]:[AggregateException]
[ExceptionMessage]:[One or more errors occurred.]
[StackTrace]:[
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at Microsoft.Devices.Camera.OpenCaptureDevice()
at Microsoft.Devices.Camera.<>c__DisplayClass2.<InitializeVideoSession>b__0()]
[InnerExceptions]:[[[Type]:[InvalidOperationException]
[Message]:[The text associated with this error code could not be found.
Unable to acquire the camera. You can only use this class while in the foreground.]
Я перепробовал много других вариантов, но ничего не работает. Я не знаю, почему эта ошибка произошла. Хотя я знаю, где это происходит и в какой ситуации.
Любая помощь приветствуется. Спасибо.