我正在使用PhotoCamera
API 构建一个二维码扫描页面(使用 ZXing)。但是,此页面只是应用程序的一小部分,因此并不总是显示。因此,应用程序在此页面和其他一些具有公共控件的页面之间导航。
问题是,有时,在扫描后,整个应用程序会在没有真正原因的情况下减慢到 30fps 而不是 60fps。我怀疑相机仍在后台运行,帧同步将应用程序锁定为 30fps,这是我的问题:如何正确处理使用PhotoCamera
API 的页面?
我的 XAML:
<Grid Background="Black">
<ProgressBar x:Name="PBar" IsIndeterminate="True" VerticalAlignment="Center" />
<Rectangle x:Name="ScanRect">
<Rectangle.Fill>
<VideoBrush x:Name="ScanVideoBrush" />
</Rectangle.Fill>
</Rectangle>
</Grid>
我的 C# 停止扫描过程:
private void StopScan() {
if (analysisTimer != null) {
analysisTimer.Stop();
analysisTimer = null;
}
if (focusTimer != null) {
focusTimer.Stop();
focusTimer = null;
}
if (camera != null) {
camera.Dispose();
camera.Initialized -= OnCameraInitialized;
camera = null;
}
// Following two lines are a try to dispose stuff
// as much as possible, but the app still lags
// sometimes after a scan...
ScanVideoBrush.SetSource(new MediaElement());
ScanRect.Fill = new SolidColorBrush(Colors.Black);
}
注意:我正在 Lumia 920 上测试该应用程序。