C# 在Visual Studio 13 for Windows Phone 8.1上开发简单的摄像头应用程序时激活主摄像头?

C# 在Visual Studio 13 for Windows Phone 8.1上开发简单的摄像头应用程序时激活主摄像头?,c#,windows-phone-8,windows-phone,C#,Windows Phone 8,Windows Phone,我是一名初学者,也是一名刚刚被介绍到WP应用程序开发的学生。至于我的第一个项目,我决定构建一个功能有限的非常简单的摄像头应用程序。到目前为止,我已经准备好了GUI,我的问题是,如何激活主摄像头或在前摄像头和主摄像头之间切换?这是我在OnNavigatedTo部分的代码,该部分打开了手机的前摄像头 protected async override void OnNavigatedTo(NavigationEventArgs e) { Windows.Phone.UI.Input.Hardw

我是一名初学者,也是一名刚刚被介绍到WP应用程序开发的学生。至于我的第一个项目,我决定构建一个功能有限的非常简单的摄像头应用程序。到目前为止,我已经准备好了GUI,我的问题是,如何激活主摄像头或在前摄像头和主摄像头之间切换?这是我在OnNavigatedTo部分的代码,该部分打开了手机的前摄像头

protected async override void OnNavigatedTo(NavigationEventArgs e)
{
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += BackButtonPress;

    media = new MediaCapture();

    await media.InitializeAsync();

    ////rotation

    media.SetPreviewRotation(VideoRotation.Clockwise270Degrees);

    // VideoRotation previewRotation = media.GetPreviewRotation();

    ////start Capture preview

    ////capturePreview is a CaptureElement defined in XAML.

    this.capPrev.Source = media;

    await media.StartPreviewAsync();
}
我可能缺少一行我不知道的简单代码。我的应用程序现在启动的是前置摄像头,而不是主摄像头。我应该怎么做才能切换到主摄像头?我已经在appbar上准备好了切换按钮,它目前什么都不做。
谢谢

欢迎来到Stackoverflow

首先,我没有得到你在代码中写的东西

这是为您的要求准备的(&A) 但如果您面临任何问题,请说明您的问题


祝您好运

您可以使用下面给定的行枚举相机

var set = new MediaCaptureInitializationSettings();
var devices = await DeviceInformation.FindAllAsync(DeviceClass.VideoCapture);
set.VideoDeviceId = devices[0].Id;   // You should choose any value from devices collection

media = new MediaCapture();
await media.InitializeAsync(set);
别忘了在OnNavigatedFrom事件中处置相机


很抱歉代码集不完整,我的意思是让读者知道,这就是我在OnNavigatedTo部分中写的,即应用程序在加载页面时所做的操作,而这组代码在加载时会激活前置摄像头。正如我所说的,我希望在应用程序加载时尝试激活主摄像头。感谢您的回复和链接,我正在使用Visual Studio Express 2013,我找到的大多数示例和教程都是在VS 2012上,这有点不同,让我更加困惑。请看我在回复中发布的示例:很抱歉,我没有阅读更新的评论就回复了您。再次感谢您,我正在浏览示例代码,并将询问我是否偶然发现了一些我不知道的内容。谢谢您的回复。我的GUI上有一个切换摄像头按钮,我需要生成一个点击事件,该事件可以切换摄像头,前后切换,反之亦然。至于set.VideoDeviceId=devices[0].Id;//您应该从设备集合中选择任何值。我是否将0替换为2?还是只有一个?而且,这可能很愚蠢,但为什么应用程序启动时使用的是前置摄像头而不是主摄像头?有没有一行我遗漏了?谢谢不,你没有遗漏任何代码。前摄像头是默认设置。您需要检查devices变量的值。我认为它将有两个值,所以第0个值将用于前摄像头,另一个用于后摄像头。要切换相机,你必须用相应的设置重新初始化相机。一旦我写了,这可能会有点帮助。另外请注意,将此代码放在OnNavigatedTo中不是一个好主意。谢谢,这篇文章很好!告诉我ffc是默认的。我们初学者需要这些小而重要的信息,呵呵。无论如何,我使用了OnNavigatedTo上的代码,因为当用户按钮单击/轻触另一个页面(主页)上的按钮时,我的相机会启动。为了让您更清楚,用户点击主页上的“捕获照片”按钮,相机将在其他页面启动,因此我认为将其添加到onNavigatedTo将直接启动相机。还有别的办法吗?在这里如果你为WinRT工作,你还必须处理暂停/恢复。解决了我的问题,谢谢@Romasz
protected async override void OnNavigatedFrom(NavigationEventArgs e)
{
    await _camCapture.StopPreviewAsync();
    media.Dispose();
}