Правильная очистка ресурсов MediaCapture

1

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

Я использовал эти инструкции, и он работает в основном... 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();
}

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

Теги:
xaml
windows-phone-8.1

1 ответ

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.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню