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.源代码在这 https://github.com/huangweijieGitHub/Quickmark

在最新版的Android Studio中,要实现扫描二维码的功能,通常会使用一些第三方库,比如ZXing("Zebra Crossing")库。这个库专门用于处理条形码和二维码的读取,包括生成和解析。以下是使用ZXing库在Android Studio中实现扫描二维码的基本步骤: 1. 添加ZXing库依赖到你的项目的build.gradle文件中,通过以下代码添加依赖: ```gradle dependencies { implementation 'com.journeyapps:zxing-android-embedded:4.2.0' } ``` 2. 在你的AndroidManifest.xml中添加相机权限,以便应用可以访问设备的相机进行扫描: ```xml <uses-permission android:name="android.permission.CAMERA" /> ``` 3. 创建一个Intent,使用ZXing库提供的Intent启动器来启动扫描活动: ```java IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE); integrator.setPrompt("扫描二维码"); integrator.setCameraId(0); // 使用前置或后置相机,0表示后置相机 integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.initiateScan(); ``` 4. 在当前活动(Activity)中重写`onActivityResult`方法,以接收扫描结果: ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Toast.makeText(this, "扫描被取消", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "扫描结果:" + result.getContents(), Toast.LENGTH_LONG).show(); } } else { super.onActivityResult(requestCode, resultCode, data); } } ``` 5. 处理扫描结果,比如根据扫描到的内容跳转到不同的界面或者执行其他操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值