我开发了一个 Android应用程序来扫描QR码并通过服务器发送它。 在这个应用程序中,我使用数组列表在列表视图中获取多个QR码扫描结果,并通过按钮单击事件将它们发送到服务器。 要求是将所有扫描的QR码结果直接发送到 服务器不使用任何事件,例如按钮点击或类似的东西。 这里我使用zxing QR扫描仪使用意图。以下是获取QR码扫描结果的代码。
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == SCANNER_REQUEST_CODE) {
// Handle scan intent
if (resultCode == Activity.RESULT_OK) {
// Handle successful scan
String contents = intent.getStringExtra("SCAN_RESULT");
String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
int intentOrientation = intent.getIntExtra(
"SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
Integer orientation = (intentOrientation == Integer.MIN_VALUE) ? null
: intentOrientation;
String errorCorrectionLevel = intent
.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
QRContent = contents;
QR_Receivd.setText(QRContent);
listItems.add(QRContent); //adding scan result to an array list(listItems)
} else if (resultCode == Activity.RESULT_CANCELED) {
// Handle cancel
}
//On-click method to initiate scan.
@Override
public void onClick(View v) {
if (v.getId() == R.id.btScan) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "SCAN_MODE");
startActivityForResult(intent, SCANNER_REQUEST_CODE);
}
}
因此,我不想使用点击事件,而是希望在从扫描仪获取结果后立即将扫描结果直接发送到服务器。 感谢!!!
答案 0 :(得分:1)
第1部分
首先你应该选择你想要的发送方式。您可以使用官方工具或使用第三方库发送它。我会假设后者。
根据我的方法,您需要在服务器上使用一个PHP文件,该文件负责接收(通过GET或POST)扫描的QR作为参数。
示例电话:
myserver.com/API/addqr?qrcode=XXXXXXXXXX
这个PHP文件必须将其保存到您的数据库中,我想是MYSQL。
第2部分
现在您已经设置了服务器,您应该查看不同的库或官方文档。
Using Loopj's Android Async HTTP petitions (i reccomend this)
我假设您选择方法2.
您所要做的就是发送请愿书:
if (resultCode == Activity.RESULT_OK) {
//blah blah blah all the code that decodes and adds it to the listview
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("qrcode", "XXXXXXXXXXXXX");
client.post("myserver.com/API/addqr", params, new JsonHttpResponseHandler() {
public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
//do something with the response, if there is one.
}
});
}