Ver Código Fonte

完成评论视频上传以及多图上传功能

hy 2 anos atrás
pai
commit
8faf825e4a

+ 1 - 3
app/src/main/java/com/electric/chargingpile/activity/SelectTopicActivity.java

@ -76,7 +76,7 @@ public class SelectTopicActivity  extends AppCompatActivity {
76 76
77 77
    public void requestTopicList(){
78 78
        String url = MainApplication.url + "/zhannew/basic/web/index.php/theme/getlist";
79
        Log.e("HYC", "onResponse: "+url );
79
       // Log.e("HYC", "onResponse: "+url );
80 80
        OkHttpUtils.get().url(url).build().connTimeOut(5000).readTimeOut(5000).execute(new StringCallback() {
81 81
82 82
            @Override
@ -90,8 +90,6 @@ public class SelectTopicActivity  extends AppCompatActivity {
90 90
                    String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
91 91
                    if (EmptyUtils.isNotEmpty(rtnCode)&& rtnCode .equals("01")) {
92 92
                        String data = JsonUtils.getKeyResult(response, "data");
93
94
95 93
                        ArrayList<TopicBean> list = mGson.fromJson(data, new TypeToken<ArrayList<TopicBean>>() {
96 94
                        }.getType());
97 95
                        if (list!=null && list.size()>0){

+ 408 - 75
app/src/main/java/com/electric/chargingpile/activity/ZhanCommentActivity.java

@ -7,6 +7,8 @@ import android.content.Context;
7 7
import android.content.Intent;
8 8
import android.content.IntentFilter;
9 9
import android.graphics.Bitmap;
10
import android.graphics.BitmapFactory;
11
import android.graphics.Matrix;
10 12
import android.os.Bundle;
11 13
12 14
import android.os.Handler;
@ -15,6 +17,7 @@ import android.text.Editable;
15 17
import android.text.Html;
16 18
import android.text.TextUtils;
17 19
import android.text.TextWatcher;
20
import android.util.Base64;
18 21
import android.util.Log;
19 22
import android.view.LayoutInflater;
20 23
import android.view.View;
@ -35,6 +38,8 @@ import com.blankj.utilcode.util.CacheUtils;
35 38
import com.electric.chargingpile.R;
36 39
import com.electric.chargingpile.adapter.GridImageAdapter;
37 40
import com.electric.chargingpile.application.MainApplication;
41
import com.electric.chargingpile.data.AuthSignBean;
42
import com.electric.chargingpile.data.ChatRecommendBean;
38 43
import com.electric.chargingpile.data.CommentsBean;
39 44
import com.electric.chargingpile.data.MyOtto;
40 45
import com.electric.chargingpile.data.RObject;
@ -42,7 +47,9 @@ import com.electric.chargingpile.data.TopicBean;
42 47
import com.electric.chargingpile.engine.GlideEngine;
43 48
import com.electric.chargingpile.util.BarColorUtil;
44 49
import com.electric.chargingpile.util.Bimp;
50
import com.electric.chargingpile.util.CommonParams;
45 51
import com.electric.chargingpile.util.DES3;
52
import com.electric.chargingpile.util.DateUtils;
46 53
import com.electric.chargingpile.util.DensityUtil;
47 54
import com.electric.chargingpile.util.JsonUtils;
48 55
import com.electric.chargingpile.util.LoadingDialog;
@ -52,17 +59,21 @@ import com.electric.chargingpile.util.Res;
52 59
import com.electric.chargingpile.util.ScreenUtils;
53 60
import com.electric.chargingpile.util.StatusConstants;
54 61
import com.electric.chargingpile.util.ToastUtil;
62
import com.electric.chargingpile.util.UploadUtil;
55 63
import com.electric.chargingpile.util.Util;
56 64
import com.electric.chargingpile.view.CommentHintDialog;
57 65
import com.electric.chargingpile.view.REditText;
58 66
import com.electric.chargingpile.view.RatingBarView;
59 67
60 68
import com.google.gson.Gson;
69
import com.google.gson.reflect.TypeToken;
61 70
import com.luck.picture.lib.PictureSelector;
62 71
import com.luck.picture.lib.animators.AnimationType;
63 72
import com.luck.picture.lib.config.PictureConfig;
64 73
import com.luck.picture.lib.config.PictureMimeType;
65 74
import com.luck.picture.lib.entity.LocalMedia;
75
import com.upyun.library.common.SerialUploader;
76
import com.upyun.library.listener.UpCompleteListener;
66 77
import com.zhy.http.okhttp.OkHttpUtils;
67 78
import com.zhy.http.okhttp.callback.StringCallback;
68 79
import com.zhy.view.flowlayout.FlowLayout;
@ -72,11 +83,19 @@ import com.zhy.view.flowlayout.TagFlowLayout;
72 83
import org.json.JSONException;
73 84
import org.json.JSONObject;
74 85
86
import java.io.ByteArrayOutputStream;
87
import java.io.File;
88
import java.io.FileInputStream;
89
import java.io.IOException;
75 90
import java.net.URLEncoder;
76 91
import java.util.ArrayList;
92
import java.util.HashMap;
93
import java.util.Iterator;
77 94
import java.util.List;
95
import java.util.Map;
78 96
import java.util.Set;
79 97
98
import cn.jpush.android.api.JPushInterface;
80 99
import okhttp3.Call;
81 100
import pub.devrel.easypermissions.AfterPermissionGranted;
82 101
import pub.devrel.easypermissions.EasyPermissions;
@ -108,7 +127,7 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
108 127
    List<String> list;
109 128
    private String select_s = "";
110 129
    private String select_ss = "";
111
    private TextView tv_grade, tv_point,tv_zhan_name,topicText,commentHint;
130
    private TextView tv_grade, tv_point, tv_zhan_name, topicText, commentHint;
112 131
113 132
114 133
    private RecyclerView noScrollgridview;
@ -125,30 +144,24 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
125 144
    private static final int RC_ALBUM_PERM = 123;
126 145
    public static final int REQUEST_CODE_CHOOSE = 336;
127 146
    public static final int REQUEST_VIDEO_CODE_CHOOSE = 337;
128
    private final Gson mGson=new Gson();
147
    public static final int IMG_ERROR = 12;
148
    public static final int IMGRESLUT = 2;
149
    private final Gson mGson = new Gson();
129 150
    Handler handler = new Handler() {
130 151
        public void handleMessage(Message msg) {
131 152
            switch (msg.what) {
132
                case 2:
133
                    try {
134
                        JSONObject jsonObject = new JSONObject(msg.obj.toString());
135
                        Log.e("111111", msg.obj.toString());
136
                        String code = jsonObject.getString("code");
137
                        if (code.equals("200")) {
138
                            Log.e("200==", "图片成功");
139
                            String fileUrl = jsonObject.getString("fileUrl");
140
                            String thumUrl = jsonObject.getString("thumUrl");
141
                            try {
142
                                addComment(fileUrl, thumUrl);
143
                            } catch (Exception e) {
144
                                e.printStackTrace();
145
                            }
146
                        } else {
147
                            Toast.makeText(ZhanCommentActivity.this, "评论失败", Toast.LENGTH_SHORT).show();
148
                        }
149
                    } catch (JSONException e) {
150
                        e.printStackTrace();
151
                    }
153
                case IMGRESLUT:
154
                        ArrayList<String> fileList =
155
                        mGson.fromJson(msg.obj.toString(),new TypeToken<ArrayList<String>>() {
156
                        }.getType());
157
                         try {
158
                            addComment(fileList, "");
159
                         } catch (Exception e) {
160
                             e.printStackTrace();
161
                         }
162
                    break;
163
                case IMG_ERROR:
164
                    ToastUtil.showToast(getApplicationContext(), "文件上传失败", Toast.LENGTH_SHORT);
152 165
                    break;
153 166
                case StatusConstants.REQUEST_WHAT_SUCCESS:
154 167
@ -159,8 +172,10 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
159 172
        }
160 173
    };
161 174
162
    private int mItemWidth;
175
163 176
    private int mInsterType = -1; //1 插入图片 2 插入视频 -1 未插入数据
177
    private AuthSignBean signBeans;
178
    private SerialUploader serialUploader;
164 179
165 180
    @Override
166 181
    protected void onCreate(Bundle savedInstanceState) {
@ -193,11 +208,11 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
193 208
        findViewById(R.id.imgUpload).setOnClickListener(this);
194 209
        findViewById(R.id.videoUpLoad).setOnClickListener(this);
195 210
        commentHint = (TextView) findViewById(R.id.commentHint);
196
        commentHint.setText(Html.fromHtml("30字以上+图片或15s视频有机会被<font color='#3EC34C'>评为优质评论获得充电优惠券</font>",FROM_HTML_MODE_LEGACY));
211
        commentHint.setText(Html.fromHtml("30字以上+图片或15s视频有机会被<font color='#3EC34C'>评为优质评论获得充电优惠券</font>", FROM_HTML_MODE_LEGACY));
197 212
        tv_point = (TextView) findViewById(R.id.tv_point);
198 213
        tv_zhan_name = (TextView) findViewById(R.id.tv_zhan_name);
199 214
        topicText = (TextView) findViewById(R.id.topicText);
200
        topicText.setText(Html.fromHtml("<font color='#6AB650'>╋</font>  话题",FROM_HTML_MODE_LEGACY));
215
        topicText.setText(Html.fromHtml("<font color='#6AB650'>╋</font>  话题", FROM_HTML_MODE_LEGACY));
201 216
        animation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.nn);
202 217
203 218
        relativeLayout = (RelativeLayout) findViewById(R.id.activity_zhan_comment);
@ -423,29 +438,82 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
423 438
            }
424 439
        });
425 440
426
        tv_zhan_name.setOnClickListener(v->{
441
        tv_zhan_name.setOnClickListener(v -> {
427 442
            CommentHintDialog.newInstart().show(getSupportFragmentManager());
428 443
        });
429
        topicText.setOnClickListener(v->{
444
        topicText.setOnClickListener(v -> {
430 445
            //跳转至话题页
431
            SelectTopicActivity.actionStart(this,REQUEST_TOPIC_CODE);
446
            SelectTopicActivity.actionStart(this, REQUEST_TOPIC_CODE);
432 447
        });
433 448
    }
434 449
435 450
    public void Init() {
436 451
437 452
        noScrollgridview = (RecyclerView) findViewById(R.id.noScrollgridview);
438
        noScrollgridview.setLayoutManager(new GridLayoutManager(this,4));
453
        noScrollgridview.setLayoutManager(new GridLayoutManager(this, 4));
439 454
        int screenWidth = ScreenUtils.getScreenWidth(this);
440
        int mRvMargin=(DensityUtil.dip2px(this,15) * 2);//rv左右间距
441
        int mItemMargin=(DensityUtil.dip2px(this,15) * 3);//item之间的间隙
442
        mItemWidth = ( screenWidth - mRvMargin -  mItemMargin ) / 4;
443
        mAdapter=new GridImageAdapter(this,3,mItemWidth,0);
455
        int rvMargin = (DensityUtil.dip2px(this, 15) * 2);//rv左右间距
456
        int itemMargin = (DensityUtil.dip2px(this, 15) * 3);//item之间的间隙
457
        int itemWidth = (screenWidth - rvMargin - itemMargin) / 4;
458
        mAdapter = new GridImageAdapter(this, 3, itemWidth, 0);
444 459
        mAdapter.setListener(this);
445 460
        noScrollgridview.setAdapter(mAdapter);
446 461
447 462
    }
448 463
464
    public void shite(String s) throws Exception {
465
        ArrayList<String> fileList=new ArrayList<>();
466
        long appTime1 = System.currentTimeMillis() / 1000;
467
        long updatetime = appTime1 - MainMapActivity.cha - 1;
468
        Log.i("appTime(long)---", appTime1 + "");
469
        Log.i("updatetime(long)---", updatetime + "");
470
        Log.i("cha---", MainMapActivity.cha + "");
471
472
        String thumUrl="";
473
        for (int i = 0; i < Bimp.tempSelectMedia.size(); i++) {
474
            try {
475
                LocalMedia media = Bimp.tempSelectMedia.get(i);
476
                String path = "";
477
                if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
478
                    path = media.getAndroidQToPath();
479
                else {
480
                    path = media.getPath();
481
                }
482
                bm = imageZoom(BitmapFactory.decodeFile(path));
483
                String file = bitmapToBase64(bm);
484
                Map<String, String> par = new HashMap<String, String>();
485
486
                par.put("file", file);
487
                par.put("filename", "androidapp" + i + ".jpg");
488
                String u = UploadUtil.post(MainApplication.url + "/zhannew/basic/web/index.php/fileupload/upload",
489
                        par, null);
490
                JSONObject jsonObject = new JSONObject(u);
491
                Log.e("hyc==", u);
492
                String code = jsonObject.getString("code");
493
                if (code.equals("200")) {
494
                    Log.e("200==", "图片成功");
495
                    String fileUrl = jsonObject.getString("fileUrl");
496
                    fileList.add(fileUrl);
497
                }else{
498
499
                    Message msg = new Message();
500
                    msg.what = IMG_ERROR;
501
                    handler.sendMessage(msg);
502
                    return;
503
                }
504
505
            } catch (Exception e) {
506
                e.printStackTrace();
507
            }
508
        }
509
510
        Message msg = new Message();
511
        msg.obj = mGson.toJson(fileList);
512
513
        msg.what = IMGRESLUT;
514
        handler.sendMessage(msg);
515
516
    }
449 517
450 518
    @Override
451 519
    protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
@ -460,7 +528,7 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
460 528
//                    insertImagesSync(data);
461 529
                    Bimp.tempSelectMedia = PictureSelector.obtainMultipleResult(data);
462 530
                    mAdapter.setMaxCount(3);
463
                    mInsterType=1;
531
                    mInsterType = 1;
464 532
465 533
                    mAdapter.setDatas(Bimp.tempSelectMedia);
466 534
@ -468,30 +536,31 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
468 536
                } else if (requestCode == REQUEST_VIDEO_CODE_CHOOSE) {
469 537
                    //异步方式插入视频
470 538
                    setLayoutHintVisible(2);
471
                    mInsterType=2;
539
                    mInsterType = 2;
472 540
                    mAdapter.setMaxCount(1);
473
                    Bimp.tempSelectMedia= PictureSelector.obtainMultipleResult(data);
541
                    Bimp.tempSelectMedia = PictureSelector.obtainMultipleResult(data);
474 542
                    mAdapter.setDatas(Bimp.tempSelectMedia);
475 543
                }
476 544
            }
477
        }else if  (requestCode==REQUEST_TOPIC_CODE && resultCode == SelectTopicActivity.REESULT_CODE){
478
            String name=data.getStringExtra("topicBean");
545
        } else if (requestCode == REQUEST_TOPIC_CODE && resultCode == SelectTopicActivity.REESULT_CODE) {
546
            String name = data.getStringExtra("topicBean");
479 547
            TopicBean bean = mGson.fromJson(name, TopicBean.class);
480 548
            topicText.setText(bean.getMeg());
481 549
        }
482 550
483 551
    }
552
484 553
    /**
485
     * @param type  1表示插入图片成功 2表示插入视频成功 -1表示 插入数据为null
486
     * */
487
    public void setLayoutHintVisible(int type){
488
        if (type==1){
554
     * @param type 1表示插入图片成功 2表示插入视频成功 -1表示 插入数据为null
555
     */
556
    public void setLayoutHintVisible(int type) {
557
        if (type == 1) {
489 558
            noScrollgridview.setVisibility(View.VISIBLE);
490 559
            layoutHint.setVisibility(View.GONE);
491
        }else if (type == 2){
560
        } else if (type == 2) {
492 561
            noScrollgridview.setVisibility(View.VISIBLE);
493 562
            layoutHint.setVisibility(View.GONE);
494
        }else if (type == -1){
563
        } else if (type == -1) {
495 564
            layoutHint.setVisibility(View.VISIBLE);
496 565
            noScrollgridview.setVisibility(View.GONE);
497 566
        }
@ -574,26 +643,46 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
574 643
        et_pinglun.setHint(show_txt);
575 644
    }
576 645
577
    private void addComment(String fileUrl, String thumUrl) throws Exception {
646
    private void addComment(ArrayList<String> fileUrlList, String thumUrl) throws Exception {
578 647
        long appTime1 = System.currentTimeMillis() / 1000;
579 648
        long updatetime = appTime1 - MainMapActivity.cha - 2;
649
580 650
        String token = String.valueOf(updatetime);
581
        String childCommentUrl = "";
582
        if (commentsBean != null) {
583
            childCommentUrl = "&parentid=" + commentsBean.getId() + "&puserid=" + commentsBean.getUserid();
651
        String url = MainApplication.url + "/zhannew/basic/web/index.php/tpappcomments/add";
652
        Map<String,String> map=new HashMap<>();
653
        map.put("userid",MainApplication.userId);
654
        map.put("zhanid",zhan_id);
655
        map.put("comment",URLEncoder.encode(et_pinglun.getText().toString()));
656
        map.put("tel",MainApplication.userPhone);
657
        map.put("token",URLEncoder.encode(DES3.encode(token)));
658
        if (topicText!=null){
659
            map.put("theme",topicText.getText().toString());
584 660
        }
585
        String url = "";
586
        if (commentType == 1) {
587 661
588
            url = MainApplication.url + "/zhannew/basic/web/index.php/tpappcomments/add?userid=" + MainApplication.userId + "&zhanid=" + zhan_id + "&comment=" + URLEncoder.encode(et_pinglun.getText().toString()) + "&tel=" + MainApplication.userPhone + "&token=" + URLEncoder.encode(DES3.encode(token)) + "&fileUrl=" + fileUrl + "&thumUrl=" + thumUrl;
589
            Log.d("url!!!", url);
590
        } else if (commentType == 2) {
591
            url = MainApplication.url + "/zhannew/basic/web/index.php/tpappcomments/add?userid=" + MainApplication.userId + "&zhanid=" + zhan_id + "&comment=" + URLEncoder.encode(et_pinglun.getText().toString()) + "&tel=" + MainApplication.userPhone + "&token=" + URLEncoder.encode(DES3.encode(token)) + childCommentUrl;
592
//            url = "http://59.110.68.162/zhannew/basic/web/index.php/tpappcomments/add?userid=" + MainApplication.userId + "&zhanid=" + zhan_id + "&comment=" + URLEncoder.encode(et_pinglun.getText().toString()) + "&tel=" + MainApplication.userPhone + "&token=" + URLEncoder.encode(DES3.encode(token)) + childCommentUrl;
593
            Log.d("url###", url);
662
        if (commentType == 1){
663
            if (fileUrlList.size()>0){
664
                for (int i = 0; i < fileUrlList.size(); i++) {
665
                    String value = fileUrlList.get(i);
666
                    if (i == 0){
667
                        map.put("fileUrl",value);
668
                    }else{
669
                        map.put("file"+(i+1)+"Url", value);
670
                    }
671
                }
672
                map.put("thumUrl",fileUrlList.get(0));
673
            }
674
675
        }else  if (commentType == 2) {
676
            if (commentsBean != null) {
677
                map.put("parentid",commentsBean.getId());
678
                map.put("puserid", commentsBean.getUserid());
679
            }
594 680
        }
595
        Log.d("url++++", url);
681
682
683
596 684
        OkHttpUtils.get()
685
                .params(map)
597 686
                .url(url)
598 687
                .build()
599 688
                .execute(new StringCallback() {
@ -604,7 +693,7 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
604 693
605 694
                    @Override
606 695
                    public void onResponse(String response) {
607
                        Log.e("comment", response);
696
//                        Log.e("comment", response);
608 697
                        String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
609 698
                        String rtnMsg = JsonUtils.getKeyResult(response, "rtnMsg");
610 699
                        dialog.cancel();
@ -688,25 +777,37 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
688 777
                }
689 778
                if (MainApplication.isLogin()) {
690 779
                    try {
691
                        if (Bimp.tempSelectBitmap.size() > 0) {
780
                        if (Bimp.tempSelectMedia.size() > 0 && mInsterType == 1) {
692 781
                            dialog.show();
693 782
                            new Thread(new Runnable() {
694 783
                                @Override
695 784
                                public void run() {
696 785
                                    try {
697
//                                        shite("");
786
                                        shite("");
698 787
                                    } catch (Exception e) {
699 788
                                        e.printStackTrace();
700 789
                                    }
701 790
                                }
702 791
                            }).start();
703 792
793
                        } else if (Bimp.tempSelectMedia.size() > 0 && mInsterType == 2) {
794
                            //进行视频验证
795
                            LocalMedia media = Bimp.tempSelectMedia.get(0);
796
                            String path = "";
797
                            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q)
798
                                path = media.getAndroidQToPath();
799
                            else {
800
                                path = media.getPath();
801
                            }
802
803
804
                            getYouPaiData(path);
704 805
                        } else {
705 806
                            if (containsEmoji(et_pinglun.getText().toString())) {
706 807
                                ToastUtil.showToast(MainApplication.context, "不支持输入表情", Toast.LENGTH_SHORT);
707 808
                            } else {
708 809
                                dialog.show();
709
                                addComment("", "");
810
                                addComment(new ArrayList<>(), "");
710 811
                            }
711 812
                        }
712 813
                    } catch (Exception e) {
@ -731,7 +832,136 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
731 832
        }
732 833
    }
733 834
734
    private void addImg(){
835
    private void getYouPaiData(String filePath) {
836
        dialog.show();
837
838
//        String url = MainApplication.urlNew + "/get-sign-rest";
839
        String url = MainApplication.d1evTestUrl + "/api/topic/get-sign-rest2cdz";
840
        if (TextUtils.isEmpty(filePath)) {
841
            ToastUtil.showToast(getApplicationContext(), "请重新选择视频", Toast.LENGTH_SHORT);
842
            return;
843
        }
844
845
        String deviceId = JPushInterface.getUdid(MainApplication.context);
846
        String fileName = DateUtils.getSimpleCurrentDate();
847
        if (TextUtils.isEmpty(deviceId)) {
848
            fileName += "_" + Util.getRandom(15);
849
        } else {
850
            fileName += "_" + deviceId;
851
        }
852
853
        if (TextUtils.isEmpty(filePath)) {
854
            fileName = "";
855
        } else {
856
            String suffix = filePath.substring(filePath.lastIndexOf(".") + 1);
857
            fileName += "." + suffix;
858
        }
859
860
861
        Map<String, String> map = new HashMap<>();
862
        map.put("fileName", fileName);
863
        try {
864
            FileInputStream fileInputStream = new FileInputStream(new File(filePath));
865
            map.put("contentLength", String.valueOf(fileInputStream.available()));
866
        } catch (Exception e) {
867
            e.printStackTrace();
868
        }
869
        map.put("targetType", ChatRecommendBean.TARGET_TYPE_VIDEO + "");
870
        CommonParams.addCommonParams(map);
871
872
        String finalFileName = fileName;
873
        OkHttpUtils.get()
874
                .params(map)
875
                .url(url)
876
                .build()
877
                .connTimeOut(6000)
878
                .readTimeOut(6000)
879
                .execute(new StringCallback() {
880
                    @Override
881
                    public void onError(Call call, Exception e) {
882
                        ToastUtil.showToast(getApplicationContext(), "发布失败,请重试", Toast.LENGTH_SHORT);
883
                        dialog.dismiss();
884
                    }
885
886
                    @Override
887
                    public void onResponse(String response) {
888
                        Log.e("hyc--", response);
889
                        String code = JsonUtils.getKeyResult(response, "code");
890
                        String desc = JsonUtils.getKeyResult(response, "desc");
891
                        if ("1000".equals(code)) {
892
                            String data = JsonUtils.getKeyResult(response, "data");
893
                            signBeans = (AuthSignBean) JsonUtils.parseToObjectBean(data, AuthSignBean.class);
894
                            if (null != signBeans) {
895
                                String sign = signBeans.sign;
896
                                String policy = signBeans.policy;
897
                                formUpload(filePath, sign, policy, finalFileName);
898
                            } else {
899
                                ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT);
900
                            }
901
                        } else {
902
                            ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT);
903
                            dialog.dismiss();
904
                        }
905
                    }
906
                });
907
908
    }
909
910
    /**
911
     * 表单上传
912
     *
913
     * @param SAMPLE_PIC_FILE
914
     * @param sign
915
     * @param policyServer
916
     */
917
    private void formUpload(String SAMPLE_PIC_FILE, String sign, String policyServer, String fileName) {
918
919
        if (serialUploader == null) {
920
            serialUploader = new SerialUploader();
921
        }
922
923
        serialUploader.setCheckMD5(false);
924
925
        File temp = new File(SAMPLE_PIC_FILE);
926
927
        serialUploader.setOnProgressListener((bytesWrite, contentLength) -> {
928
929
        });
930
        String decoder = new String(Base64.decode((policyServer), Base64.DEFAULT));
931
932
        JSONObject jsonObject = null;
933
        try {
934
            jsonObject = new JSONObject(decoder);
935
        } catch (JSONException e) {
936
            e.printStackTrace();
937
        }
938
        String uri = jsonObject.optString("URI");
939
        String date = jsonObject.optString("Date");
940
        String operator = jsonObject.optString("Operator");
941
        String saveKey = jsonObject.optString("save-key");
942
943
        serialUploader.upload(
944
                temp, uri, date, "UPYUN " + operator + ":" + sign, null, new UpCompleteListener() {
945
                    @Override
946
                    public void onComplete(boolean isSuccess, String result) {
947
                        if (isSuccess) {
948
                            try {
949
                                ArrayList<String> list = new ArrayList<>();
950
                                list.add(saveKey);
951
                                addComment(list, saveKey);
952
                            } catch (Exception e) {
953
                                e.printStackTrace();
954
                            }
955
                        } else {
956
                            ToastUtil.showToast(getApplicationContext(), "发布失败,请重试", Toast.LENGTH_SHORT);
957
                            dialog.dismiss();
958
                        }
959
960
                    }
961
                });
962
    }
963
964
    private void addImg() {
735 965
        PictureSelector.create(this)
736 966
                .openGallery(PictureMimeType.ofImage())
737 967
                .maxSelectNum(PIC_NUM)
@ -753,7 +983,8 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
753 983
                .isAutomaticTitleRecyclerTop(true)//图片列表超过一屏连续点击顶部标题栏快速回滚至顶部
754 984
                .forResult(REQUEST_CODE_CHOOSE);
755 985
    }
756
    private void addVideo(){
986
987
    private void addVideo() {
757 988
        PictureSelector.create(this)
758 989
                .openGallery(PictureMimeType.ofVideo())
759 990
                .selectionMode(PictureConfig.SINGLE)
@ -775,7 +1006,7 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
775 1006
                .recordVideoSecond(15)//录制视频秒数 默认60s
776 1007
                .isPreviewVideo(true)//是否预览视频
777 1008
                .isSingleDirectReturn(true)//PictureConfig.SINGLE模式下是否直接返回
778
              //  .filterMaxFileSize(100)//查询指定大小内的图片、视频、音频大小,单位M
1009
                //  .filterMaxFileSize(100)//查询指定大小内的图片、视频、音频大小,单位M
779 1010
                .forResult(REQUEST_VIDEO_CODE_CHOOSE);
780 1011
    }
781 1012
@ -820,27 +1051,27 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
820 1051
821 1052
    @Override
822 1053
    public void add() {
823
        if (mInsterType == 1){
1054
        if (mInsterType == 1) {
824 1055
            addImg();
825
        }else if (mInsterType == 2){
1056
        } else if (mInsterType == 2) {
826 1057
            addVideo();
827 1058
        }
828 1059
    }
829 1060
830 1061
    @Override
831 1062
    public void remove(int position) {
832
        if (mAdapter.getItemCount() == 1){
1063
        if (mAdapter.getItemCount() == 1) {
833 1064
            setLayoutHintVisible(-1);
834
            mInsterType=-1;
1065
            mInsterType = -1;
835 1066
        }
836 1067
837 1068
    }
838 1069
839 1070
    @Override
840 1071
    public void open(int position, LocalMedia mLocalMedia) {
841
        if (mInsterType == 1){
842
            ImageDisplayActivity.actionStart(this,position);
843
        }else if (mInsterType == 2){
1072
        if (mInsterType == 1) {
1073
            ImageDisplayActivity.actionStart(this, position);
1074
        } else if (mInsterType == 2) {
844 1075
            PictureSelector.create(ZhanCommentActivity.this)
845 1076
                    .themeStyle(R.style.picture_default_style)
846 1077
                    .setPictureStyle(Util.getWhiteStyle(ZhanCommentActivity.this))// 动态自定义相册主题
@ -848,6 +1079,7 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
848 1079
        }
849 1080
    }
850 1081
1082
851 1083
    public class MyTopic extends RObject {
852 1084
        private String id;
853 1085
@ -877,6 +1109,73 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
877 1109
        Bimp.tempSelectMedia.clear();
878 1110
    }
879 1111
1112
    private String bitmapToBase64(Bitmap bitmap) {
1113
1114
        String result = null;
1115
        ByteArrayOutputStream baos = null;
1116
        try {
1117
            if (bitmap != null) {
1118
                baos = new ByteArrayOutputStream();
1119
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
1120
                baos.flush();
1121
                baos.close();
1122
                byte[] bitmapBytes = baos.toByteArray();
1123
                result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT);
1124
            }
1125
        } catch (IOException e) {
1126
            e.printStackTrace();
1127
        } finally {
1128
            try {
1129
                if (baos != null) {
1130
                    baos.flush();
1131
                    baos.close();
1132
                }
1133
            } catch (IOException e) {
1134
                e.printStackTrace();
1135
            }
1136
        }
1137
        return result;
1138
    }
1139
1140
    private Bitmap imageZoom(Bitmap bm) {
1141
        // 图片允许最大空间 单位:KB
1142
        double maxSize = 200.00;
1143
        // 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大)
1144
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
1145
        bm.compress(Bitmap.CompressFormat.JPEG, 100, baos);
1146
        byte[] b = baos.toByteArray();
1147
        // 将字节换成KB
1148
        double mid = b.length / 1024;
1149
        // 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩
1150
        if (mid > maxSize) {
1151
            // 获取bitmap大小 是允许最大大小的多少倍
1152
            double i = mid / maxSize;
1153
            // 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍
1154
            // (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小)
1155
            bm = zoomImage(bm, bm.getWidth() / Math.sqrt(i), bm.getHeight()
1156
                    / Math.sqrt(i));
1157
        }
1158
1159
        return bm;
1160
    }
1161
1162
    public Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) {
1163
        // 获取这个图片的宽和高
1164
        float width = bgimage.getWidth();
1165
        float height = bgimage.getHeight();
1166
        // 创建操作图片用的matrix对象
1167
        Matrix matrix = new Matrix();
1168
        // 计算宽高缩放率
1169
        float scaleWidth = ((float) newWidth) / width;
1170
        float scaleHeight = ((float) newHeight) / height;
1171
        // 缩放图片动作
1172
        matrix.postScale(scaleWidth, scaleHeight);
1173
        Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width,
1174
                (int) height, matrix, true);
1175
//        iv_2.setImageBitmap(bitmap);
1176
//        tv_2.setText(bitmap.getRowBytes() * bitmap.getHeight() + "");
1177
        return bitmap;
1178
    }
880 1179
881 1180
    class NetworkChangeReceiver extends BroadcastReceiver {
882 1181
@ -904,12 +1203,12 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
904 1203
        }
905 1204
        mAdapter.notifyDataSetChanged();
906 1205
907
        if (mInsterType == 1 && mAdapter.getItemCount() == 1){
1206
        if (mInsterType == 1 && mAdapter.getItemCount() == 1) {
908 1207
            setLayoutHintVisible(-1);
909
            mInsterType=-1;
910
        }else if (mInsterType == 2 && mAdapter.getItemCount() == 0){
1208
            mInsterType = -1;
1209
        } else if (mInsterType == 2 && mAdapter.getItemCount() == 0) {
911 1210
            setLayoutHintVisible(-1);
912
            mInsterType=-1;
1211
            mInsterType = -1;
913 1212
        }
914 1213
915 1214
    }
@ -944,4 +1243,38 @@ public class ZhanCommentActivity extends AppCompatActivity implements View.OnCli
944 1243
                && (codePoint <= 0x10FFFF));
945 1244
    }
946 1245
1246
    /**
1247
     * 将json 数组转换为Map 对象
1248
     *
1249
     * @param jsonString
1250
     * @return
1251
     */
1252
1253
    public static Map<String, Object> getMap(String jsonString) {
1254
        JSONObject jsonObject;
1255
        Map<String, Object> valueMap = new HashMap<String, Object>();
1256
        if (TextUtils.isEmpty(jsonString)) {
1257
            return valueMap;
1258
        }
1259
        try {
1260
            jsonObject = new JSONObject(jsonString);
1261
            @SuppressWarnings("unchecked")
1262
            Iterator<String> keyIter = jsonObject.keys();
1263
            String key;
1264
            Object value;
1265
1266
            while (keyIter.hasNext()) {
1267
                key = (String) keyIter.next();
1268
                value = jsonObject.get(key);
1269
                valueMap.put(key, value);
1270
            }
1271
            return valueMap;
1272
        } catch (JSONException e) {
1273
            e.printStackTrace();
1274
        }
1275
1276
        return valueMap;
1277
1278
    }
1279
947 1280
}

+ 2 - 0
app/src/main/java/com/electric/chargingpile/application/MainApplication.java

@ -97,6 +97,8 @@ public class MainApplication extends MultiDexApplication {
97 97
//    public static String pic_url = "http://cdz.evcharge.cc/zhannew/uploadfile/";
98 98

99 99
        public static String urlNew = "http://123.56.67.7:83/api/0300";// 一电测试环境
100
        public static String d1evTestUrl = "https://d1ev-new.yiduyongche.com";// 一电测试环境
101
        public static String CDN = "https://cdn-fs.d1ev.com";
100 102
//    public static String urlNew = "https://api.touchev.com:83/api/0300";// 一电正式环境
101 103

102 104