Android Studio 扫描二维码并解析跳转

    很久没有做小项目了,今天有空就顺便做了个简单的扫描二维码并解析跳转。

     

   1.在app里面的libs文件中集成lib-zxing包



   2.在app文件中的build添加红色框类包名



   3.在activity_main.xml中添加按钮

<Button
    android:id="@+id/btn"
    android:layout_width="150dp"
    android:layout_height="100dp"
    android:text="扫描二维码跳转" />

   4.在MainActivity.java中添加运行解析代码

package com.example.zx;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

import com.uuzuche.lib_zxing.activity.CaptureActivity;
import com.uuzuche.lib_zxing.activity.CodeUtils;

public class MainActivity extends AppCompatActivity {
    /**
     * 扫描跳转Activity RequestCode
     */
    public static final int REQUEST_CODE = 111;
    /**
     * 扫描跳转按钮
     */
    private Button btn=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
startActivityForResult(intent,REQUEST_CODE);}});}
    @Override 
    protected void onActivityResult(
            int requestCode, int resultCode, Intent data) {
        /**
         * 处理二维码扫描结果
         */
        if (requestCode == REQUEST_CODE) {
            //处理扫描结果(在界面上显示)
            if (null != data) {
                Bundle bundle = data.getExtras();
                if (bundle == null) {
                    return;}
                if (bundle.getInt(CodeUtils.RESULT_TYPE)
                        == CodeUtils.RESULT_SUCCESS) {
                    String result = 
                            bundle.getString(CodeUtils.RESULT_STRING);
                    //用默认浏览器打开扫描得到的地址
                    Intent intent = new Intent();
                    intent.setAction("android.intent.action.VIEW");
                    Uri content_url = Uri.parse(result.toString());
                    intent.setData(content_url);
                    startActivity(intent);
                } else if (bundle.getInt(CodeUtils.RESULT_TYPE)
                        == CodeUtils.RESULT_FAILED) {
                    Toast.makeText(MainActivity.this, 
                            "解析二维码失败", Toast.LENGTH_LONG).show();}}}}}


   5.我们来看下运行效果吧

   



   6.源代码在这

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
要在Android Studio扫描二维码,首先需要安装一个名为“QRCodeReaderView”的库。在build.gradle文件中添加以下代码,在dependencies中添加 QRCodeReaderView作为一个库的依赖项。 ``` dependencies { compile 'com.dlazaro66.qrcodereaderview:qrcodereaderview:2.0.3' } ``` 然后,在Activity中添加以下代码: ```java @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Find the QRCodeReaderView mQRCodeReaderView = (QRCodeReaderView) findViewById(R.id.qrdecoderview); // Use the builder to create Configuration object QRCodeReaderView.getConfig().setAutoFocusInterval(1000L); // Set the Configuration object mQRCodeReaderView.setQRDecodingEnabled(true); // Start camera preview mQRCodeReaderView.startCamera(); // Set result handler mQRCodeReaderView.setResultHandler(this); } ``` 通过上述代码,首先会在Activity中找到QRCodeReaderView,然后通过QRCodeReaderView.getConfig()方法创建一个Configuration对象,并设置自动对焦的时间间隔,接着设置QR解码启用并开始相机预览。最后,通过mQRCodeReaderView.setResultHandler()为QR码扫描器设置了一个结果处理器。 最后,在Activity中实现“onResume()”和“onPause()”方法,并在这些方法中添加以下代码即可: ```java @Override public void onResume() { super.onResume(); mQRCodeReaderView.startCamera(); } @Override public void onPause() { super.onPause(); mQRCodeReaderView.stopCamera(); } ``` 通过上述代码,当Activity恢复时,开启相机视图并启动相机扫描,当Activity暂停时,将停止相机扫描
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值