自定义相机视图和旋转斑马线的QR码?(Customized camera view & rotati

2019-07-22 22:15发布

我有这样一个伟大的图书馆斑马线工作阅读QR码。 我已经得到了QR码成功。

现在,我的应用程序在横向模式下运行,并且相机拍摄整个屏幕,红色的QR检测矩形框的中间。 我想将其更改为肖像模式和仅与红色QR检测矩形框更换摄像机视图。

我改变CaptureActivity标签,它是斑马线库清单文件中。

android:screenOrientation="portrait"

但什么也没有发现什么其实我想要的。 我不知道我必须要改变/写代码来获得这个。

Answer 1:

我是在同样的问题,就死在这2天左右。 其实你必须做一些工作来实现自己的目标。

  1. 下载斑马线库读取QR代码。(希望你已经)
  2. 创建一个项目并添加斑马线库。
  3. 您的main.xml文件应该是这样:

     <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center_horizontal"> <include layout="@layout/capture"/> </FrameLayout> </LinearLayout> 
  4. 你的主要活动应该是这样的:

      public class ScannerActivity extends CaptureActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override public void handleDecode(Result rawResult, Bitmap barcode) { Toast.makeText(this.getApplicationContext(), "Scanned code " + rawResult.getText(), Toast.LENGTH_LONG).show(); } } 
  5. 在清单文件中添加以下权限:

      <uses-permission android:name="android.permission.CAMERA"/> 
  6. 最后你需要的相机旋转问题做的非常重要的任务,替换以下方法进入

CameraManager.java(在包com.google.zxing.client.android.camera)

@SuppressLint("NewApi") public void startPreview() {
    Camera theCamera = camera;
    if (theCamera != null && !previewing) {
        theCamera.setDisplayOrientation(90);
      theCamera.startPreview();
      previewing = true;
    }
  }

就这样 。 运行并享受:-)

谢谢..



Answer 2:

首先,请不要完全照搬我们的应用程序。 在这种情况下,你会需要这么写你自己的应用程序; 这绝不是因为改变布局方向一样简单。 不仅是UI不是为人像写的,但也不是应用程序代码。

如果你希望使用固定人像模式,那么这是不是那么难。 全面支持所有4度旋转,与前/后置摄像头,变得很难得到正确。 但不只是1例。

首先,你需要设计一个人像模式UI。 (不要复制红线设计吧。)

实际的应用程序代码不关心取向的QR码。 你不必在那里做任何事情。 但是,你需要作出改变,以获得屏幕显示正确。

您将需要查询Camera.getOrientation()来检测相机的安装方式。 通常它是这样说,“向上”是你的权利,我认为几乎所有的设备以这种方式工作的兼容性。 但在技术上你需要知道的,所以你知道多少旋转预览图像。

然后你使用Camera.setDisplayOrientation()来告诉它多少旋转图像,使其正确地旋转你的肖像模式屏幕。 这通常是“90”。

最后,您需要选择与预览大小Camera.Parameters.setPreviewSize()但很可能会需要,因为你的肖像是翻转您所选择的值(480×800 800×480 VS)。



Answer 3:

我从这个库出于同样的原因真的很可怕的经历。 看来,即使你成功展示在纵向模式的相机,它会被拉伸(或输出的图像会被拉伸,或者条形码不会被检测到,或者一些设备有它工作正常,但另一些则没有)。

我怀疑Android的简单的“喜欢”相机预览是在横向模式下,因为这是它的自然方向,当用户拍摄照片。

最后,使用横向模式我所做的事情是和旋转一切,所以用户认为这是肖像模式,但事实并非如此。 我想很多的应用程序使用这种技术。

我建议,如果你以某种方式设法解决这个问题,测试它在尽可能多的设备,你可以。



文章来源: Customized camera view & rotation in Zxing for QR code?