Для приложения 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. Все, что я нашел, для продвинутых.
Я бы сказал, что надлежащая очистка 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.