Zxing扫描仪Android Studio

 捕鱼达人2502940243 发布于 2022-12-04 14:04

嗨,我知道如何导入一个最小的Android库项目来扫描二维码,但扫描完二维码后我想得到二维码得到的结果(例如网址),但我真的不知道如何检索结果,这就是为什么我要求你的帮助.

我正在尝试使用它:https://github.com/embarkmobile/zxing-android-minimal#custom-layout

我用它来启动扫描仪:

IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setCaptureLayout(R.layout.custom_layout);
integrator.initiateScan();

在此先感谢我为webview做了这个

wb  = (WebView)findViewById(R.id.webView2);
        wb.loadUrl(re);

bjiang.. 28

First,您的Activity必须实现该方法Activity.onActivityResult(int, int, Intent)并包含一行代码,如下所示:

public 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
   ...
 }

您可以在此处理扫描结果.

Second,只需调用此方法以响应某个地方的用户操作即可开始扫描过程:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
 integrator.initiateScan();

请注意,initiateScan()如果提示用户下载应用程序,则返回一个非空的AlertDialog.这使得调用应用程序可以管理对话框.特别是,理想情况下,如果对话框在其Activity.onPause()方法中仍处于活动状态,则会解除对话框.

您可以使用setTitle(String)自定义此下载提示对话框的标题(或使用setTitleByID(int)按字符串资源ID设置标题.)同样,可以更改提示消息和是/否按钮标签.

Finally,您可以使用addExtra(String, Object)向用于调用扫描程序的Intent添加更多参数.这可用于设置此简化API未直接公开的其他选项.

默认情况下,这将只允许已知响应此意图的应用程序正确执行此操作.可以使用setTargetApplications(List)设置允许响应的应用程序.例如,设置为TARGET_BARCODE_SCANNER_ONLY仅定位条形码扫描仪应用程序本身.

有关详细信息,请参阅此处.

示例代码:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;

public class MainActivity extends Activity {

    private Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Scanner

        mButton = (Button) findViewById(R.id.assistant_button);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
                integrator.initiateScan();
            }
        });

    }

    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanResult != null) {
            String re = scanResult.getContents();
            Log.d("code", re);
        }
        // else continue with any other code you need in the method

    }
 }

xml中的一个按钮,然后单击它,扫描条形码,它将返回条形码的原始内容.

1 个回答
  • First,您的Activity必须实现该方法Activity.onActivityResult(int, int, Intent)并包含一行代码,如下所示:

    public 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
       ...
     }
    

    您可以在此处理扫描结果.

    Second,只需调用此方法以响应某个地方的用户操作即可开始扫描过程:

    IntentIntegrator integrator = new IntentIntegrator(yourActivity);
     integrator.initiateScan();
    

    请注意,initiateScan()如果提示用户下载应用程序,则返回一个非空的AlertDialog.这使得调用应用程序可以管理对话框.特别是,理想情况下,如果对话框在其Activity.onPause()方法中仍处于活动状态,则会解除对话框.

    您可以使用setTitle(String)自定义此下载提示对话框的标题(或使用setTitleByID(int)按字符串资源ID设置标题.)同样,可以更改提示消息和是/否按钮标签.

    Finally,您可以使用addExtra(String, Object)向用于调用扫描程序的Intent添加更多参数.这可用于设置此简化API未直接公开的其他选项.

    默认情况下,这将只允许已知响应此意图的应用程序正确执行此操作.可以使用setTargetApplications(List)设置允许响应的应用程序.例如,设置为TARGET_BARCODE_SCANNER_ONLY仅定位条形码扫描仪应用程序本身.

    有关详细信息,请参阅此处.

    示例代码:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    public class MainActivity extends Activity {
    
        private Button mButton;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Scanner
    
            mButton = (Button) findViewById(R.id.assistant_button);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
                    integrator.initiateScan();
                }
            });
    
        }
    
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
            IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
            if (scanResult != null) {
                String re = scanResult.getContents();
                Log.d("code", re);
            }
            // else continue with any other code you need in the method
    
        }
     }
    

    xml中的一个按钮,然后单击它,扫描条形码,它将返回条形码的原始内容.

    2022-12-11 02:57 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有