2014-11-10 4 views
1

Для приложения Windows Phone 8.1 мне нужно записать видео.Правильно очистите ресурсы MediaCapture

Я использовал эти инструкции, и он работает в основном ... http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh868171.aspx

... но я не получаю очистки от части в App.xaml.cs

public MediaCapture MediaCapture { get; set; } 
public CaptureElement PreviewElement { get; set; } 
public bool IsRecording { get; set; } 
public bool IsPreviewing { get; set; } 

public async Task CleanupCaptureResources() 
{ 
    if (IsRecording && MediaCapture != null) 
    { 
     await MediaCapture.StopRecordAsync(); 
     IsRecording = false; 
    } 
    if (IsPreviewing && MediaCapture != null) 
    { 
     await MediaCapture.StopPreviewAsync(); 
     IsPreviewing = false; 
    } 

    if (MediaCapture != null) 
    { 
     if (PreviewElement != null) 
     { 
      PreviewElement.Source = null; 
     } 
     MediaCapture.Dispose(); 
    } 
} 

private async void OnSuspending(object sender, SuspendingEventArgs e) 
{ 
    var deferral = e.SuspendingOperation.GetDeferral(); 

    //cleanup camera resources 
    await CleanupCaptureResources(); 

    deferral.Complete(); 
} 

Я не» t получить, как должно работать соединение между App.xaml.cs и VideoRec.xaml (перед элементом предварительного просмотра). Это, наверное, очень простая вещь ... Я очень благодарен за каждый намек или ссылку на учебник для новичков, как вообще обращаться с MediaCapture. Все, что я нашел, для продвинутых.

ответ

1

Я хотел бы сказать, что надлежащая очистка MediaCapture является наиболее важной частью takieng фото/видео также MSDN говорит:

Примечание В Windows Phone, музыки и медиа-приложений должны очистить объект MediaCapture и связанных ресурсов в обработчике событий Suspending и воссоздать их в обработчике событий Resuming.

Что происходит, когда вы не убираете свой MediaCapture элемент? - в моем случае, когда я пытался, мой телефон зависал, когда я запускал другое приложение, используя MediaCapture (например, приложение по умолчанию для фотографий).

Возвращаясь к вашему вопросу - связь между App.xaml.cs и VideoREc.xaml - посмотреть, что все переменные (свойства в данном случае) MediaCapture, PreviewElement, IsRecording и IsPreviewing определены в классе App - они определены для всего приложения. Я подозреваю, что VideoRec.xaml использует только ссылку тех свойств, которые определены в App.xaml.cs.

Вы также должны знать, что Приостановка/Резюмируя события определяются для всего приложения, и все они уволены, когда происходит такое событие. Когда это происходит? - сразу после перехода от вашего приложения (смотрите только Режим отладки - при подключении к компьютеру он мало чем отличается). Подробнее о lifecycle events at MSDN. Эти события являются лучшими для очистки/восстановления MediaCapture ресурсов.