android 使用zxinglib实现扫描二维码功能

  1. 首先我们需要下载最新版本的 ,非常感谢 xuyisheng的封装。
  2. 下载完毕后,我们在Android中需要导入的Module是libzxing
  3. 导入到我们的工程中

    找到我们下载后的工程,然后选择,ModuleName名字不要改,如下:

    导入后,就成了下面这样了,如下:

    接下来我们需要给app添加依赖,如下:


    接下来我们需要给app添加依赖,如下:

    打开app目录下的src下面的AndroidMainifest.xml,添加权限:
	<uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

MainActivity的代码如下:

package com.example.myapplication;

import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.huawei.anyoffice.sdk.SDKContext;
import com.huawei.anyoffice.sdk.SDKContextOption;
import com.huawei.anyoffice.sdk.log.Log;
import com.huawei.anyoffice.sdk.login.LoginAgent;
import com.huawei.anyoffice.sdk.login.LoginParam;
import com.huawei.anyoffice.sdk.network.NetChangeCallback;
import com.huawei.anyoffice.sdk.network.NetStatusManager;
import com.xys.libzxing.zxing.activity.CaptureActivity;

import org.json.JSONObject;

import java.io.File;
import java.net.InetSocketAddress;
import java.util.Timer;
import java.util.TimerTask;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class MainActivity extends FragmentActivity {

    private Button btn;

    private TextView tv;

    private WebView view;

    private String user;

    private String result;

    //工程对应tag标识
    private String TAG = "MyApplication";

    private static final int TIME_OUT_PROGRESS = 30;
    private static final int TIME_OUT_MILLIS = 5*1000;

    //隧道状态回调的处理
    private NetChangeCallback callback = new NetChangeCallback() {
        @Override
        public void onNetChanged(int oldState, int newState, int errorCode) {
            Log.e(TAG, String.format("oldState:%d, newState:%d, errorCode:%d, ", oldState, newState, errorCode));
        }
    };

    //js调用安卓,必须加@JavascriptInterface注释的方法才可以被js调用
    @JavascriptInterface
    public String androidMethod() {


        return "{\"fullName\":\"张三\",\"departmentName\":\"科技处\"}";
    }

    // 打开扫描界面扫描条形码或二维码
    @JavascriptInterface
    public void openCarema(){
        Intent openCameraIntent = new Intent(MainActivity.this, CaptureActivity.class);
        startActivityForResult(openCameraIntent, 0);
    }

    // 将扫描到的结果返回一下
    @JavascriptInterface
    public String getResult(){
        return result;
    }

    // 获取扫描结果
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            String scanResult = bundle.getString("result");
            this.result = scanResult;
            view.loadUrl("file:///android_asset/"+result);
        }
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        // user = login();
        view = (WebView) findViewById(R.id.view);



        view.clearCache(true);

        view.getSettings().setDomStorageEnabled(true);
        String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
        view.getSettings().setAppCachePath(appCachePath);
        view.getSettings().setAllowFileAccess(true);
        view.getSettings().setAppCacheEnabled(true);

        view.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

        view.getSettings().setJavaScriptEnabled(true);

//        view.loadUrl("file:///android_asset/demo.html");
        view.loadUrl("http://192.168.0.106:9090");

        view.addJavascriptInterface(this, "androidObject");

    }


我写的这个Demo大家可以下载下来看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟特工007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值