【发布时间】: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