2014-01-12 4 views
0

Я хочу убедиться, что когда пользователь переходит от конкретной страницы, камера удаляется.Выключение камеры в методе OnNavigatedFrom() в WP8

Чтобы включить камеру, я звоню await AudioVideoCaptureDevice.OpenAsync(). Если, однако, метод OnNavigatedFrom() вызывается до завершения метода OpenAsync(), у меня нет возможности избавиться от камеры, и он останется включенным.

Каков правильный способ решения этой проблемы?

ответ

0

Я хотел бы использовать синглтон, или статический класс менеджера для такого рода операций, так что вы можете назвать этот класс, чтобы инициализировать камеру и закрыть его, когда вы хотите , Тогда вы можете сохранить флаг в этом классе, который вы используете, чтобы сказать, была ли камера отменена или что-то в этом роде, так что она может проверяться после метода асинхронизации, если камера была отменена.

Надеюсь, это поможет.

0

Отсюда: https://github.com/slodge/BallControl/blob/master/Cirrious.Sphero.WorkBench/Cirrious.Sphero.WorkBench.UI.WindowsPhone/Views/SpheroView.xaml.cs

private AudioVideoCaptureDevice _cam; 
... 
    protected override void OnNavigatingFrom(NavigatingCancelEventArgs e) 
     { 
      _isNavigatingFrom = true; 
      if (CameraIsRecording) 
      { 
/* 
var task = DoStopRecording(); 
task.Start(); 
task.Wait(); 
*/ 
      } 
      TheMoveJoystick.StopJoystick(); 
      ViewModel.AccelMovement.EnsureAccelerometerIsOnCommand.Execute(false); 
      ViewModel.Speech.EnsureSpeechIsOn.Execute(false); 
      ViewModel.AccelMovement.PropertyChanged -= AccelMovementOnPropertyChanged; 
      _hackTimer.Stop(); 
      if (_cam != null) 
      { 
       _cam.Dispose(); 
       _cam = null; 
      } 
      _isNavigatingFrom = false; 
      base.OnNavigatingFrom(e); 
     } 
+0

Этот код предполагает, что OpenAsync() выполнен, а затем выполняет 'await _cam.StopRecordingAsync()' в DoStopRecording() – mpium

Смежные вопросы