最近在搞这块东西,简单分享下。
先说下思路,首先是根据某些信息比如价格,标题,之类的调用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();
}
}