5.7使用Google ZXing条形码扫描器扫描条形码或QR码

问题
您希望应用程序能够扫描条形码或QR码(“QR”原本代表“快速反应”)。

使用Intent访问由Google ZXing条形码扫描器公开的扫描功能。
讨论
Android的一个伟大的功能是它是多么容易利用现有的功能。扫描条形码和QR码是一个很好的例子。 Google有一个免费的扫描应用程序,您可以通过意图访问;因此应用程序可以轻松添加扫描功能,开放新的界面,通信和功能的可能性。
此配方中的程序是如何通过Intent访问Google条码扫描器的示例。确保已安装Google条码扫描器(https://market.android.com/details?id=com.google.zxing.client.android)。在图中,有三个按钮,让用户选择扫描QR码,产品条形码或其他东西。有两个TextView用于显示扫描的条形码类型及其包含的数据。布局是常规的:一个垂直的LinearLayout,所以我们不需要在这里重现它。


活动代码如例5-16所示;根据按下哪个按钮,程序在启动ZXing活动之前将相关参数放入Intent,并等待结果。
实例5-16。扫描程序主活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void HandleClick(View arg0) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
switch(arg0.getId()){
case R.id.butQR:
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
break;
case R.id.butProd:
intent.putExtra("SCAN_MODE", "PRODUCT_MODE");
break;
case R.id.butOther:
intent.putExtra("SCAN_FORMATS", "CODE_39,CODE_93,CODE_128,DATA_MATRIX,ITF,CODABAR");
break;
}
try {
startActivityForResult(intent, 0); //Barcode Scanner to scan for us
} catch (ActivityNotFoundException e) {
Toast.makeText(this, "Please install the ZXing Barcode Scanner app", Toast.LENGTH_LONG).show();
}
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
TextView tvStatus=(TextView)findViewById(R.id.tvStatus);
TextView tvResult=(TextView)findViewById(R.id.tvResult);
if (resultCode == RESULT_OK) {
tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT"));
tvResult.setText(intent.getStringExtra("SCAN_RESULT"));
} else if (resultCode == RESULT_CANCELED) {
tvStatus.setText("Press a button to start a scan.");
tvResult.setText("Scan cancelled.");
}
}
}
}

注意,在下面的表格中,如何可以扫描条形码族(使用SCAN_MODE)或特定类型的条形码(使用SCAN_FORMATS)。如果知道正在解码什么类型的条形码,则将扫描格式设置为该特定类型可以导致更快的解码(它不会试图运行通过所有条形码解码算法)。例如,您可以使用intent.putExtra(“SCAN_FORMATS”,“CODE_39”)。要使用多个SCAN_FORMATS,您需要传递逗号分隔的列表;请参见示例5-16。


现在去,使扫描库存控制或杂货列表应用程序,你一直在想!
GitHub 加速计划 / zx / zxing
32.53 K
9.31 K
下载
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
最近提交(Master分支:23 天前 )
8944e607 1 个月前
6ea3726b Bumps `spring.version` from 6.1.5 to 6.1.8. Updates `org.springframework:spring-test` from 6.1.5 to 6.1.8 - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.5...v6.1.8) Updates `org.springframework:spring-web` from 6.1.5 to 6.1.8 - [Release notes](https://github.com/spring-projects/spring-framework/releases) - [Commits](https://github.com/spring-projects/spring-framework/compare/v6.1.5...v6.1.8) --- updated-dependencies: - dependency-name: org.springframework:spring-test dependency-type: direct:development update-type: version-update:semver-patch - dependency-name: org.springframework:spring-web dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Sean Owen <srowen@gmail.com> 2 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐