访问 Zxing QR 扫描仪摄像头视图

Posted

技术标签:

【中文标题】访问 Zxing QR 扫描仪摄像头视图【英文标题】:Get access to Zxing QR scanner camera view 【发布时间】:2015-06-04 00:48:01 【问题描述】:

我是 android 开发新手,我正在开发一个必须集成 QR 扫描仪的 android 项目。所以我想我会集成 Zxing QR 扫描仪并遇到这个库https://github.com/dm77/barcodescanner,按照提供的说明,我也成功集成并扫描了 QR。 现在我想自定义相机视图。问题是没有关于如何访问相机布局的文档。由于我是新人,我可能会遗漏一些东西。

我已经阅读了许多 Zxing 相关的帖子,但我找到了任何解决方案。

非常感谢任何帮助,无论是让我知道如何访问相机视图或向我指出一些文章。一旦我知道如何完成剩下的工作。

我很乐意提供更多信息。

提前致谢。

更新:

public class QrScanActivity extends BaseActivity implements ZXingScannerView.ResultHandler 
    private ZXingScannerView mScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_scan);

        // Programmatically initialize the scanner view
        mScannerView = new ZXingScannerView(this);
        // Set the scanner view as the content view
        setContentView(mScannerView);
    

mScannerView 是图书馆的视图。我想访问该视图。我有一个名为activity_my_scan 的视图。我可以向其中添加自定义布局并使用它,但我不知道如何绕过库正在使用的布局。

【问题讨论】:

实际上有很多关于这个的教程,比如这样;):tutorialspoint.com/android/android_camera.htm @AndroidProgrammer 非常感谢。本文有助于了解如何自定义 UI。但问题是我无法访问我的自定义 XML 布局。我已经更新了我的问题。请检查 【参考方案1】:

而不仅仅是使用 gradle 将这个库添加为 jar

compile 'me.dm7.barcodescanner:zxing:1.6.3'

您可以从 github 克隆该项目,或者下载一个 zip 文件并将其解压缩并作为 lib 项目集成到您的项目中。然后对其来源和布局进行任何所需的更改。

【讨论】:

不。我下载了项目。但同样的问题。 M 只是无法弄清楚如何获取项目中使用的相机视图。就算能换掉也挺好的。但我不知道怎么做。 查看源代码,找到它在扫描时使用的视图,估计会有一些布局。并且不要忘记从您的 biuld 中删除 compile 'me.dm7.barcodescanner:zxing:1.6.3' 你是对的,有一个 xml,我无法编辑它。如果我编辑,在构建时它会消失。我尝试下载然后集成它,但有很多依赖项,我错过了一些。无法弄清楚我错过了哪些。下载给了我 zxing 和 zbar 以及一些示例。 是的,通常它本身包含一个项目和示例。您应该只将项目本身集成到您的应用程序中,而不需要任何示例。将 AS 指向包含库源项目的文件夹,而不是包含源和示例以及其他内容的根文件夹,以仅添加源代码及其资源。您应该添加文件夹 corezxingzbar,之前删除最后两个文件夹中的 sample 其实我相信你可以只添加(使用 AS 导入)core 文件夹,然后使用 gradle 添加 zbarzxing 模块。【参考方案2】:

ZXingScannerView 扩展 BarcodeScannerView。您可以通过转到 ZXingScannerView 的声明(在 Android Studio Ctrl+B 中)来访问它。

public class ZXingScannerView extends BarcodeScannerView 
private MultiFormatReader mMultiFormatReader;
public static final List<BarcodeFormat> ALL_FORMATS = new ArrayList();
private List<BarcodeFormat> mFormats;
private ZXingScannerView.ResultHandler mResultHandler;

如果你去 BarcodeScannerView 的声明,你会注意到一个名为 setupLayout() 的方法来格式化布局:

public void setupLayout() 
    this.mPreview = new CameraPreview(this.getContext());
    this.mViewFinderView = new ViewFinderView(this.getContext());
    RelativeLayout relativeLayout = new RelativeLayout(this.getContext());
    relativeLayout.setGravity(17);
    relativeLayout.setBackgroundColor(-16777216);
    relativeLayout.addView(this.mPreview);
    this.addView(relativeLayout);
    this.addView(this.mViewFinderView);

通过“CameraPreview”的声明,您将能够获得有关相机布局方式的更多信息,并且您可以扩展 ZXingScannerView 以编辑布局。

希望这会有所帮助!

干杯!

【讨论】:

【参考方案3】:

好吧,在你的情况下,我会尝试将布局包含到另一个布局中,也许它会有所帮助:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width=”match_parent”
    android:layout_height=”match_parent”
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_width=”match_parent”
              android:layout_
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

当然还有关于 here 的信息;)

【讨论】:

谢谢,但这不是我想要的。我会尝试 Stans 方法,看看它是否有效。

以上是关于访问 Zxing QR 扫描仪摄像头视图的主要内容,如果未能解决你的问题,请参考以下文章

如何使摄像头扫描二维码,然后解析二维码 java源码 zxing

在WPF中开启摄像头扫描二维码(Media+Zxing)

用Spring Boot+ZXing生成二维码

用Spring Boot+ZXing生成二维码

用Spring Boot+ZXing生成二维码

使用多个 DecoratedBarcodeViews 时视图保持黑色