QR码阅读器正在扫描两次,如何使其仅作为一次成功的扫描



我按照这个阅读二维码...

在那边,我添加了一个扫描按钮来启动二维码阅读器活动......我正在另一个页面上显示结果...

现在我正在将这些结果传递给 JOSN 中的服务器......以便服务器将响应其扫描的第一次更新成功。.并删除了成功..诸如此类。。

但是当我尝试时,我一次在我的数据库中获取两者。第一次扫描后,它应该重定向到 json 页面并显示服务器状态......

但它仍在运行,我正在及时更新和删除..&每次都获得结果删除成功..

我在扫描二维码以传递结果后执行此操作。.

Qrdata.this.finish();
Intent i = new Intent(this, json.class);
i.putExtra("qrdata", sdata);
i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
i.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(i);

但是它的扫描了两次... 在显示服务器响应并显示始终删除成功之前。.

当我强制移动设备从QR码移动时,我得到了更新成功。

我想在一次成功扫描后停止 qrsscan。.

任何人都可以建议我,如果需要任何其他信息,我将更新我的代码......在这个二维码上..

更新 :

这是在服务器端。.

    public class Sdata extends Activity {
    private static String urlString;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.data);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
                final TextView tv = (TextView) findViewById(R.id.tv);
            String rdata;
            Intent i = getIntent();
            rdata = i.getStringExtra("sdata");
                    tv.setText("");
                    urlString = "http://"+rdata;
                    new ProcessJSON().execute(urlString);
            System.out.println("****url****"+urlString);
        }
        
    }
    private class ProcessJSON extends AsyncTask<String, Void, String>{
        protected String doInBackground(String... strings){
            String stream=null;
            String urlString = strings[0];
            HDH hh = new HDH();
            stream = hh.GetHTTPData(urlString);
            return stream;
        }
        protected void onPostExecute(String stream) {
            TextView tv = (TextView) findViewById(R.id.tv);
            if (stream != null) {
                try {
                    JSONObject key = new JSONObject(stream);
                    JSONObject response = key.getJSONObject("response");
                    String status = response.getString("status");
                    tv.setText(tv.getText() + "t"+ status + "n");
                }
                catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    @Override
    public void onBackPressed() {
        moveTaskToBack(false);
        Toast.makeText(this, "Please wait for a While.. Don't Go back .!", Toast.LENGTH_SHORT).show();
    }
}

谁能告诉我需要在哪里添加

您可以通过标志维护它,例如第一次检查布尔变量为

boolean scan = true;
if(scan) {
   //  ...scan qr..
}

当你第一次得到结果时,使布尔值为假。

最新更新