难以将zxing QR码扫描仪整合到我的Android应用程序中

时间:2014-01-30 17:44:47

标签: java android zxing

已经开始使用android studio开发我的第一个“真正的”原始Android应用程序,所以我仍然是非常新的,虽然我有java的经验。我的应用程序涉及使用QR码扫描仪并使用它输出的内容(具体用途将使用比特币地址)。

我在整合QR码扫描仪方面遇到了实际问题,说实话,我真的不在乎是否知道它是使用意图调用还是我在内部使用库,我真的很想以最简单的方式进行操作。我的问题是我真的不明白如何导入软件包,什么不是,我很难找到如何在线进行详细解释。

理想的方法是按下按钮,打开扫描仪,当您扫描完代码后,它将转到另一个活动,您可以在其中查看输出,然后选择您想要用它做什么。

这是我的主要活动,如果你可以用它做任何事情:

package com.JunkerDevBlog.bitcoinaddresssender;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.os.Build;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends ActionBarActivity {

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

    if (savedInstanceState == null) {
        getSupportFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment())
                .commit();
    }
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void scan(View view) {

    Intent intent = new Intent(this, ScanActivity.class);

    startActivity(intent);

}


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */
public static class PlaceholderFragment extends Fragment {

    public PlaceholderFragment() {
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_main, container, false);
        return rootView;
    }
}

}

我也在使用android studio,非常感谢帮助。

3 个答案:

答案 0 :(得分:3)

如果你正确设置了Zxing,只需要下面的代码......

IntentIntegrator.initiateScan(BarcodeActivity.this, R.layout.capture, R.id.viewfinder_view, R.id.preview_view, true); // Call the Scanner Intenet

在这里,您可以从条形码阅读器获得回报

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case IntentIntegrator.REQUEST_CODE:
            IntentResult scanResult = IntentIntegrator.parseActivityResult(
                    requestCode, resultCode, data);
            if (scanResult == null) {
                return;
            }
            final String result = scanResult.getContents(); // Your result

            if (result != null) {
                System.out.print("Your result is: " + result);
            }
            break;
        default:
        }
    }

LayoutCapture.xml

<?xml version="1.0" encoding="UTF-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent">

    <SurfaceView android:id="@+id/preview_view"
        android:layout_width="fill_parent" android:layout_height="fill_parent"
        android:layout_centerInParent="true" />

    <jim.h.common.android.zxinglib.view.ViewfinderView
        android:id="@+id/viewfinder_view" android:layout_width="fill_parent"
        android:layout_height="fill_parent" android:background="#00000000" />

    <TextView android:id="@+id/status_view" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_gravity="bottom|center_horizontal"
        android:background="#00000000" 
        android:textColor="#ffffffff" android:textSize="14sp" />
</FrameLayout>

答案 1 :(得分:0)

个人意见,我发现ZXing的整合比较复杂,而是选择集成ZBar库。

你可以从这里得到它: http://sourceforge.net/projects/zbar/files/AndroidSDK/(下载0.2 zip包含lib和示例项目。)

答案 2 :(得分:0)

Ok首先要做的事情!

**实现拉动zxing应用程序的意图不是明智的选择(如果用户没有网络连接且没有zxing应用程序,他不能使用你的应用程序,所以我强烈建议你使用zxing库)

  1. 截至目前,Android Studio尚未完全准备就绪。它还处于测试阶段。所以使用eclipse和ADT插件

  2. 按照本教程设置zxing。在我们参与了涉及zxing的项目之后,我的朋友写了这篇文章。

  3. http://www.androiddevelopersolution.com/2012/06/integrating-zxing-qr-code-scanner-into.html

    1. 请记住,ZXING不是友好的碎片!在我现在的项目中,我们的应用程序的核心是zxing,它的工作很棒。
    2. 希望这会有所帮助......