Shi*_*din 8 android qr-code zxing
我正在与这样一个伟大的图书馆zxing一起阅读二维码.我已经成功获得了二维码.
现在,我的应用程序以横向模式运行,相机占据整个屏幕,红色QR检测矩形框位于中间.我想将其更改为纵向模式并仅使用红色QR检测矩形框替换相机视图.
我更改了zxing库清单文件中的CaptureActivity标记.
android:screenOrientation="portrait".
但没有发现我真正想要的东西.我不知道在哪里更改/编写代码来获取此信息.
首先,请不要完全复制我们的应用程序.在这种情况下,您无论如何都需要编写自己的应用程序; 它绝对不像改变布局方向那么简单.用户界面不仅不是为肖像而写,也不是应用代码.
如果您想使用仅固定人像模式,那么这是不是那么难.完全支持所有4个旋转,使用前/后摄像头,很难做到正确.但不仅仅是1例.
首先,您需要设计纵向模式UI.(请不要复制红线设计.)
实际的应用代码不关心QR码的方向.你根本不需要做任何事情.但您需要进行更改才能使屏幕显示正确.
您需要查询Camera.getOrientation()以检测摄像机的安装方式.通常情况下,"向上"是你的权利,我认为几乎所有设备都以这种方式兼容.但从技术上讲,您需要知道如何知道旋转预览图像的数量.
然后你用Camera.setDisplayOrientation()它来告诉它旋转图像多少,使它在你的肖像模式屏幕上正确旋转.这通常是"90".
最后你需要选择预览尺寸,Camera.Parameters.setPreviewSize()但可能需要翻转你选择的值(480x800 vs 800x480)因为你是肖像.
我遇到了同样的问题,并且被困了大约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>
Run Code Online (Sandbox Code Playgroud)您的主要活动应如下所示:
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();
}
}
Run Code Online (Sandbox Code Playgroud)在清单文件中添加以下权限:
<uses-permission android:name="android.permission.CAMERA"/>
Run Code Online (Sandbox Code Playgroud)最后非常重要的任务你需要做的相机旋转问题,将以下方法替换为
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;
}
}
Run Code Online (Sandbox Code Playgroud)
就这样 .跑步和享受:-)
谢谢..
| 归档时间: |
|
| 查看次数: |
15424 次 |
| 最近记录: |