Prechádzať zdrojové kódy

Merge branch 'sheep_develop' into sheep_develop_jenkins

zengjiebin 7 rokov pred
rodič
commit
b2fb113f91

+ 51 - 0
app/src/main/java/com/sheep/gamegroup/util/QRUtil.java

@@ -0,0 +1,51 @@
+package com.sheep.gamegroup.util;
+
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+
+import com.google.zxing.BinaryBitmap;
+import com.google.zxing.ChecksumException;
+import com.google.zxing.FormatException;
+import com.google.zxing.NotFoundException;
+import com.google.zxing.RGBLuminanceSource;
+import com.google.zxing.Result;
+import com.google.zxing.common.HybridBinarizer;
+import com.google.zxing.qrcode.QRCodeReader;
+
+import java.io.File;
+
+import rx.functions.Action1;
+
+/**
+ * Created by realicing on 2018/10/25.
+ * realicing@sina.com
+ * 二维码工具类
+ */
+public class QRUtil {
+    public static void readFile(File file, Action1<Result> action1) {
+        String path = file.getAbsolutePath();
+        if(file.exists()) {
+            Bitmap bitmap = BitmapFactory.decodeFile(path);
+            int width = bitmap.getWidth();
+            int height = bitmap.getHeight();
+            int[] data = new int[width * height];
+            bitmap.getPixels(data, 0, width, 0, 0, width, height);
+            RGBLuminanceSource source = new RGBLuminanceSource(width, height, data);
+            BinaryBitmap bitmap1 = new BinaryBitmap(new HybridBinarizer(source));
+            QRCodeReader reader = new QRCodeReader();
+            Result re = null;
+            try {
+                re = reader.decode(bitmap1);
+            } catch (NotFoundException e) {
+                e.printStackTrace();
+            } catch (ChecksumException e) {
+                e.printStackTrace();
+            } catch (FormatException e) {
+                e.printStackTrace();
+            }
+            action1.call(re);
+        } else {
+            action1.call(null);
+        }
+    }
+}

+ 61 - 42
app/src/main/java/com/sheep/gamegroup/view/adapter/TaskdetailSonListviewAdp.java

@@ -2,7 +2,6 @@ package com.sheep.gamegroup.view.adapter;
 
 import android.app.Activity;
 import android.content.Context;
-import android.graphics.BitmapFactory;
 import android.support.constraint.ConstraintLayout;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
@@ -16,19 +15,18 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.bumptech.glide.Glide;
-import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
-import com.bumptech.glide.request.RequestOptions;
+import com.google.zxing.Result;
 import com.sheep.gamegroup.model.entity.ScreenshotsEntity;
 import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskDescEntity;
 import com.sheep.gamegroup.model.entity.TaskReleaseEty;
 import com.sheep.gamegroup.util.CommonUtil;
 import com.sheep.gamegroup.util.GlideImageLoader;
+import com.sheep.gamegroup.util.Jump2View;
 import com.sheep.gamegroup.util.ListUtil;
 import com.sheep.gamegroup.util.MyListview;
+import com.sheep.gamegroup.util.QRUtil;
 import com.sheep.jiuyan.samllsheep.R;
-import com.sheep.jiuyan.samllsheep.SheepApp;
-import com.sheep.jiuyan.samllsheep.utils.FileUtil;
 import com.sheep.jiuyan.samllsheep.utils.G;
 
 import java.io.File;
@@ -53,16 +51,16 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
     public TaskdetailSonListviewAdp(List<TaskChild> descEntityArrayList, Context context) {
         this.descEntityArrayList = descEntityArrayList;
         this.context = context;
-        with = G.WIDTH > G.HEIGHT ? G.HEIGHT / 3 - 50 :G.WIDTH / 3 - 50;
+        with = G.WIDTH > G.HEIGHT ? G.HEIGHT / 3 - 50 : G.WIDTH / 3 - 50;
     }
 
-    public void addTaskEntity(TaskReleaseEty taskReleaseEty){
+    public void addTaskEntity(TaskReleaseEty taskReleaseEty) {
         this.taskReleaseEty = taskReleaseEty;
     }
 
     @Override
     public int getCount() {
-        return descEntityArrayList== null? 0:descEntityArrayList.size();
+        return descEntityArrayList == null ? 0 : descEntityArrayList.size();
     }
 
     @Override
@@ -79,9 +77,9 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
     public View getView(final int position, View convertView, ViewGroup parent) {
         Object tag = convertView == null ? null : convertView.getTag();
         ViewHolder holder;
-        if(tag instanceof ViewHolder){
+        if (tag instanceof ViewHolder) {
             holder = (ViewHolder) tag;
-        }else {
+        } else {
             holder = new ViewHolder();
             convertView = LayoutInflater.from(context).inflate(R.layout.taskdetail_mylistview_item, null);
             holder.title_item_tv = convertView.findViewById(R.id.title_item_tv);
@@ -105,23 +103,23 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
             convertView.setTag(holder);
         }
         final TaskChild descEntity = descEntityArrayList.get(position);
-        if(descEntity == null)
+        if (descEntity == null)
             return convertView;
-        if(TextUtils.isEmpty(descEntity.getAmount())){
+        if (TextUtils.isEmpty(descEntity.getAmount())) {
             holder.title_item_layout.setVisibility(View.GONE);
-            holder.item_show_layout.setPadding(10,3,3,3);
+            holder.item_show_layout.setPadding(10, 3, 3, 3);
 //            holder.item_detail_show_layout.setBackgroundResource(R.drawable.x_shap_shadow_bg_rectgangle_white);
-        }else {
+        } else {
             holder.title_item_layout.setVisibility(View.VISIBLE);
-            holder.num_item_textview.setText(position + 1+"");
+            holder.num_item_textview.setText(position + 1 + "");
             CommonUtil.getInstance()
                     .bindDataTaskDetailSon(descEntity, holder.title_item_tv, position);
-            holder.title_item_price_tv.setText("+" + descEntity.getAmount() +"元");
-            if(descEntity.isSelectFlag()){
+            holder.title_item_price_tv.setText("+" + descEntity.getAmount() + "元");
+            if (descEntity.isSelectFlag()) {
                 holder.select_tab_iv.setRotation(180);
                 holder.item_show_layout.setVisibility(View.VISIBLE);
                 holder.title_item_layout.setBackgroundResource(R.drawable.sp_bg_blue_top);
-            }else {
+            } else {
                 holder.select_tab_iv.setRotation(0);
                 holder.item_show_layout.setVisibility(View.GONE);
                 holder.title_item_layout.setBackgroundResource(R.drawable.sp_bg_blue_91bdd6_radius);
@@ -129,12 +127,12 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
             holder.item_detail_show_layout.setBackgroundResource(R.drawable.sp_bg_white_solid_bottom);
         }
         //task_type 1006
-        qrCodeView(holder.ar_code_layout,holder.btn_task_item,holder.qr_code_notice_tv,holder.qr_code_iv);
+        qrCodeView(holder.ar_code_layout, holder.btn_task_item, holder.qr_code_notice_tv, holder.qr_code_iv);
 
 
-        if(descEntity.getScreenshotsList() != null && descEntity.getScreenshotsList().size() > 0){
+        if (descEntity.getScreenshotsList() != null && descEntity.getScreenshotsList().size() > 0) {
             holder.taskdetail_screenshot_layout.setVisibility(View.VISIBLE);
-        }else {
+        } else {
             holder.taskdetail_screenshot_layout.setVisibility(View.GONE);
         }
 
@@ -159,12 +157,12 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
         /*
 
          */
-        if(descEntity.getDescEntityList() != null && descEntity.getDescEntityList().size() > 0){
-            holder.item_detail_listview.setAdapter(new ArrayAdapter<TaskDescEntity>(context, R.layout.textview_layout, descEntity.getDescEntityList()){
+        if (descEntity.getDescEntityList() != null && descEntity.getDescEntityList().size() > 0) {
+            holder.item_detail_listview.setAdapter(new ArrayAdapter<TaskDescEntity>(context, R.layout.textview_layout, descEntity.getDescEntityList()) {
                 @Override
                 public boolean convert(int position, View convertView, ViewGroup parent, TaskDescEntity item) {
                     TaskDescEntity taskDescEntity = item;
-                    if(taskDescEntity == null){
+                    if (taskDescEntity == null) {
                         return true;
                     }
                     TextView textView = convertView.findViewById(R.id.textview);
@@ -183,16 +181,16 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
         /*
          * 截图
          */
-        if(!ListUtil.isEmpty(descEntity.getScreenshotsList())){
+        if (!ListUtil.isEmpty(descEntity.getScreenshotsList())) {
             final ArrayList<String> imgListStr = new ArrayList<>();
-            for(ScreenshotsEntity s: descEntity.getScreenshotsList()){
+            for (ScreenshotsEntity s : descEntity.getScreenshotsList()) {
                 imgListStr.add(s.getImg());
             }
 
             LinearLayoutManager layoutManager = new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false);
             holder.recycler_screenshot_view.setHasFixedSize(true);
             holder.recycler_screenshot_view.setLayoutManager(layoutManager);
-            holder.recycler_screenshot_view.setAdapter(new AdbCommonRecycler<ScreenshotsEntity>(context, descEntity.getScreenshotsList()){
+            holder.recycler_screenshot_view.setAdapter(new AdbCommonRecycler<ScreenshotsEntity>(context, descEntity.getScreenshotsList()) {
                 @Override
                 public int getViewIdByType(int type) {
                     return R.layout.taskdetail_desc_item_screens;
@@ -203,9 +201,9 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
                     ImageView screens_iv = viewHolder.itemView.findViewById(R.id.screens_iv);
                     TextView screens_tv = viewHolder.itemView.findViewById(R.id.screens_tv);
 
-                    if(TextUtils.isEmpty(item.getDesc())){
+                    if (TextUtils.isEmpty(item.getDesc())) {
                         screens_tv.setVisibility(View.GONE);
-                    }else {
+                    } else {
                         screens_tv.setVisibility(View.VISIBLE);
                         screens_tv.setText(item.getDesc());
                         screens_tv.setMaxWidth(with);
@@ -218,8 +216,8 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
                     screens_iv.setOnClickListener(new View.OnClickListener() {
                         @Override
                         public void onClick(View v) {
-                            try{
-                                if(!ListUtil.isEmpty(imgListStr)){
+                            try {
+                                if (!ListUtil.isEmpty(imgListStr)) {
                                     PhotoPreview.builder()
                                             .setPhotos(imgListStr)
                                             .setCurrentItem(viewHolder.getAdapterPosition())
@@ -227,7 +225,7 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
                                             .start((Activity) context, 101);
                                 }
 
-                            }catch (Exception e){
+                            } catch (Exception e) {
                                 e.printStackTrace();
                             }
                         }
@@ -238,7 +236,6 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
         }
 
 
-
         holder.title_item_layout.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -258,8 +255,8 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
         return convertView;
     }
 
-    class ViewHolder{
-        TextView  title_item_tv, item_remaining_time_tv, title_item_price_tv, num_item_textview, btn_task_item, qr_code_notice_tv;
+    class ViewHolder {
+        TextView title_item_tv, item_remaining_time_tv, title_item_price_tv, num_item_textview, btn_task_item, qr_code_notice_tv;
         ImageView select_tab_iv, qr_code_iv;
         LinearLayout title_item_layout, taskdetail_screenshot_layout, item_show_layout, item_detail_show_layout;
         MyListview item_detail_listview;
@@ -270,21 +267,43 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
     /**
      * 1006 小程序 item 显示
      */
-    private void qrCodeView(View ar_code_layout, final View btn_task_item, View qr_code_notice_tv, final View qr_code_iv){
+    private void qrCodeView(View ar_code_layout, final View btn_task_item, View qr_code_notice_tv, final View qr_code_iv) {
         //task_type 1006
-        if(taskReleaseEty == null || taskReleaseEty.getTask() == null || !taskReleaseEty.getTask().isApplet()){
+        if (taskReleaseEty == null || taskReleaseEty.getTask() == null || !taskReleaseEty.getTask().isApplet()) {
             ar_code_layout.setVisibility(View.GONE);
-        }else {
-            if(taskReleaseEty.isIs_running()){
-                GlideImageLoader.downloadAndRoundedImage(String.valueOf(taskReleaseEty.getTask().getQr_code().hashCode()), taskReleaseEty.getTask().getQr_code(), (ImageView) qr_code_iv,
+        } else {
+            if (taskReleaseEty.isIs_running()) {
+                final String name = String.valueOf(taskReleaseEty.getTask().getQr_code().hashCode());
+                GlideImageLoader.downloadAndRoundedImage(name, taskReleaseEty.getTask().getQr_code(), (ImageView) qr_code_iv,
                         context.getResources().getDimensionPixelSize(R.dimen.content_padding_150), context.getResources().getDimensionPixelSize(R.dimen.content_padding_8));
                 btn_task_item.setVisibility(View.VISIBLE);
                 qr_code_notice_tv.setVisibility(View.GONE);
+                qr_code_iv.setOnLongClickListener(new View.OnLongClickListener() {
+                    @Override
+                    public boolean onLongClick(View view) {
+                        GlideImageLoader.downLoadImage(name, taskReleaseEty.getTask().getQr_code(), new Action1<File>() {
+                            @Override
+                            public void call(File file) {
+                                QRUtil.readFile(file, new Action1<Result>() {
+                                    @Override
+                                    public void call(Result result) {
+                                        if (result != null && !TextUtils.isEmpty(result.getText())) {
+                                            Jump2View.getInstance().goWeb(context, result.getText());
+                                        } else {
+                                            G.showToast("请通过微信等应用进行扫描");
+                                        }
+                                    }
+                                });
+                            }
+                        });
+                        return true;
+                    }
+                });
                 btn_task_item.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View v) {
                         TASK_SAVE_QR.onEvent();
-                        GlideImageLoader.downLoadImage(String.valueOf(taskReleaseEty.getTask().getQr_code().hashCode()), taskReleaseEty.getTask().getQr_code(), new Action1<File>() {
+                        GlideImageLoader.downLoadImage(name, taskReleaseEty.getTask().getQr_code(), new Action1<File>() {
                             @Override
                             public void call(File file) {
                                 G.showToast("保存成功,图片路径:" + file.getAbsolutePath());
@@ -292,7 +311,7 @@ public class TaskdetailSonListviewAdp extends BaseAdapter {
                         });
                     }
                 });
-            }else {
+            } else {
                 btn_task_item.setVisibility(View.GONE);
                 qr_code_notice_tv.setVisibility(View.VISIBLE);
             }