|
@ -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
|
}
|