【问题标题】:Windows Phone 8 Camera hangs when not in Debug/Master modeWindows Phone 8 相机在不处于调试/主模式时挂起
【发布时间】:2013-12-27 16:20:35
【问题描述】:

这是一个困扰我很多的问题。我还没有解决这个问题。

我有这个 XAML 代码,DrawingSurfaceBackgroundGrid 是 Unity 游戏,其余的是折叠相机。

<DrawingSurfaceBackgroundGrid x:Name="DrawingSurfaceBackground" Loaded="DrawingSurfaceBackground_Loaded">

        <!-- Augmented Reality -->

        <Canvas VerticalAlignment="Center" x:Name="arCameraStack" Canvas.ZIndex="1" Width="732" Height="549" HorizontalAlignment="Left" Visibility="Collapsed" Tap="viewfinderCanvas_Tap">
            <Canvas.Background>
                <VideoBrush x:Name="viewfinderBrush" />
            </Canvas.Background>
            <Image x:Name="imgTarget" Source="/Assets/Icons/camera.target.png"  VerticalAlignment="Center" HorizontalAlignment="Center" Canvas.Left="114" Canvas.Top="27"/>
        </Canvas>
</DrawingSurfaceBackgroundGrid>

这些是我的启动/停止相机功能:

        public void StartCamera(bool hasTarget)
        {
            camera = new PhotoCamera(CameraType.Primary);
            viewfinderBrush.SetSource(camera);
            Dispatcher.BeginInvoke(() =>
            {
                if (hasTarget)
                {
                    imgTarget.Visibility = Visibility.Visible;
                }
                else
                {
                    imgTarget.Visibility = Visibility.Collapsed;
                }
            });
        }

        public void StopCamera()
        {
            if (camera != null)
            {
                camera.Dispose();
                camera = null;
            }
        }

我有一个屏幕系统,可以根据你想看到的内容改变视图,有点像换页。

这在显示相机部分的页面中被调用。

public void Show()
{
    MainPage.Instance.Dispatcher.BeginInvoke(() =>
    {
        MainPage.Instance.arCameraStack.Visibility = Visibility.Visible;

    });
    MainPage.Instance.StartCamera(false);
}

当我想隐藏 Unity 部分时会调用它。

    public void Hide()
    {
        UnityApp.SetNativeResolution(0, 0);
        UnityApp.Obscure(false);
        UnityApp.Deactivate();
        MainPage.Instance.Dispatcher.BeginInvoke(() =>
        {
            MainPage.Instance.ApplicationBar.IsVisible = true;
        });
    }

当我通过 Visual Studio 构建和运行解决方案时,一切正常,但是一旦我从手机启动应用程序,而不是在 VS 的主/调试模式下,相机就会挂起。我发现当我切换页面中任何内容的可见性时,相机会更新一秒钟,然后再次挂起。

【问题讨论】:

    标签: c# windows-phone-8 camera unity3d


    【解决方案1】:

    嗯,我发现了问题所在。

    我的显示/隐藏功能现在如下所示:

    public void Hide()
        {
    
            UnityApp.Obscure(false);
            UnityApp.Deactivate();
            MainPage.Instance.Dispatcher.BeginInvoke(() =>
            {
                MainPage.Instance.DrawingSurfaceBackground.SetBackgroundContentProvider(null);
                MainPage.Instance.DrawingSurfaceBackground.SetBackgroundManipulationHandler(null);
                MainPage.Instance.HideUnityBorder.Visibility = Visibility.Visible;
                MainPage.Instance.ApplicationBar.IsVisible = true;
            });
        }
    
        public void Show()
        {
            var content = Application.Current.Host.Content;
            var width = (int)Math.Floor(content.ActualWidth * content.ScaleFactor / 100.0 + 0.5);
            var height = (int)Math.Floor(content.ActualHeight * content.ScaleFactor / 100.0 + 0.5);
            UnityApp.SetNativeResolution(width, height);
            UnityApp.UnObscure();
            MainPage.Instance.Dispatcher.BeginInvoke(() =>
            {
                MainPage.Instance.DrawingSurfaceBackground.SetBackgroundContentProvider(UnityApp.GetBackgroundContentProvider());
                MainPage.Instance.DrawingSurfaceBackground.SetBackgroundManipulationHandler(UnityApp.GetManipulationHandler());
                MainPage.Instance.HideUnityBorder.Visibility = Visibility.Collapsed;
                MainPage.Instance.ApplicationBar.IsVisible = false;
            });
        }
    

    主要问题在于 DrawingSurfaceBackground.SetBackgroundContentProviderDrawingSurfaceBackground.SetBackgroundManiuplationHandler 函数。 现在 Unity 部分和 WP 部分之间的切换很容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 2013-01-12
      • 2011-07-21
      • 2012-11-25
      相关资源
      最近更新 更多