作为我正在开发的应用程序的一部分,我希望能够在使用前置摄像头或后置摄像头之间进行切换,但从我的搜索和尝试中,我无法让它使用前置摄像头工作。
进行扫描的扫描仪视图是来自 ZXing.Net.Mobile.Forms 的名为 ZXingScannerView 的视图,在我的 xaml 中定义如下,以及应该进行相机翻转的按钮。
<elements:AdvancedTabbedPage
...
xmlns:elements="clr-namespace:Wolf.Utility.Main.Xamarin.Elements;assembly=Wolf.Utility.Main"
xmlns:forms="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms">
...
<ContentPage>
<ContentPage.ToolbarItems>
<ToolbarItem Text="{x:Static resources:AppResources.CameraFlipText}" x:Name="CameraFlipButton" Clicked="CameraFlipButton_OnClicked"/>
</ContentPage.ToolbarItems>
<ContentPage.Content>
...
<forms:ZXingScannerView x:Name="ScannerView" HeightRequest="200" IsAnalyzing="False" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" IsVisible="False" IsScanning="True"/>
...
</ContentPage.Content>
</ContentPage>
按钮可以在下图的右上角看到,而扫描仪视图仅在扫描打开时可见,它不在图像上。
单击该按钮应在使用前置和后置摄像头之间切换,前置摄像头为默认设置。但是,单击该按钮似乎没有做任何事情,然后写入我的日志。按钮的 Clicked 事件代码如下所示。
...
private void CameraFlipButton_OnClicked(object sender, EventArgs e)
{
Logging.Log(LogType.Information, "Flipping Camera...");
Config.DefaultOptions.UseFrontCameraIfAvailable = !Config.DefaultOptions.UseFrontCameraIfAvailable;
Config.CustomOptions.UseFrontCameraIfAvailable = !Config.CustomOptions.UseFrontCameraIfAvailable;
if (!ScanningToggle.IsToggled) return;
Logging.Log(LogType.Information, "Restarting Scanning...");
ScanningToggle.IsToggled = false;
ScanningToggle.IsToggled = true;
}
上面代码中提到的选项是这样定义的,在我的 Config 类中。在我的 Config 类的 Init 方法中设置了名为 CustomOptions 的附加值,但这些值与这个问题无关。
public class Config
{
...
public static MobileBarcodeScanningOptions CustomOptions = new MobileBarcodeScanningOptions() { UseFrontCameraIfAvailable = true };
public static MobileBarcodeScanningOptions DefaultOptions = new MobileBarcodeScanningOptions() { UseFrontCameraIfAvailable = true };
...
}
我的扫描仪将使用的选项始终在这两者之间进行选择,具体取决于设置中的一些用户输入。
试图让它工作我也试图......
在扫描运行时反转值 UseFrontCameraIfAvailable
反转用于开始扫描然后重新启动扫描的选项的值 UseFrontCameraIfAvailable - 上面显示的代码。
将 ZXingScannerView 的 IsScanning 从 true 更改为 false,同时使用更改的选项重新开始扫描,但这只会导致相机冻结。
在我即将提交问题时发现了这个。我明天将尝试关注那个,但仍然非常喜欢我的输入。
如果我遗漏了一些您认为可以提供帮助的内容,请随意提出问题或要求提供其他代码。