您的位置:首页 > 移动开发 > Android开发

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

2017-01-10 09:27 295 查看
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。

现在去,使扫描库存控制或杂货列表应用程序,你一直在想!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐