我是android新手。我正在尝试开发一种条形码扫描仪,其工作原理如下: 通过相机拍摄(条形码)图像并扫描此条形码图像。 我的问题是我怎么做到的? 提前致谢
这是我的代码:
TextView result_text;
Button scan_btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
result_text = (TextView)findViewById(R.id.Result_tv);
scan_btn = (Button)findViewById(R.id.Barcode_Scan_Button);
scan_btn.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent scanIntent= new Intent("com.google.zxing.client.android.SCAN");
scanIntent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(scanIntent, 0);
}
});
}
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
result_text.setText(intent.getStringExtra("SCAN_RESULT"));
} else if (resultCode == RESULT_CANCELED) {
result_text.setText("Scan cancelled.");
}
}
}
}
答案 0 :(得分:4)
@Zain严格不建议你采用的方法。
根据他们的指导原则,您不应明确调用Scan Intent。
您必须使用zxing发布的新IntentIntegrator
课程。
你去吧
首先添加代码以调用Intent:
IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();
从下面的网址下载IntentIntegrator类。
其次,将其添加到您的Activity中以处理结果:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanResult != null) {
// handle scan result
}
// else continue with any other code you need in the method
...
}
投入时间浏览Zxing的维基页面。他们已经很好地解释了它。
http://code.google.com/p/zxing/w/list
http://code.google.com/p/zxing/wiki/ScanningViaIntent
以下是演示如何调用Zxing意图的示例应用程序。
最后,Test Project + Library位于
http://code.google.com/p/zxing/source/browse/trunk#trunk%2Fandroid-integration%253Fstate%253Dclosed
答案 1 :(得分:2)
研究http://code.google.com/p/zxing/
无论如何,这个问题相当复杂,这是IIRC使用傅里叶变换器完成的,边缘检测,矩阵计算等。还有很多标准。准备一个月的工作。
答案 2 :(得分:0)
查看以下链接,它将帮助您开发条形码扫描应用程序
答案 3 :(得分:0)
Firebase ML套件条形码扫描API可用于在Android应用程序中构建条形码扫描功能。要获取条形码值,需要将包含条形码的竖直图像传递到Firebase ML套件条形码扫描API。