充电桩app代码

ChargingCommentActivity.java 58KB

    package com.electric.chargingpile.activity; import android.Manifest; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Matrix; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Editable; import android.text.Html; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Base64; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.animation.AnimationUtils; import android.view.inputmethod.InputMethodManager; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.ScrollView; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.blankj.utilcode.util.CacheUtils; import com.blankj.utilcode.util.EmptyUtils; import com.blankj.utilcode.util.LogUtils; import com.bumptech.glide.Glide; import com.electric.chargingpile.R; import com.electric.chargingpile.adapter.GridImageAdapter; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.AuthSignBean; import com.electric.chargingpile.data.ChargingShareBean; import com.electric.chargingpile.data.ChatRecommendBean; import com.electric.chargingpile.data.CommentsBean; import com.electric.chargingpile.data.RObject; import com.electric.chargingpile.data.TopicBean; import com.electric.chargingpile.engine.GlideEngine; import com.electric.chargingpile.util.BarColorUtil; import com.electric.chargingpile.util.Bimp; import com.electric.chargingpile.util.CommonParams; import com.electric.chargingpile.util.DES3; import com.electric.chargingpile.util.DateUtils; import com.electric.chargingpile.util.DensityUtil; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.LoadingDialog; import com.electric.chargingpile.util.Md5Util; import com.electric.chargingpile.util.Res; import com.electric.chargingpile.util.ScreenUtils; import com.electric.chargingpile.util.StatusConstants; import com.electric.chargingpile.util.ToastUtil; import com.electric.chargingpile.util.UploadUtil; import com.electric.chargingpile.util.Util; import com.electric.chargingpile.view.CommentHintDialog; import com.electric.chargingpile.view.HongBaoDialog; import com.electric.chargingpile.view.HongBaoResultDialog; import com.electric.chargingpile.view.REditText; import com.electric.chargingpile.view.RatingBarView; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.animators.AnimationType; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; import com.luck.picture.lib.entity.LocalMedia; import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; import com.upyun.library.common.SerialUploader; import com.upyun.library.listener.UpCompleteListener; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import com.zhy.view.flowlayout.FlowLayout; import com.zhy.view.flowlayout.TagAdapter; import com.zhy.view.flowlayout.TagFlowLayout; import org.json.JSONException; import org.json.JSONObject; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import cn.jpush.android.api.JPushInterface; import cn.sharesdk.framework.Platform; import cn.sharesdk.framework.PlatformActionListener; import cn.sharesdk.framework.ShareSDK; import cn.sharesdk.tencent.qq.QQ; import cn.sharesdk.wechat.friends.Wechat; import cn.sharesdk.wechat.moments.WechatMoments; import okhttp3.Call; import okhttp3.ResponseBody; import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.EasyPermissions; import static android.text.Html.FROM_HTML_MODE_LEGACY; public class ChargingCommentActivity extends AppCompatActivity implements View.OnClickListener, PlatformActionListener, EasyPermissions.PermissionCallbacks, GridImageAdapter.GridImgListener { private static final String TAG = "ChargingCommentActivity"; private static final int PIC_NUM = 3; private ProgressDialog insertDialog; public static CommentsBean commentsBean; public static int commentType = 1; Bitmap bm = null; private PopupWindow popupWindow; private View popupWindowView; String zhan_id, zhuang_id, order_id; public static REditText et_pinglun; private TextView tv_make_sure, tv_huodong, tv_zhan_name; private String star_level = ""; private String show_txt = ""; private RelativeLayout rl_huodong, rl_comment; private RatingBarView ratingBarView; private ImageView iv_back,imgAd; private LoadingDialog dialog; private String[] stringArr; private String[] mValss = new String[]{MainApplication.huodonglabel}; private TagFlowLayout mFlowLayout, mFlowLayoutTwo; List<String> list; private String select_s = ""; private String select_ss = ""; private TextView tv_grade, topicText, commentHint; public static Bitmap bimap; private GridImageAdapter mAdapter; private RecyclerView noScrollgridview; private ScrollView sv; private static final int PHOTO_REQUEST_CAMERA = 1; private static final int PHOTO_REQUEST_GALLERY = 2; private static final int PHOTO_REQUEST_CUT = 3; private static final int REQUEST_TOPIC_CODE = 102; private InputMethodManager imm = null; private String url = "1", icon = "", title = "", text = " "; private String money = ""; private TextView tv_point; private RelativeLayout rl_point; private LinearLayout layoutHint; private android.view.animation.Animation animation; private ChargingShareBean chargingShareBean; private String isShow = "0"; private HongBaoDialog hongBaoDialog; private static final int RC_ALBUM_PERM = 123; public static final int REQUEST_CODE_CHOOSE = 335; public static final int REQUEST_VIDEO_CODE_CHOOSE = 337; public static final int IMG_ERROR = 12; public static final int IMGRESLUT = 2; private final Gson mGson = new Gson(); //输入表情前EditText中的文本 // private String inputAfterText; Handler handler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case IMGRESLUT: ArrayList<String> fileList = mGson.fromJson(msg.obj.toString(),new TypeToken<ArrayList<String>>() { }.getType()); try { addComments(fileList, ""); } catch (Exception e) { e.printStackTrace(); } break; case IMG_ERROR: ToastUtil.showToast(getApplicationContext(), "图片上传失败", Toast.LENGTH_SHORT); break; case StatusConstants.REQUEST_WHAT_SUCCESS: break; } super.handleMessage(msg); } }; private int mInsterType = -1; //1 插入图片 2 插入视频 -1 未插入数据 private TopicBean mTopicbean; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_charging_comment); BarColorUtil.initStatusBarColor(ChargingCommentActivity.this); dialog = new LoadingDialog(this); dialog.setCanceledOnTouchOutside(false); Res.init(this); if (null == imm) { imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); } initViews(); getDatas(); Init(); } private void initViews() { insertDialog = new ProgressDialog(this); insertDialog.setMessage("正在插入图片..."); insertDialog.setCanceledOnTouchOutside(false); rl_point = (RelativeLayout) findViewById(R.id.rl_point); tv_point = (TextView) findViewById(R.id.tv_point); animation = AnimationUtils.loadAnimation(ChargingCommentActivity.this, R.anim.nn); tv_zhan_name = (TextView) findViewById(R.id.tv_zhan_name); // iv_hongbao = (ImageView) findViewById(R.id.iv_hongbao); // iv_hongbao.setOnClickListener(this); layoutHint = (LinearLayout) findViewById(R.id.layoutHint); findViewById(R.id.imgUpload).setOnClickListener(this); findViewById(R.id.videoUpLoad).setOnClickListener(this); commentHint = (TextView) findViewById(R.id.commentHint); imgAd = (ImageView) findViewById(R.id.imgAd); commentHint.setText(Html.fromHtml("30字以上+图片或15s视频有机会被<font color='#3EC34C'>评为优质评论获得充电优惠券</font>", FROM_HTML_MODE_LEGACY)); topicText = (TextView) findViewById(R.id.topicText); topicText.setText(Html.fromHtml("<font color='#6AB650'>╋</font> 话题", FROM_HTML_MODE_LEGACY)); rl_comment = (RelativeLayout) findViewById(R.id.rl_comment); sv = (ScrollView) findViewById(R.id.sv); rl_huodong = (RelativeLayout) findViewById(R.id.rl_huodong); tv_grade = (TextView) findViewById(R.id.tv_grade); tv_huodong = (TextView) findViewById(R.id.tv_huodong); if (MainApplication.level_one.equals("")) { String levellabel = getResources().getString(R.string.app_level_label); CacheUtils.getInstance().put("levellabel", levellabel); MainApplication.level_one = JsonUtils.getKeyResult(levellabel, "1"); MainApplication.level_two = JsonUtils.getKeyResult(levellabel, "2"); MainApplication.level_three = JsonUtils.getKeyResult(levellabel, "3"); MainApplication.level_four = JsonUtils.getKeyResult(levellabel, "4"); MainApplication.level_five = JsonUtils.getKeyResult(levellabel, "5"); } if (MainApplication.huodonglabel.equals("")) { tv_huodong.setVisibility(View.GONE); } et_pinglun = (REditText) findViewById(R.id.et_pinglun); et_pinglun.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { String s1 = et_pinglun.getText().toString(); s1= s1.replace(" " ,""); if (s1.length() > 0){ tv_make_sure.setTextColor(getResources().getColor(R.color.lvse)); tv_make_sure.setEnabled(true); }else{ tv_make_sure.setTextColor(getResources().getColor(R.color.huise)); tv_make_sure.setEnabled(false); } /*if (containsEmoji(s.toString())) { Toast.makeText(MainApplication.context, "不支持输入表情", Toast.LENGTH_SHORT).show(); } if (et_pinglun.getText().toString().equals("") && NewZhanDetailsActivity.replaceBlank(et_pinglun.getText().toString()).equals("")) { if (!star_level.equals("") && !select_s.equals("")) { tv_make_sure.setTextColor(getResources().getColor(R.color.lvse)); tv_make_sure.setEnabled(true); } else { tv_make_sure.setTextColor(getResources().getColor(R.color.huise)); tv_make_sure.setEnabled(false); } } else { Log.e("edit===", et_pinglun.getText().toString()); if (et_pinglun.getText().toString().equals("#" + MainApplication.huodonglabel + "# ")) { if (!star_level.equals("") && !select_s.equals("")) { tv_make_sure.setTextColor(getResources().getColor(R.color.lvse)); tv_make_sure.setEnabled(true); } else { tv_make_sure.setTextColor(getResources().getColor(R.color.huise)); tv_make_sure.setEnabled(false); } } else { tv_make_sure.setTextColor(getResources().getColor(R.color.lvse)); tv_make_sure.setEnabled(true); } }*/ if (!et_pinglun.getText().toString().contains("#" + MainApplication.huodonglabel + "#")) { final LayoutInflater mInflater = LayoutInflater.from(getApplicationContext()); mFlowLayoutTwo.setAdapter(new TagAdapter<String>(mValss) { @Override public View getView(FlowLayout parent, int position, String s) { TextView tv = (TextView) mInflater.inflate(R.layout.tv, mFlowLayoutTwo, false); tv.setText(s); return tv; } }); } } }); tv_make_sure = (TextView) findViewById(R.id.tv_make_sure); tv_make_sure.setOnClickListener(this); tv_make_sure.setTextColor(getResources().getColor(R.color.huise)); tv_make_sure.setEnabled(false); ratingBarView = (RatingBarView) findViewById(R.id.custom_ratingbar); ratingBarView.setOnRatingListener(new RatingBarView.OnRatingListener() { @Override public void onRating(Object bindObject, int RatingScore) { star_level = String.valueOf(RatingScore); mFlowLayout.setVisibility(View.VISIBLE); select_s = ""; switch (RatingScore) { case 1: if (!MainApplication.level_one.equals("")) { getLevelData(MainApplication.level_one); } tv_grade.setText(RatingScore + ".0"); break; case 2: if (!MainApplication.level_two.equals("")) { getLevelData(MainApplication.level_two); } tv_grade.setText(RatingScore + ".0"); break; case 3: if (!MainApplication.level_three.equals("")) { getLevelData(MainApplication.level_three); } tv_grade.setText(RatingScore + ".0"); break; case 4: if (!MainApplication.level_four.equals("")) { getLevelData(MainApplication.level_four); } tv_grade.setText(RatingScore + ".0"); break; case 5: if (!MainApplication.level_five.equals("")) { getLevelData(MainApplication.level_five); } tv_grade.setText(RatingScore + ".0"); break; } } }); iv_back = (ImageView) findViewById(R.id.iv_back); iv_back.setOnClickListener(this); final LayoutInflater mInflater = LayoutInflater.from(this); mFlowLayout = (TagFlowLayout) findViewById(R.id.id_flowlayout); mFlowLayout.setOnSelectListener(new TagFlowLayout.OnSelectListener() { @Override public void onSelected(Set<Integer> selectPosSet) { } }); mFlowLayoutTwo = (TagFlowLayout) findViewById(R.id.id_flowlayout_activity); if (MainApplication.huodonglabel.equals("")) { mFlowLayoutTwo.setVisibility(View.GONE); rl_huodong.setVisibility(View.GONE); } else { mFlowLayoutTwo.setVisibility(View.VISIBLE); rl_huodong.setVisibility(View.VISIBLE); } mFlowLayoutTwo.setAdapter(new TagAdapter<String>(mValss) { @Override public View getView(FlowLayout parent, int position, String s) { TextView tv = (TextView) mInflater.inflate(R.layout.tv_comment1, mFlowLayoutTwo, false); tv.setText(s); return tv; } }); mFlowLayoutTwo.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() { @Override public boolean onTagClick(View view, int position, FlowLayout parent) { if (select_ss.equals(MainApplication.huodonglabel)) { select_ss = ""; String s = et_pinglun.getText().toString(); String del_s = s.replace("#" + MainApplication.huodonglabel + "# ", ""); et_pinglun.setText(del_s); } else { select_ss = MainApplication.huodonglabel; setTopic(); } // Toast.makeText(getApplicationContext(), mVals[position], Toast.LENGTH_SHORT).show(); return true; } }); mFlowLayoutTwo.setOnSelectListener(new TagFlowLayout.OnSelectListener() { @Override public void onSelected(Set<Integer> selectPosSet) { // Toast.makeText(getApplicationContext(), "choose:" + selectPosSet.toString(), Toast.LENGTH_SHORT).show(); } }); tv_zhan_name.setOnClickListener(v -> { CommentHintDialog.newInstart().show(getSupportFragmentManager()); }); topicText.setOnClickListener(v -> { //跳转至话题页 SelectTopicActivity.actionStart(this, REQUEST_TOPIC_CODE); }); if (MainApplication.mAdComment!=null){ String icon = MainApplication.mAdComment.getIcon(); String adUrl = MainApplication.mAdComment.getUrl(); Glide.with(this).load(MainApplication.url + "/zhannew/uploadfile/" + icon) .into(imgAd); imgAd.setVisibility(View.VISIBLE); imgAd.setOnClickListener(v->{ Intent adfloatIntent = new Intent(this, MyWebViewActivity.class); adfloatIntent.putExtra("url", adUrl); startActivity(adfloatIntent); }); } } public void Init() { noScrollgridview = (RecyclerView) findViewById(R.id.noScrollgridview); noScrollgridview.setLayoutManager(new GridLayoutManager(this, 4)); int screenWidth = ScreenUtils.getScreenWidth(this); int rvMargin = (DensityUtil.dip2px(this, 15) * 2);//rv左右间距 int itemMargin = (DensityUtil.dip2px(this, 15) * 3);//item之间的间隙 int itemWidth = (screenWidth - rvMargin - itemMargin) / 4; mAdapter = new GridImageAdapter(this, 3, itemWidth, 0); mAdapter.setListener(this); noScrollgridview.setAdapter(mAdapter); } @Override protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (data != null) { if (requestCode == 1) { //处理调用系统图库 } else if (requestCode == REQUEST_CODE_CHOOSE) { setLayoutHintVisible(1); //异步方式插入图片 // insertImagesSync(data); Bimp.tempSelectMedia = PictureSelector.obtainMultipleResult(data); mAdapter.setMaxCount(3); mInsterType = 1; mAdapter.setDatas(Bimp.tempSelectMedia); } else if (requestCode == REQUEST_VIDEO_CODE_CHOOSE) { //异步方式插入视频 setLayoutHintVisible(2); mInsterType = 2; mAdapter.setMaxCount(1); Bimp.tempSelectMedia = PictureSelector.obtainMultipleResult(data); mAdapter.setDatas(Bimp.tempSelectMedia); } } } else if (requestCode == REQUEST_TOPIC_CODE && resultCode == SelectTopicActivity.REESULT_CODE) { String name = data.getStringExtra("topicBean"); mTopicbean = mGson.fromJson(name, TopicBean.class); topicText.setText(Html.fromHtml("<font color='#6AB650'>#</font> "+mTopicbean.getMeg(), FROM_HTML_MODE_LEGACY)); } } /** * @param type 1表示插入图片成功 2表示插入视频成功 -1表示 插入数据为null */ public void setLayoutHintVisible(int type) { if (type == 1) { noScrollgridview.setVisibility(View.VISIBLE); layoutHint.setVisibility(View.GONE); } else if (type == 2) { noScrollgridview.setVisibility(View.VISIBLE); layoutHint.setVisibility(View.GONE); } else if (type == -1) { layoutHint.setVisibility(View.VISIBLE); noScrollgridview.setVisibility(View.GONE); } } public void shite(String s) throws Exception { ArrayList<String> fileList=new ArrayList<>(); for (int i = 0; i < Bimp.tempSelectMedia.size(); i++) { LocalMedia media = Bimp.tempSelectMedia.get(i); String path = ""; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) path = media.getAndroidQToPath(); else { path = media.getPath(); } bm = imageZoom(BitmapFactory.decodeFile(path)); String file = bitmapToBase64(bm); Map<String, String> par = new HashMap<String, String>(); par.put("file", file); par.put("filename", "androidapp" + i + ".jpg"); ResponseBody body = OkHttpUtils.post().url(MainApplication.url + "/zhannew/basic/web/index.php/fileupload/upload") .addParams("file", file) .addParams("filename", "androidapp" + i + ".jpg") .build().execute().body(); if (body!=null){ String u = body.string(); JSONObject jsonObject = new JSONObject(u); String code = jsonObject.getString("code"); if (code.equals("200")) { String fileUrl = jsonObject.getString("fileUrl"); fileList.add(fileUrl); }else{ Message msg = new Message(); msg.what = IMG_ERROR; handler.sendMessage(msg); return; } }else{ Message msg = new Message(); msg.what = IMG_ERROR; handler.sendMessage(msg); return; } } Message msg = new Message(); msg.obj = mGson.toJson(fileList); msg.what = IMGRESLUT; handler.sendMessage(msg); } private void initData() { // LogUtils.e(MainApplication.url+"zhannew/basic/web/index.php/fenxiang/show??thirdId="+order_id); OkHttpUtils.get() .url(MainApplication.url + "/zhannew/basic/web/index.php/fenxiang/show?thirdId=" + order_id) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e) { } @Override public void onResponse(String response) { Log.e("response===", response); String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); if ("01".equals(rtnCode)) { String data = JsonUtils.getKeyResult(response, "data"); String is_share = JsonUtils.getKeyResult(data, "is_share"); if (EmptyUtils.isNotEmpty(data) && is_share.equals("1")) { chargingShareBean = JsonUtils.parseToObjectBean(data, ChargingShareBean.class); isShow = "1"; } } } }); } private void setTopic() { MyTopic topic = new MyTopic(); int id = (int) (Math.random() * 100); topic.setId("No." + id); topic.setObjectText(MainApplication.huodonglabel);// 必须设置 switch (2) { case 0: topic.setObjectRule("*");// 开发者设置,默认# break; case 1: topic.setObjectRule("$");// 开发者设置,默认# break; case 2: topic.setObjectRule("#");// 开发者设置,默认# break; } et_pinglun.setObject(topic); } private void getLevelData(final String level_data) { final LayoutInflater mInflater = LayoutInflater.from(this); stringArr = level_data.split(","); mFlowLayout.setAdapter(new TagAdapter<String>(stringArr) { @Override public View getView(FlowLayout parent, int position, String s) { TextView tv = (TextView) mInflater.inflate(R.layout.tv_comment, mFlowLayout, false); tv.setText(s); return tv; } }); mFlowLayout.setOnTagClickListener(new TagFlowLayout.OnTagClickListener() { @Override public boolean onTagClick(View view, int position, FlowLayout parent) { if (select_s.contains(stringArr[position])) { String s = stringArr[position] + ","; select_s = select_s.replaceAll(s, ""); // Log.e("select===",select_s); } else { select_s += stringArr[position] + ","; } // if (!select_s.equals("")) { // select_s = select_s.substring(0, select_s.length() - 1); // } Log.e("select===", select_s); return true; } }); } private void getDatas() { zhan_id = getIntent().getStringExtra("zhan_id"); zhuang_id = getIntent().getStringExtra("zhuang_id"); order_id = getIntent().getStringExtra("order_id"); if (EmptyUtils.isNotEmpty(order_id)) { initData(); } } private void addComments(ArrayList<String> fileUrlList, String thumUrl) throws Exception { long appTime1 = System.currentTimeMillis() / 1000; long updatetime = appTime1 - MainMapActivity.cha - 2; String token = String.valueOf(updatetime); String url = MainApplication.url + "/zhannew/basic/web/index.php/tpappcomments/add"; Map<String,String> map=new HashMap<>(); map.put("userid",MainApplication.userId); map.put("zhanid",zhan_id); map.put("order_id",order_id); map.put("comment",URLEncoder.encode(et_pinglun.getText().toString())); map.put("tel",MainApplication.userPhone); map.put("token",URLEncoder.encode(DES3.encode(token))); if (mTopicbean!=null){ map.put("theme",mTopicbean.getMeg()); } if (commentType == 1){ if (fileUrlList.size()>0){ for (int i = 0; i < fileUrlList.size(); i++) { String value = fileUrlList.get(i); if (i == 0){ map.put("fileUrl",value); }else{ map.put("file"+(i+1)+"Url", value); } } if (mInsterType == 1 || mInsterType == -1){ map.put("type", ChatRecommendBean.TARGET_TYPE_IMAGE_TEXT + ""); map.put("thumUrl",fileUrlList.get(0)); }else if (mInsterType == 2) { map.put("type", ChatRecommendBean.TARGET_TYPE_VIDEO + ""); } } } OkHttpUtils.get() .params(map) .url(url) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e) { dialog.cancel(); Toast.makeText(ChargingCommentActivity.this, "网络错误:"+e.getMessage(), Toast.LENGTH_SHORT).show(); } @Override public void onResponse(String response) { dialog.cancel(); String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); String rtnMsg = JsonUtils.getKeyResult(response, "rtnMsg"); if (rtnCode.equals("01")) { final String data = JsonUtils.getKeyResult(response, "data"); String plusScore = JsonUtils.getKeyResult(response, "plusScore"); if (!plusScore.equals("")) { tv_point.setText(plusScore); rl_point.setVisibility(View.VISIBLE); rl_point.startAnimation(animation); new Handler().postDelayed(new Runnable() { public void run() { rl_point.setVisibility(View.GONE); } }, 1500); } submitPF(data); }else{ Toast.makeText(ChargingCommentActivity.this, rtnMsg+"", Toast.LENGTH_SHORT).show(); } } }); } private void submitPF(String data) { long appTime1 = System.currentTimeMillis() / 1000; long updatetime = appTime1 - MainMapActivity.cha - 3; String token = String.valueOf(updatetime); if (!star_level.equals("")) { if (Integer.parseInt(star_level) > 5) { star_level = String.valueOf(5); } } if (!select_s.equals("")) { select_s = select_s.substring(0, select_s.length() - 1); } String url = MainApplication.url + "/zhannew/basic/web/index.php/zhanstar/staradd" + "?commit_id=" + data + "&order_id=" + order_id + "&star_level=" + star_level + "&supplier=星星充电&tag=" + select_s + "&timer=" + token + "&user_id=" + MainApplication.userId + "&ver=1.0&zhan_id=" + zhan_id + "&sign=" + Md5Util.md5("commit_id=" + data + "&order_id=" + order_id + "&star_level=" + star_level + "&supplier=星星充电&tag=" + select_s + "&timer=" + token + "&user_id=" + MainApplication.userId + "&zhan_id=" + zhan_id + "&key=661f9efdcb4f46fe7ab5f2e78a705a2a"); Log.e("PF_url", url); OkHttpUtils.get() .url(url) .build() .execute(new StringCallback() { @Override public void onError(Call call, Exception e) { } @Override public void onResponse(String response) { Log.e("PF=====", response); String code = JsonUtils.getKeyResult(response, "code"); if (code.equals("200")) { sv.setVisibility(View.GONE); rl_comment.setVisibility(View.VISIBLE); tv_zhan_name.setText("评价成功"); tv_make_sure.setVisibility(View.GONE); if ("1".equals(isShow)) { hongBaoDialog = new HongBaoDialog(ChargingCommentActivity.this).builder(); hongBaoDialog.setCancelable(true).show(new View.OnClickListener() { @Override public void onClick(View v) { showSimpleBottomSheetGrid(chargingShareBean); } }); } else { } } } }); } private void showSimpleBottomSheetGrid(final ChargingShareBean chargingShareBean) { final int TAG_SHARE_WECHAT_FRIEND = 0; final int TAG_SHARE_WECHAT_MOMENT = 1; final int TAG_SHARE_QQ = 2; QMUIBottomSheet.BottomGridSheetBuilder builder = new QMUIBottomSheet.BottomGridSheetBuilder(ChargingCommentActivity.this); QMUIBottomSheet build = builder.addItem(R.drawable.icon_share_wechat, "微信", TAG_SHARE_WECHAT_FRIEND, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .addItem(R.drawable.icon_share_wechatquan, "朋友圈", TAG_SHARE_WECHAT_MOMENT, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .addItem(R.drawable.icon_share_qq, "QQ", TAG_SHARE_QQ, QMUIBottomSheet.BottomGridSheetBuilder.FIRST_LINE) .setOnSheetItemClickListener(new QMUIBottomSheet.BottomGridSheetBuilder.OnSheetItemClickListener() { @Override public void onClick(QMUIBottomSheet dialog, View itemView) { dialog.dismiss(); int tag = (int) itemView.getTag(); switch (tag) { case TAG_SHARE_WECHAT_FRIEND: share(Wechat.NAME, chargingShareBean); break; case TAG_SHARE_WECHAT_MOMENT: share(WechatMoments.NAME, chargingShareBean); break; case TAG_SHARE_QQ: share(QQ.NAME, chargingShareBean); break; } } }).build(); build.show(); } private void share(final String name, ChargingShareBean chargingShareBean) { Platform.ShareParams paramsToShare = new Platform.ShareParams(); paramsToShare.setText(chargingShareBean.getText()); paramsToShare.setTitle(chargingShareBean.getTitle()); paramsToShare.setTitleUrl(chargingShareBean.getUrl()); paramsToShare.setUrl(chargingShareBean.getUrl()); paramsToShare.setImageUrl(MainApplication.url + "/zhannew/uploadfile/" + chargingShareBean.getIcon()); paramsToShare.setShareType(Platform.SHARE_WEBPAGE); Platform platform = ShareSDK.getPlatform(name); platform.setPlatformActionListener(new PlatformActionListener() { @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { try { if (hongBaoDialog != null) { hongBaoDialog.dismiss(); hongBaoDialog = null; } } catch (Exception e) { e.printStackTrace(); } getShareIntegral(); // ToastUtil.showToast(getApplicationContext(),"分享成功",Toast.LENGTH_SHORT); } @Override public void onError(Platform platform, int i, Throwable throwable) { LogUtils.e(throwable.getMessage()); } @Override public void onCancel(Platform platform, int i) { } }); platform.share(paramsToShare); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.tv_make_sure: if (MainApplication.isLogin()) { try { if (Bimp.tempSelectMedia.size() > 0 && mInsterType == 1) { dialog.show(); new Thread(() -> { try { shite(""); } catch (Exception e) { Message msg = new Message(); msg.what = IMG_ERROR; handler.sendMessage(msg); e.printStackTrace(); } }).start(); } else if (Bimp.tempSelectMedia.size() > 0 && mInsterType == 2) { //进行视频验证 LocalMedia media = Bimp.tempSelectMedia.get(0); String path = ""; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q) path = media.getAndroidQToPath(); else { path = media.getPath(); } getYouPaiData(path); } else { if (containsEmoji(et_pinglun.getText().toString())) { ToastUtil.showToast(MainApplication.context, "不支持输入表情", Toast.LENGTH_SHORT); } else { dialog.show(); addComments(new ArrayList<>(), ""); } } } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(getApplication(), "请先登录", Toast.LENGTH_SHORT).show(); startActivity(new Intent(getApplication(), LoginActivity.class)); } break; case R.id.iv_back: finish(); break; case R.id.videoUpLoad: addVideo(); break; case R.id.imgUpload: addImg(); break; } } private void getYouPaiData(String filePath) { dialog.show(); // String url = MainApplication.urlNew + "/get-sign-rest"; String url = MainApplication.d1evUrl + "/api/topic/get-sign-rest2cdz"; if (TextUtils.isEmpty(filePath)) { ToastUtil.showToast(getApplicationContext(), "请重新选择视频", Toast.LENGTH_SHORT); return; } String deviceId = JPushInterface.getUdid(MainApplication.context); String fileName = DateUtils.getSimpleCurrentDate(); if (TextUtils.isEmpty(deviceId)) { fileName += "_" + Util.getRandom(15); } else { fileName += "_" + deviceId; } if (TextUtils.isEmpty(filePath)) { fileName = ""; } else { String suffix = filePath.substring(filePath.lastIndexOf(".") + 1); fileName += "." + suffix; } Map<String, String> map = new HashMap<>(); map.put("fileName", fileName); try { FileInputStream fileInputStream = new FileInputStream(new File(filePath)); map.put("contentLength", String.valueOf(fileInputStream.available())); } catch (Exception e) { e.printStackTrace(); } map.put("targetType", ChatRecommendBean.TARGET_TYPE_VIDEO + ""); CommonParams.addCommonParams(map); String finalFileName = fileName; OkHttpUtils.get() .params(map) .url(url) .build() .connTimeOut(6000) .readTimeOut(6000) .execute(new StringCallback() { @Override public void onError(Call call, Exception e) { ToastUtil.showToast(getApplicationContext(), "发布失败,请重试", Toast.LENGTH_SHORT); dialog.dismiss(); } @Override public void onResponse(String response) { Log.e("hyc--", response); String code = JsonUtils.getKeyResult(response, "code"); String desc = JsonUtils.getKeyResult(response, "desc"); if ("1000".equals(code)) { String data = JsonUtils.getKeyResult(response, "data"); AuthSignBean signBeans = (AuthSignBean) JsonUtils.parseToObjectBean(data, AuthSignBean.class); if (null != signBeans) { String sign = signBeans.sign; String policy = signBeans.policy; formUpload(filePath, sign, policy, finalFileName); } else { ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT); } } else { ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT); dialog.dismiss(); } } }); } /** * 表单上传 * * @param SAMPLE_PIC_FILE * @param sign * @param policyServer */ private void formUpload(String SAMPLE_PIC_FILE, String sign, String policyServer, String fileName) { SerialUploader serialUploader = new SerialUploader(); serialUploader.setCheckMD5(false); File temp = new File(SAMPLE_PIC_FILE); serialUploader.setOnProgressListener((bytesWrite, contentLength) -> { }); String decoder = new String(Base64.decode((policyServer), Base64.DEFAULT)); JSONObject jsonObject = null; try { jsonObject = new JSONObject(decoder); } catch (JSONException e) { e.printStackTrace(); } String uri = jsonObject.optString("URI"); String date = jsonObject.optString("Date"); String operator = jsonObject.optString("Operator"); String saveKey = jsonObject.optString("save-key"); serialUploader.upload( temp, uri, date, "UPYUN " + operator + ":" + sign, null, new UpCompleteListener() { @Override public void onComplete(boolean isSuccess, String result) { if (isSuccess) { try { ArrayList<String> list = new ArrayList<>(); list.add(saveKey); addComments(list, saveKey); } catch (Exception e) { e.printStackTrace(); } } else { ToastUtil.showToast(getApplicationContext(), "发布失败,请重试", Toast.LENGTH_SHORT); dialog.dismiss(); } } }); } private void addImg() { PictureSelector.create(this) .openGallery(PictureMimeType.ofImage()) .maxSelectNum(PIC_NUM) .selectionMode(PictureConfig.MULTIPLE) .selectionData(Bimp.tempSelectMedia)//是否传入已选图片 .isCompress(true)//是否压缩 .isPreviewEggs(true)//预览图片时是否增强左右滑动图片体验 .isGif(true)//是否显示gif .isAndroidQTransform(true) .imageEngine(GlideEngine.createGlideEngine()) .isWeChatStyle(false)// 是否开启微信图片选择风格 .isUseCustomCamera(false)// 是否使用自定义相机 .isPageStrategy(true)// 是否开启分页策略 & 每页多少条;默认开启 .setPictureStyle(Util.getWhiteStyle(this))// 动态自定义相册主题 .setRecyclerAnimationMode(AnimationType.SLIDE_IN_BOTTOM_ANIMATION)// 列表动画效果 .isMaxSelectEnabledMask(true)// 选择数到了最大阀值列表是否启用蒙层效果 .imageSpanCount(4)// 每行显示个数 .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回 .isAutomaticTitleRecyclerTop(true)//图片列表超过一屏连续点击顶部标题栏快速回滚至顶部 .forResult(REQUEST_CODE_CHOOSE); } private void addVideo() { PictureSelector.create(this) .openGallery(PictureMimeType.ofVideo()) .selectionMode(PictureConfig.SINGLE) .isCompress(true)//是否压缩 .isPreviewEggs(true)//预览图片时是否增强左右滑动图片体验 .isAndroidQTransform(true) .imageEngine(GlideEngine.createGlideEngine()) .isWeChatStyle(false)// 是否开启微信图片选择风格 .isUseCustomCamera(false)// 是否使用自定义相机 .isPageStrategy(true)// 是否开启分页策略 & 每页多少条;默认开启 .setPictureStyle(Util.getWhiteStyle(this))// 动态自定义相册主题 .setRecyclerAnimationMode(AnimationType.SLIDE_IN_BOTTOM_ANIMATION)// 列表动画效果 .isMaxSelectEnabledMask(true)// 选择数到了最大阀值列表是否启用蒙层效果 .imageSpanCount(4)// 每行显示个数 .isReturnEmpty(false)// 未选择数据时点击按钮是否可以返回 .isAutomaticTitleRecyclerTop(true)//图片列表超过一屏连续点击顶部标题栏快速回滚至顶部 .videoMaxSecond(16) // 查询多少秒以内的视频 .videoMinSecond(2) // 查询多少秒以内的视频 .recordVideoSecond(15)//录制视频秒数 默认60s .isPreviewVideo(true)//是否预览视频 .isSingleDirectReturn(true)//PictureConfig.SINGLE模式下是否直接返回 .filterMaxFileSize( 100 * 1024 )//查询指定大小内的图片、视频、音频大小,单位 KB .forResult(REQUEST_VIDEO_CODE_CHOOSE); } public boolean isEmoji(String string) { Pattern p = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]", Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(string); return m.find(); } @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { } @Override public void onError(Platform platform, int i, Throwable throwable) { } @Override public void onCancel(Platform platform, int i) { } @Override public void onPermissionsGranted(int requestCode, List<String> perms) { } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { } @AfterPermissionGranted(RC_ALBUM_PERM) public void permissionTask() { if (isPermissionOK()) { addImg(); // Have permission, do the thing! // Toast.makeText(this, "TODO: Camera things", Toast.LENGTH_LONG).show(); // ifTimeout(); } else { // Ask for one permission EasyPermissions.requestPermissions( this, "充电桩想要获取您的图片读取权限,是否允许?", RC_ALBUM_PERM, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE); } } private boolean isPermissionOK() { return EasyPermissions.hasPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ); } public class MyTopic extends RObject { private String id; // 其他属性... public String getId() { return id; } public void setId(String id) { this.id = id; } } @Override protected void onResume() { super.onResume(); mAdapter.notifyDataSetChanged(); if (mInsterType == 1 && mAdapter.getItemCount() == 1) { setLayoutHintVisible(-1); mInsterType = -1; } else if (mInsterType == 2 && mAdapter.getItemCount() == 0) { setLayoutHintVisible(-1); mInsterType = -1; } } protected void onRestart() { super.onRestart(); } @Override protected void onDestroy() { super.onDestroy(); Bimp.tempSelectBitmap.clear(); Bimp.max = 0; Bimp.tempSelectMedia.clear(); } private String bitmapToBase64(Bitmap bitmap) { String result = null; ByteArrayOutputStream baos = null; try { if (bitmap != null) { baos = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); baos.flush(); baos.close(); byte[] bitmapBytes = baos.toByteArray(); result = Base64.encodeToString(bitmapBytes, Base64.DEFAULT); } } catch (IOException e) { e.printStackTrace(); } finally { try { if (baos != null) { baos.flush(); baos.close(); } } catch (IOException e) { e.printStackTrace(); } } return result; } private Bitmap imageZoom(Bitmap bm) { // 图片允许最大空间 单位:KB double maxSize = 200.00; // 将bitmap放至数组中,意在bitmap的大小(与实际读取的原文件要大) ByteArrayOutputStream baos = new ByteArrayOutputStream(); bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] b = baos.toByteArray(); // 将字节换成KB double mid = b.length / 1024; // 判断bitmap占用空间是否大于允许最大空间 如果大于则压缩 小于则不压缩 if (mid > maxSize) { // 获取bitmap大小 是允许最大大小的多少倍 double i = mid / maxSize; // 开始压缩 此处用到平方根 将宽带和高度压缩掉对应的平方根倍 // (1.保持刻度和高度和原bitmap比率一致,压缩后也达到了最大大小占用空间的大小) bm = zoomImage(bm, bm.getWidth() / Math.sqrt(i), bm.getHeight() / Math.sqrt(i)); } return bm; } public Bitmap zoomImage(Bitmap bgimage, double newWidth, double newHeight) { // 获取这个图片的宽和高 float width = bgimage.getWidth(); float height = bgimage.getHeight(); // 创建操作图片用的matrix对象 Matrix matrix = new Matrix(); // 计算宽高缩放率 float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; // 缩放图片动作 matrix.postScale(scaleWidth, scaleHeight); Bitmap bitmap = Bitmap.createBitmap(bgimage, 0, 0, (int) width, (int) height, matrix, true); // iv_2.setImageBitmap(bitmap); // tv_2.setText(bitmap.getRowBytes() * bitmap.getHeight() + ""); return bitmap; } private void showHongBaoView() { LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); popupWindowView = inflater.inflate(R.layout.view_share_hongbao, null); popupWindow = new PopupWindow(popupWindowView, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT, true); popupWindow.setBackgroundDrawable(new BitmapDrawable()); // 设置PopupWindow的弹出和消失效果 popupWindow.setAnimationStyle(R.style.popupAnimation); TextView tv_share_weixin = (TextView) popupWindowView.findViewById(R.id.tv_share_wechat); tv_share_weixin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Platform.ShareParams wechat = new Platform.ShareParams(); wechat.setTitle(title); wechat.setText(text); wechat.setImageUrl(MainApplication.url + "/zhannew/uploadfile/" + icon); wechat.setUrl(url); wechat.setShareType(Platform.SHARE_WEBPAGE); Platform weixin = ShareSDK.getPlatform(Wechat.NAME); weixin.setPlatformActionListener(ChargingCommentActivity.this); weixin.share(wechat); popupWindow.dismiss(); } }); TextView tv_share_friend = (TextView) popupWindowView.findViewById(R.id.tv_share_friend); tv_share_friend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Platform.ShareParams wechatMoments = new Platform.ShareParams(); wechatMoments.setTitle(title); // wechatMoments.setText("分享文本"); wechatMoments.setUrl(url); wechatMoments.setImageUrl(MainApplication.url + "/zhannew/uploadfile/" + icon); // wechatMoments.setMusicUrl("http://www.zhlongyin.com/UploadFiles/xrxz/2011/5/201105051307513619.mp3"); wechatMoments.setShareType(Platform.SHARE_WEBPAGE); Platform weixin1 = ShareSDK.getPlatform(WechatMoments.NAME); weixin1.setPlatformActionListener(ChargingCommentActivity.this); weixin1.share(wechatMoments); popupWindow.dismiss(); } }); TextView tv_cancle = (TextView) popupWindowView.findViewById(R.id.tv_cancle); tv_cancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // iv_hongbao.setVisibility(View.VISIBLE); popupWindow.dismiss(); } }); popupWindow.showAtLocation(tv_share_weixin, Gravity.CENTER, 0, 0); } /** * 检测是否有emoji表情 * * @param source * @return */ public static boolean containsEmoji(String source) { int len = source.length(); for (int i = 0; i < len; i++) { char codePoint = source.charAt(i); if (!isEmojiCharacter(codePoint)) { //如果不能匹配,则该字符是Emoji表情 return true; } } return false; } /** * 判断是否是Emoji * * @param codePoint 比较的单个字符 * @return */ private static boolean isEmojiCharacter(char codePoint) { return (codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA) || (codePoint == 0xD) || ((codePoint >= 0x20) && (codePoint <= 0xD7FF)) || ((codePoint >= 0xE000) && (codePoint <= 0xFFFD)) || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF)); } private void getShareIntegral() { String url = MainApplication.url + "/zhannew/basic/web/index.php/member/insert-task?userid=" + MainApplication.userId + "&order_id=" + order_id; OkHttpUtils.get().url(url).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { e.printStackTrace(); } @Override public void onResponse(String response) { LogUtils.e(response); String rtnCode = JsonUtils.getKeyResult(response, "rtnCode"); String red_money = JsonUtils.getKeyResult(response, "red_money"); int redMoney = Integer.valueOf(red_money); if (redMoney > 0) { new HongBaoResultDialog(ChargingCommentActivity.this).builder().setCancelable(true).show(redMoney); } if ("01".equals(rtnCode)) { // 成功 String plusScore = JsonUtils.getKeyResult(response, "plusScore"); if (!plusScore.equals("")) { tv_point.setText(plusScore); rl_point.setVisibility(View.VISIBLE); rl_point.startAnimation(animation); new Handler().postDelayed(new Runnable() { public void run() { rl_point.setVisibility(View.GONE); } }, 1500); } } else { ToastUtil.showToast(getApplicationContext(), "分享成功", Toast.LENGTH_SHORT); } } }); } @Override public void add() { if (mInsterType == 1) { addImg(); } else if (mInsterType == 2) { addVideo(); } } @Override public void remove(int position) { if (mAdapter.getItemCount() == 1) { setLayoutHintVisible(-1); mInsterType = -1; } } @Override public void open(int position, LocalMedia mLocalMedia) { if (mInsterType == 1) { ImageDisplayActivity.actionStart(this, position); } else if (mInsterType == 2) { PictureSelector.create(ChargingCommentActivity.this) .themeStyle(com.luck.picture.lib.R.style.picture_default_style) .setPictureStyle(Util.getWhiteStyle(ChargingCommentActivity.this))// 动态自定义相册主题 .externalPictureVideo(TextUtils.isEmpty(mLocalMedia.getAndroidQToPath()) ? mLocalMedia.getPath() : mLocalMedia.getAndroidQToPath()); } } }