我正在使用cordova开发应用程序,但Zxing的条形码扫描仪在扫描需要添加扫描/退出按钮和关闭按钮的产品后自动打开和关闭,扫描仪无法自动打开和关闭。我还需要检查扫描的产品是否存在于数据库(SQL SERVER)中并返回产品信息我试图谷歌但无济于事请帮助。以下是我在Eclipse中的代码。我需要知道如何修改UI并添加我自己的ZXING条码扫描器插件控件我在Eclipse中开发并在IIS中托管了一个web api服务,我可以访问我的Android App.Please尽快或告诉我如何我可以修改此条形码UI以添加我的控件。
public void scan() {
Intent intentScan = new Intent(SCAN_INTENT);
intentScan.addCategory(Intent.CATEGORY_DEFAULT);
this.cordova.startActivityForResult((CordovaPlugin) this, intentScan, REQUEST_CODE);
}
我的OnStartActivity代码在这里是代码,但它看起来和你的一样。
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
JSONObject obj = new JSONObject();
try {
obj.put(TEXT, intent.getStringExtra("SCAN_RESULT"));
obj.put(FORMAT, intent.getStringExtra("SCAN_RESULT_FORMAT"));
obj.put(CANCELLED, false);
} catch (JSONException e) {
Log.d(LOG_TAG, "This should never happen");
}
//this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
this.callbackContext.success(obj);
} else if (resultCode == Activity.RESULT_CANCELED) {
JSONObject obj = new JSONObject();
try {
obj.put(TEXT, "");
obj.put(FORMAT, "");
obj.put(CANCELLED, true);
} catch (JSONException e) {
Log.d(LOG_TAG, "This should never happen");
}
//this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback);
this.callbackContext.success(obj);
} else {
//this.error(new PluginResult(PluginResult.Status.ERROR), this.callback);
this.callbackContext.error("Unexpected error");
}
}
}
答案 0 :(得分:0)
下午好我有一个应用程序,你正在寻找...首先我创建一个意图所以我可以使用任何QR扫描仪我使用外部应用程序,以获得这里的二维码的价值。
public void scanNow(View view) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
}
所以在我的onStartActivity for result中将该信息发送到服务器端并等待答案......
public void onActivityResult(int requestCode, int resultCode, Intent intent){
if(requestCode == 0){
if(resultCode == RESULT_OK){
contents = intent.getStringExtra("SCAN_RESULT");// here is the content of the qr scanner
String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
String messLoc = "Visita Guardada Con Exito";
Log.i("xZing", "contents: " + contents + " format: " + format);// Handle successful scan
Toast.makeText(this, messLoc, Toast.LENGTH_LONG).show();
new Thread(new Task()).start(); // here I start the thread for the connection
return;
}
else if(resultCode == RESULT_CANCELED);{// Handle cancel
Log.i("xZing", "Cancelled");
}
}
}
请告诉我这是否有帮助
答案 1 :(得分:0)
<强>更新强> 我刚开始使用Zbar而不是Zxing。使用起来要容易得多。非常容易嵌入(没有第三方应用程序的扫描仪)。它有很多让文件加载到项目中。此外,它还有一个包含的示例,您可以将其复制并粘贴到代码中。该示例非常适合您要执行的操作,并且只需要进行一些编辑即可获得您正在寻找的功能。所以尝试使用zbar库。 Zbar - https://github.com/dm77/ZBarScanner 教程 - http://community.magicsoftware.com/en/library?book=en/Magicxpa/&page=Android_Barcode_Scanning_(Using_ZBar_SDK)_Sample.htm 该教程不是很好,但它有助于设置它。注意:如果单击它们,它们所使用的链接将不起作用。您必须将文本复制并粘贴到浏览器中。 我在下面解释的数据库内容仍然是相关的,但忽略了关于zxing的部分。
祝你好运!
原始回答
我或许可以帮助你解决SQL问题。你有任何数据库助手设置?
首先,我会google并找到一个简单的数据库示例来设置数据库。有很多好的,向您展示如何在SQLite for android中设置数据库。我曾经学过的一些基础知识:http://hmkcode.com/android-simple-sqlite-database-tutorial/
。您可以使用Book的示例创建一个产品类,其中包含符合您需求的列的所有值。然后你只需用eclipse创建自动getter和setter点击“Source - &gt; generate getters and setters”。完成后,您可以使用下面的教程设置qr扫描仪。至于保持窗户打开,我认为你不需要这样做。只需创建扫描仪关闭的活动即可。在该活动中,您可以获得输出并将扫描结果与数据库进行比较。
我能够使用教程http://%20http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162
将zxing集成到我的应用中。一旦我这样做了
从qr代码解析数据的示例:
首先调用扫描:
public void onClick(View v){
//respond to clicks
if(v.getId()==R.id.scanQRButton){
//scan
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
扫描结果代码如下所示:
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
//retrieve scan result
IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
if (scanningResult != null) {
//we have a result
scanContent = scanningResult.getContents();
}
else{
Toast toast = Toast.makeText(getApplicationContext(),
"No scan data received!", Toast.LENGTH_SHORT);
toast.show();
}
}
现在是扫描按钮的整理方法:
public void onClick(View v){
//respond to clicks
if(v.getId()==R.id.scanQRButton){
//scan
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, 0);
formatTxt.setText( "Scan Initiated");
contentTxt.setText(" Scan Results: " + scanContent);
if(scanContent != null){
String userid,medname,tabstaken,dob;
// Here I am breaking apart the scan results and
//saving them into variables.
//Do this then call the database for your product and compare
StringTokenizer st = new StringTokenizer(scanContent, ",");
// token 0
dob = st.nextToken();
//token 1
medname = st.nextToken();
//token 2
tabstaken = st.nextToken();
//token 3
//rxnumber
// So here you setup the db so you can access it
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
//This is used to call the results
HashMap<String,String> user = new HashMap<String, String>();
//Use a method such as getProductResults() for your case
user = db.getUserDetails();
enter code here
//An example of me storing the user
userid = user.get("uid");
//debug.setText("Userid: "+ userid+ " medname: " + medname + " tabs: " +tabstaken);
UserLogEntry userlog = new UserLogEntry(getApplicationContext(),userid,medname,tabstaken);
userlog.addUserLog();
}
}
}
如果您需要查看我的数据库类,请告诉我。显然,这不是您需要的确切代码,但它向您展示了如何使用QR的结果并调用DB结果进行比较。希望它有用