我有这样一个伟大的图书馆斑马线工作阅读QR码。 我已经得到了QR码成功。
现在,我的应用程序在横向模式下运行,并且相机拍摄整个屏幕,红色的QR检测矩形框的中间。 我想将其更改为肖像模式和仅与红色QR检测矩形框更换摄像机视图。
我改变CaptureActivity标签,它是斑马线库清单文件中。
android:screenOrientation="portrait"
。
但什么也没有发现什么其实我想要的。 我不知道我必须要改变/写代码来获得这个。
我有这样一个伟大的图书馆斑马线工作阅读QR码。 我已经得到了QR码成功。
现在,我的应用程序在横向模式下运行,并且相机拍摄整个屏幕,红色的QR检测矩形框的中间。 我想将其更改为肖像模式和仅与红色QR检测矩形框更换摄像机视图。
我改变CaptureActivity标签,它是斑马线库清单文件中。
android:screenOrientation="portrait"
。
但什么也没有发现什么其实我想要的。 我不知道我必须要改变/写代码来获得这个。
我是在同样的问题,就死在这2天左右。 其实你必须做一些工作来实现自己的目标。
您的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>
你的主要活动应该是这样的:
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(); } }
在清单文件中添加以下权限:
<uses-permission android:name="android.permission.CAMERA"/>
最后你需要的相机旋转问题做的非常重要的任务,替换以下方法进入
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;
}
}
就这样 。 运行并享受:-)
谢谢..
首先,请不要完全照搬我们的应用程序。 在这种情况下,你会需要这么写你自己的应用程序; 这绝不是因为改变布局方向一样简单。 不仅是UI不是为人像写的,但也不是应用程序代码。
如果你希望只使用固定人像模式,那么这是不是那么难。 全面支持所有4度旋转,与前/后置摄像头,变得很难得到正确。 但不只是1例。
首先,你需要设计一个人像模式UI。 (不要复制红线设计吧。)
实际的应用程序代码不关心取向的QR码。 你不必在那里做任何事情。 但是,你需要作出改变,以获得屏幕显示正确。
您将需要查询Camera.getOrientation()
来检测相机的安装方式。 通常它是这样说,“向上”是你的权利,我认为几乎所有的设备以这种方式工作的兼容性。 但在技术上你需要知道的,所以你知道多少旋转预览图像。
然后你使用Camera.setDisplayOrientation()
来告诉它多少旋转图像,使其正确地旋转你的肖像模式屏幕。 这通常是“90”。
最后,您需要选择与预览大小Camera.Parameters.setPreviewSize()
但很可能会需要,因为你的肖像是翻转您所选择的值(480×800 800×480 VS)。
我从这个库出于同样的原因真的很可怕的经历。 看来,即使你成功展示在纵向模式的相机,它会被拉伸(或输出的图像会被拉伸,或者条形码不会被检测到,或者一些设备有它工作正常,但另一些则没有)。
我怀疑Android的简单的“喜欢”相机预览是在横向模式下,因为这是它的自然方向,当用户拍摄照片。
最后,使用横向模式我所做的事情是和旋转一切,所以用户认为这是肖像模式,但事实并非如此。 我想很多的应用程序使用这种技术。
我建议,如果你以某种方式设法解决这个问题,测试它在尽可能多的设备,你可以。