访问 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 指向包含库源项目的文件夹,而不是包含源和示例以及其他内容的根文件夹,以仅添加源代码及其资源。您应该添加文件夹 core
、zxing
和 zbar
,之前删除最后两个文件夹中的 sample
。
其实我相信你可以只添加(使用 AS 导入)core
文件夹,然后使用 gradle 添加 zbar
和 zxing
模块。【参考方案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 扫描仪摄像头视图的主要内容,如果未能解决你的问题,请参考以下文章