-3

我使用 Windows Phone 8 中的 PhotoCaptureDevice 开发了相机应用程序。我可以在诺基亚 820 中运行此应用程序。但我没有 920 设备来测试此应用程序。但是我的一位用户说,这个应用程序不能在诺基亚 920 设备上运行。应该显示相机取景器的 VideoBrush 是空白的。你能请任何人帮助我吗?如果可能的话,请您在 920 设备上进行测试。

我在 InitializeCamera 中使用的确切代码片段

private static async Task InitializeCamera()
        {
            PhotoCaptureDevice d = null;

            try
            {
                Windows.Foundation.Size initialResolution = new Windows.Foundation.Size(640, 480);
                Windows.Foundation.Size previewResolution = new Windows.Foundation.Size(640, 480);
                Windows.Foundation.Size captureResolution = new Windows.Foundation.Size(640, 480);


                if (PhotoCaptureDevice.AvailableSensorLocations.Contains(CameraSensorLocation.Back))
                {
                    d = await PhotoCaptureDevice.OpenAsync(CameraSensorLocation.Back, initialResolution);

                    await d.SetPreviewResolutionAsync(previewResolution);
                    await d.SetCaptureResolutionAsync(captureResolution);

                    d.SetProperty(KnownCameraGeneralProperties.EncodeWithOrientation,
                                  d.SensorLocation == CameraSensorLocation.Back ?
                                  d.SensorRotationInDegrees : -d.SensorRotationInDegrees);
                    _device = d;
                }
            }
            catch (Exception e) { Debug.WriteLine(e.Message); }

        }
4

2 回答 2

1

我将你的代码发布到一个项目中,它在我的 Lumia 920 上运行良好。我不确定你是否在代码的另一部分中有这个,但我唯一做的就是在 "_device = d;" 线:

                   ViewfinderBrush.SetSource(_device);

使用这样的 XAML:

        <Rectangle x:Name="Viewfinder">
            <Rectangle.Fill>
                <VideoBrush x:Name="ViewfinderBrush"  />
            </Rectangle.Fill>
        </Rectangle>

需要注意的一点是 SetSource 必须在设备初始化之后(即 OpenAsync 之后)。如果你之前设置它,它将不起作用。

于 2013-01-16T22:24:25.167 回答
0

有一个 HTC8X 或者我会帮助你。你为什么不直接向诺基亚请求借用 920? http://blog.dvlup.com/2012/11/20/three-ways-dvlup-can-get-you-a-developer-handset/。你可以保留它大约两个星期。

于 2013-01-09T02:39:27.960 回答