我正在为我的客户开发一个Android应用程序,他要求在应用程序内部构建QR扫描程序。因此,我不希望用户必须从GooglePlay下载其他应用。换句话说,我不想从我的应用程序中调用另一个是QR扫描程序的应用程序。我需要在我的应用程序内部构建QR扫描程序。
我已经在github上阅读了关于ZXing的内容,在这里,在stackoverflow上。我理解它的方式,将QR扫描仪集成到应用程序中并不是一个好主意。最好通过Intent(或调用IntegratedIntent)调用扫描器,然后再调用另一个必须从GoolePlay下载的扫描器应用程序(?),我不希望这样。
另外,我尝试了几个博客(How to Create QR Codes with an Android Phone,ZXing QR Reader Direct Integration)中的一些想法,但它确实运作良好。
是否有可能以某种方式内置已开发的QR扫描仪?
答案 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>