对于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。我发现的一切都是先进的。
答案 0 :(得分:1)
我想说正确的清洁 MediaCapture 是拍摄照片/视频的最重要部分MSDN说:
注意在Windows Phone上,音乐和媒体应用应该清除Suspending事件处理程序中的MediaCapture对象和相关资源,并在Resuming事件处理程序中重新创建它们。
当您不清理 MediaCapture 元素时会发生什么? - 在我的情况下,当我尝试过时,当我使用 MediaCapture (例如默认照片应用)运行其他应用程序时,我的手机会挂起。
回到你的问题 - App.xaml.cs 和 VideoREc.xaml 之间的连接 - 查看所有变量(本例中的属性)MediaCapture
,PreviewElement
,IsRecording
和IsPreviewing
在课程App
中定义 - 它们是为整个应用定义的。我怀疑 VideoRec.xaml 仅使用 App.xaml.cs 中定义的那些属性的引用。
您还应该知道,为整个应用程序定义了暂停 / 恢复事件,并且在发生此类事件时都会触发它们。什么时候发生? - 在您离开应用程序之后(仅查看调试模式 - 连接到计算机时它的工作方式略有不同)。有关lifecycle events at MSDN的更多信息。这些事件是清理/恢复 MediaCapture 资源的最佳事件。