裁剪叠加层以标记扫描字段

时间:2019-05-03 12:10:24

标签: c# xamarin.android surfaceview crop barcode-scanner

我在Xamarin应用中实现了条形码扫描仪。为了实现扫描仪,我遵循了本教程:https://www.c-sharpcorner.com/article/xamarin-android-qr-code-reader-by-mobile-camera/

所以,我有一个SurfaceView,一个CameraSource和一个BarcodeDetector。现在,我想裁剪相机预览,说扫描仪必须在其中扫描条形码,因为我们可能从中获取多个条形码。

我认为这可以与“简单作物视图”(或类似方法)一起使用,但是我不知道如何实现它。 在这里找到的所有解决方案都无法正常工作,或者我缺少某些东西。

1 个答案:

答案 0 :(得分:0)

您要像这样的GIF来实现吗?

enter image description here

如果是这样,您可以使用ZXing.Net.Mobile来实现 https://github.com/Redth/ZXing.Net.Mobile

有我的演示 https://github.com/851265601/Scanebarcode

更新:如果您仍然想使用自爆链接之类的解决方案

https://www.c-sharpcorner.com/article/xamarin-android-qr-code-reader-by-mobile-camera/

我像下面的代码一样更改了布局。我用FramLayoutSurfaceView覆盖了其他{LinearLayoutrelativelayout

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>
<SurfaceView
            android:id="@+id/cameraView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_centerInParent="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
    android:background="#953399ff"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="330dp"
    android:orientation="horizontal">
    <RelativeLayout
        android:background="#953399ff"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
    <RelativeLayout
        android:id="@+id/rlscan"
        android:layout_width="220dp"
        android:layout_height="fill_parent">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/area_above_left" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:src="@drawable/area_above_right" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentLeft="true"
            android:src="@drawable/area_below_left" />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:src="@drawable/area_below_right" />
    </RelativeLayout>
    <RelativeLayout
        android:background="#953399ff"
        android:layout_width="0dp"
        android:layout_height="fill_parent"
        android:layout_weight="1" />
</LinearLayout>
<RelativeLayout
    android:background="#953399ff"
    android:layout_width="fill_parent"
    android:layout_height="0dp"
    android:layout_weight="1">
    <TextView
        android:layout_centerInParent="true"
        android:gravity="center_horizontal"
        android:id="@+id/txtResult"
        android:layout_below="@+id/cameraView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Please focus Camera to QR Code"
        android:textSize="10sp"
        android:layout_marginTop="20dp" />
  </RelativeLayout>
  </LinearLayout>
</FrameLayout>