Android生成二维码根据类型进行并扫描解析

最近在搞这块东西,简单分享下。
先说下思路,首先是根据某些信息比如价格,标题,之类的调用CodeUtils.createImage设置宽高,String和转换成bitmap,然后再让Imageview去加载(原生设置或者glide都行).
然后就是扫描了,扫描的话我前两篇博客写了,就是利用了 CaptureFragment进行扫描,然后有个回调(analyzeCallback),有两个onAnalyzeSuccess和onAnalyzeFail,在Success的时候进行处理,如下:

    private void scanSuccess(String result) {
        LogUtil.e("chen  描扫结果处理 ", result);
        if (!Check.isEmpty(result) && result.indexOf("http") > -1) {
            if(result.indexOf("mall/goodsDetail")>-1){
                Uri uri = Uri.parse(result);
                String goodsId = uri.getQueryParameter("goodsId");
                String courseType = uri.getQueryParameter("courseType");
                if (result.endsWith("&courseType")) {
                    //说明是专栏
                    ARouter.getInstance().build(SPECIAL_DETAILS_ACTIVITY)
                            .withString("data", null)
                            .withString("goodsId", goodsId)
                            .withString("payType", "1").navigation();
                } else {
                    if (courseType.equals("VIDEO") || courseType.equals("AUDIO")) {
                        //2 课程
                        ARouter.getInstance().build(CURRICULUM_DETAILS_ACTIVITY)
                                .withString("data", null)
                                .withString("goodsId", goodsId)
                                .withString("coursetype", courseType)
                                .withString("payType", "1").navigation();
                    } else {
                        ARouter.getInstance().build(LIVE_BROADCAST_DETAILS_ACTIVITY)
                                .withString("data", null)
                                .withString("goodsId", goodsId)
                                .withString("coursetype", courseType)
                                .withString("payType", "1").navigation();
                    }
                }
                return;
            }else if(result.indexOf("mall/mallShop")>-1){
                //分享店铺
                Uri uri = Uri.parse(result);
                String shopId = uri.getQueryParameter("shopId");
                String inviteUserId = uri.getQueryParameter("inviteUserId");
                //店铺分享
                ARouter.getInstance().build(SHOP_FRONT_PAGE_ACTIVITY)
                        .withString("shopId",shopId)
                        .withString("payType","1")
                        .withString("inviteUserId",inviteUserId)
                        .navigation();
                return;
            }

            //其他走网页
            Pattern pattern = Patterns.WEB_URL;
            Matcher matcher = pattern.matcher(result);
            if (matcher.find()) {
                link = matcher.group(0);
            }
            Intent intent = new Intent(this, CommonWebActivity.class);
            intent.putExtra("webUrl", link);
            intent.putExtra("webTitle", " ");
            intent.putExtra("mContent", "");
            startActivity(intent);
            finish();
            return;
        }
        try {
            JSONObject jsonObject = new JSONObject(result);
            if (jsonObject.has("type")) {
                ScanResult scanResult = new Gson().fromJson(result, ScanResult.class);
                if (scanResult != null) {
                    if (scanResult.getType() != 0) {
                        switch (scanResult.getType()) {
                            //好友
                            case 1:
                                UserProfileActivity.start(this, scanResult.getAccount(), true);
                                break;
                            //群组
                            case 2:
                                AdvancedTeam(scanResult.getAccount());
                                break;
                            //社群
                            case 3:
                                AdvancedTeam(scanResult.getAccount());
                                break;
                        }
                    }
                }
            } else {
                ToastUtils.error("无法识别此二维码!");
            }
            finish();
        } catch (JSONException e) {
            e.printStackTrace();
            ToastUtils.error("无法识别此二维码!");
            finish();
        }

    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章