将QR扫描仪集成到Android应用程序中

时间:2015-01-29 10:42:58

标签: android zxing qr-code zbar

我正在为我的客户开发一个Android应用程序,他要求在应用程序内部构建QR扫描程序。因此,我不希望用户必须从GooglePlay下载其他应用。换句话说,我不想从我的应用程序中调用另一个是QR扫描程序的应用程序。我需要在我的应用程序内部构建QR扫描程序。

我已经在github上阅读了关于ZXing的内容,在这里,在stackoverflow上。我理解它的方式,将QR扫描仪集成到应用程序中并不是一个好主意。最好通过Intent(或调用IntegratedIntent)调用扫描器,然后再调用另一个必须从GoolePlay下载的扫描器应用程序(?),我不希望这样。

另外,我尝试了几个博客(How to Create QR Codes with an Android PhoneZXing QR Reader Direct Integration)中的一些想法,但它确实运作良好。

是否有可能以某种方式内置已开发的QR扫描仪?

1 个答案:

答案 0 :(得分:2)

我找到了解决方案。问题是这样的: 我出于某种原因使用了IntentIntegrator:

IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES);

如果您使用IntentIntegrator,即使您将CaptureActivity项目作为库添加到项目中,我也会请求将BarCode场景应用程序安装在设备上。

我使用了它而且它的工作原理是gr8。

Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);

它将从CaptureActivity项目启动CaptureActivity,扫描仪将在您的应用程序中。

P.S。将此代码放在标记中的清单文件中是必要的:

<activity
            android:name="com.google.zxing.client.android.CaptureActivity"
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
            android:windowSoftInputMode="stateAlwaysHidden" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.google.zxing.client.android.SCAN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>