|
package com.electric.chargingpile.activity;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
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.Drawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.Html;
import android.text.TextUtils;
import android.util.Base64;
import android.util.SparseArray;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition;
import com.electric.chargingpile.R;
import com.electric.chargingpile.application.MainApplication;
import com.electric.chargingpile.data.CarOwnerCertificateBean;
import com.electric.chargingpile.engine.GlideEngine;
import com.electric.chargingpile.entity.CarBrandGroupEntity;
import com.electric.chargingpile.entity.CarModelEntity;
import com.electric.chargingpile.entity.CarSeriesEntity;
import com.electric.chargingpile.event.CarBrandEvent;
import com.electric.chargingpile.event.CarModelEvent;
import com.electric.chargingpile.event.CarSeriesEvent;
import com.electric.chargingpile.util.BarColorUtil;
import com.electric.chargingpile.util.Bimp;
import com.electric.chargingpile.util.DES3;
import com.electric.chargingpile.util.FileUtils;
import com.electric.chargingpile.util.ImageFileCompressEngine;
import com.electric.chargingpile.util.JsonUtils;
import com.electric.chargingpile.util.LoadingDialog;
import com.electric.chargingpile.util.MeOnCameraInterceptListener;
import com.electric.chargingpile.util.MeSandboxFileEngine;
import com.electric.chargingpile.util.PictureUtlis;
import com.electric.chargingpile.util.ToastUtil;
import com.electric.chargingpile.util.Util;
import com.electric.chargingpile.view.TextImageView;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.hjq.permissions.OnPermissionCallback;
import com.hjq.permissions.XXPermissions;
import com.luck.picture.lib.animators.AnimationType;
import com.luck.picture.lib.basic.PictureSelector;
import com.luck.picture.lib.config.PictureConfig;
import com.luck.picture.lib.config.PictureMimeType;
import com.luck.picture.lib.config.SelectMimeType;
import com.luck.picture.lib.config.SelectModeConfig;
import com.luck.picture.lib.entity.LocalMedia;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.Call;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;
import static android.text.Html.FROM_HTML_MODE_LEGACY;
import static com.hjq.permissions.Permission.CAMERA;
import static com.hjq.permissions.Permission.READ_EXTERNAL_STORAGE;
import static com.hjq.permissions.Permission.READ_MEDIA_IMAGES;
/**
* 车主认证
*/
public class CarOwnerCertificateActivity extends AppCompatActivity implements View.OnClickListener {
private static final int RC_ALBUM_PERM = 123;
private static final int REQUEST_CODE_CHOOSE = 342;
private Bitmap insertBitmap;
private String drivingLicenseType = "自用";
private ProgressDialog insertDialog;
private TextView nav_title;
private Button submit_btn;
private TextImageView driving_license_type_first;
private TextImageView driving_license_type_second;
private TextImageView driving_license_type_third;
private TextView add_car_model_btn,tvAuthorize;
private LoadingDialog loadDialog;
private ArrayList<CarBrandGroupEntity> groups;
private CarModelEntity carModelEntity;
private ConstraintLayout car_model_constraint_layout;
private ConstraintLayout car_model_selected_constraint_layout;
private ImageView car_icon;
private TextView car_series;
private TextView car_model;
private ConstraintLayout driving_license;
private ImageView driving_license_icon;
private ImageView driving_license_upload_icon;
private TextView driving_license_text_view;
private Drawable selected;
private Drawable normal;
private LinearLayout driving_license_info;
private EditText plate_num;
private EditText engine_num;
private EditText register_date,identification_code;
private CheckBox checkBox;
private String drivingLicenseBase64Data;
private Boolean edit;
private CarOwnerCertificateBean carOwnerCertificateBean;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 禁止顶部固定部分滑动
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
setContentView(R.layout.activity_car_owner_certificate);
BarColorUtil.initStatusBarColor(CarOwnerCertificateActivity.this);
initViews();
brandListRequest(false);
add_car_model_btn.setVisibility(View.GONE);
EventBus.getDefault().register(this);
}
private void initViews() {
loadDialog = new LoadingDialog(this);
loadDialog.setCanceledOnTouchOutside(false);
edit = getIntent().getBooleanExtra("edit", false);
if (edit) {
String data = getIntent().getStringExtra("data");
Gson gson = new Gson();
carOwnerCertificateBean = gson.fromJson(data, CarOwnerCertificateBean.class);
}
insertDialog = new ProgressDialog(this);
insertDialog.setMessage("正在插入图片...");
insertDialog.setCanceledOnTouchOutside(false);
nav_title = findViewById(R.id.nav_title);
findViewById(R.id.iv_back).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
add_car_model_btn = findViewById(R.id.add_car_model_btn);
checkBox = findViewById(R.id.checkBox);
tvAuthorize = findViewById(R.id.tvAuthorize);
car_model_constraint_layout = findViewById(R.id.car_model_constraint_layout);
car_model_selected_constraint_layout = findViewById(R.id.car_model_selected_constraint_layout);
add_car_model_btn.setOnClickListener(this);
car_model_selected_constraint_layout.setOnClickListener(this);
car_icon = findViewById(R.id.car_icon);
car_model = findViewById(R.id.car_model);
car_series = findViewById(R.id.car_series);
driving_license = findViewById(R.id.driving_license);
driving_license.setOnClickListener(this);
driving_license_icon = findViewById(R.id.driving_license_icon);
driving_license_upload_icon = findViewById(R.id.driving_license_upload_icon);
driving_license_text_view = findViewById(R.id.driving_license_text_view);
driving_license_type_first = findViewById(R.id.driving_license_type_first);
driving_license_type_second = findViewById(R.id.driving_license_type_second);
driving_license_type_third = findViewById(R.id.driving_license_type_third);
driving_license_type_first.setOnClickListener(this);
driving_license_type_second.setOnClickListener(this);
driving_license_type_third.setOnClickListener(this);
driving_license_info = findViewById(R.id.driving_license_info);
plate_num = findViewById(R.id.plate_num);
engine_num = findViewById(R.id.engine_num);
register_date = findViewById(R.id.register_date);
identification_code = findViewById(R.id.identification_code);
selected = getResources().getDrawable(R.drawable.icon_radio_selected, null);
selected.setBounds(0, 0, selected.getMinimumWidth(), selected.getMinimumHeight());
normal = getResources().getDrawable(R.drawable.icon_radio_normal, null);
normal.setBounds(0, 0, normal.getMinimumWidth(), normal.getMinimumHeight());
submit_btn = findViewById(R.id.submit_btn);
submit_btn.setOnClickListener(this);
if (edit) {
nav_title.setText("更新车主认证");
Gson gson = new Gson();
CarModelEvent event = new CarModelEvent(gson.fromJson(carOwnerCertificateBean.getChexing(), CarModelEntity.class));
onCarModelMessage(event);
if (!TextUtils.isEmpty(carOwnerCertificateBean.getLicense_img1())) {
Glide.with(this).asBitmap().load(MainApplication.pic_url + carOwnerCertificateBean.getLicense_img1()).diskCacheStrategy(DiskCacheStrategy.ALL).into(new CustomTarget<Bitmap>() {
@Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
driving_license_icon.setImageBitmap(resource);
String base64 = bitmapToBase64(resource);
drivingLicenseBase64Data = "data:image/png;base64," + base64;
}
@Override
public void onLoadCleared(@Nullable Drawable placeholder) {
}
});
driving_license_upload_icon.setVisibility(View.GONE);
driving_license_text_view.setVisibility(View.GONE);
driving_license_info.setVisibility(View.VISIBLE);
plate_num.setText(carOwnerCertificateBean.getPlate_number());
engine_num.setText(carOwnerCertificateBean.getEngine_number());
register_date.setText(carOwnerCertificateBean.getRegdate());
identification_code.setText(carOwnerCertificateBean.getCar_code());
}
if ("自用".equals(carOwnerCertificateBean.getCartype())) {
drivingLicenseType = "自用";
driving_license_type_first.setCompoundDrawables(selected, null, null, null);
driving_license_type_second.setCompoundDrawables(normal, null, null, null);
driving_license_type_third.setCompoundDrawables(normal, null, null, null);
} else if ("营运".equals(carOwnerCertificateBean.getCartype())) {
drivingLicenseType = "营运";
driving_license_type_first.setCompoundDrawables(normal, null, null, null);
driving_license_type_second.setCompoundDrawables(selected, null, null, null);
driving_license_type_third.setCompoundDrawables(normal, null, null, null);
} else if ("公务".equals(carOwnerCertificateBean.getCartype())) {
drivingLicenseType = "公务";
driving_license_type_first.setCompoundDrawables(normal, null, null, null);
driving_license_type_second.setCompoundDrawables(normal, null, null, null);
driving_license_type_third.setCompoundDrawables(selected, null, null, null);
}
} else {
nav_title.setText("车主认证");
}
tvAuthorize.setText(Html.fromHtml("勾选后,即您同意<font color='#3EC34C'>《个人信息处理授权书》</font>并确认授权", FROM_HTML_MODE_LEGACY));
tvAuthorize.setOnClickListener(v->{
Intent intent = new Intent(getApplication(), MyWebViewActivity.class);
intent.putExtra("url", "https://www.d1ev.com/special/change-map/authorization-agreement.html");
startActivity(intent);
});
}
private void brandListRequest(Boolean showLoading) {
if (showLoading)
loadDialog.show();
// https://www.jianshu.com/p/10382cc71127
// String url = "https://api.touchev.com:83/car/api/v1000/brand/list.do";
String url = "http://car.d1ev.com/car/api/v1000/brand/list.do?from=cdz";
OkHttpUtils.get().url(url).build().connTimeOut(30000).readTimeOut(30000).execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
Toast.makeText(getApplicationContext(), "网络不给力,请检查网络状态", Toast.LENGTH_SHORT).show();
loadDialog.dismiss();
add_car_model_btn.setVisibility(View.VISIBLE);
}
@Override
public void onResponse(String response) {
loadDialog.dismiss();
add_car_model_btn.setVisibility(View.VISIBLE);
String code = JsonUtils.getKeyResult(response, "code");
String desc = JsonUtils.getKeyResult(response, "desc");
if ("1000".equals(code)) {
String data = JsonUtils.getKeyResult(response, "data");
Gson gson = new Gson();
groups = gson.fromJson(data, new TypeToken<ArrayList<CarBrandGroupEntity>>() {
}.getType());
if (groups == null || groups.size() == 0) {
if (showLoading)
ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT);
} else {
if (showLoading) {
EventBus.getDefault().postSticky(new CarBrandEvent(groups));
CarBrandActivity.actionStart(CarOwnerCertificateActivity.this);
// startActivity(new Intent(CarOwnerCertificateActivity.this, CarBrandActivity.class));
}
}
} else {
if (showLoading)
ToastUtil.showToast(getApplicationContext(), desc, Toast.LENGTH_SHORT);
}
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.add_car_model_btn:
case R.id.car_model_selected_constraint_layout:
if (groups == null || groups.size() == 0) {
brandListRequest(true);
} else {
EventBus.getDefault().postSticky(new CarBrandEvent(groups));
CarBrandActivity.actionStart(CarOwnerCertificateActivity.this);
// startActivity(new Intent(CarOwnerCertificateActivity.this, CarBrandActivity.class));
}
break;
case R.id.driving_license:
permissionTask();
break;
case R.id.driving_license_type_first:
drivingLicenseType = "自用";
driving_license_type_first.setCompoundDrawables(selected, null, null, null);
driving_license_type_second.setCompoundDrawables(normal, null, null, null);
driving_license_type_third.setCompoundDrawables(normal, null, null, null);
break;
case R.id.driving_license_type_second:
drivingLicenseType = "营运";
driving_license_type_first.setCompoundDrawables(normal, null, null, null);
driving_license_type_second.setCompoundDrawables(selected, null, null, null);
driving_license_type_third.setCompoundDrawables(normal, null, null, null);
break;
case R.id.driving_license_type_third:
drivingLicenseType = "公务";
driving_license_type_first.setCompoundDrawables(normal, null, null, null);
driving_license_type_second.setCompoundDrawables(normal, null, null, null);
driving_license_type_third.setCompoundDrawables(selected, null, null, null);
break;
case R.id.submit_btn:
addCarOwnerCertification();
break;
}
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onCarModelMessage(CarModelEvent event) {
if (event != null && event.getCarModelEntity() != null) {
carModelEntity = event.getCarModelEntity();
car_model_constraint_layout.setVisibility(View.GONE);
car_model_selected_constraint_layout.setVisibility(View.VISIBLE);
car_series.setText(carModelEntity.getSeriesName());
car_model.setText(carModelEntity.getModelName());
try {
String[] imgNames = carModelEntity.getMasterPic().split("!w");
imgNames[1] = imgNames[1].replace("480", "240");
Glide.with(CarOwnerCertificateActivity.this).load(imgNames[0] + "!w" + imgNames[1]).placeholder(android.R.color.white).dontAnimate().diskCacheStrategy(DiskCacheStrategy.ALL).fitCenter().into(car_icon);
} catch (Exception e) {
e.printStackTrace();
}
} else {
carModelEntity = null;
car_model_constraint_layout.setVisibility(View.VISIBLE);
car_model_selected_constraint_layout.setVisibility(View.GONE);
}
}
@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 == REQUEST_CODE_CHOOSE) {
insertImagesSync(data);
}
}
}
}
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);
return bitmap;
}
/**
* 异步方式插入图片
*
* @param data
*/
private void insertImagesSync(final Intent data) {
insertDialog.setMessage("正在插入图片...");
insertDialog.show();
Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<String> subscriber) throws Exception {
try {
// List<Uri> uriList = Matisse.obtainResult(data);
List<LocalMedia> localList = PictureSelector.obtainSelectorList(data);
if (localList !=null && localList.size()>0 ){
LocalMedia localMedia = localList.get(0);
// Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
// File file = FileUtils.from(CarOwnerCertificateActivity.this, uri);
// bitmap = FileUtils.rotateIfRequired(file, bitmap);
String path= Util.getCompressAbsolutePath(localMedia);
insertBitmap =imageZoom( BitmapFactory.decodeFile(path));
subscriber.onComplete();
}
} catch (Exception e) {
e.printStackTrace();
subscriber.onError(e);
}
}
})
.subscribeOn(Schedulers.io())//生产事件在io
.observeOn(AndroidSchedulers.mainThread())//消费事件在UI线程
.subscribe(new Observer<String>() {
@Override
public void onComplete() {
insertDialog.dismiss();
driving_license_icon.setImageBitmap(insertBitmap);
driving_license_upload_icon.setVisibility(View.GONE);
driving_license_text_view.setVisibility(View.GONE);
String base64 = bitmapToBase64(insertBitmap);
uploadPic(base64);
}
@Override
public void onError(Throwable e) {
insertDialog.dismiss();
ToastUtil.showToast(getApplicationContext(), "图片插入失败", Toast.LENGTH_SHORT);
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(String imagePath) {
}
});
}
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.NO_WRAP);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (baos != null) {
baos.flush();
baos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
return result;
}
private void uploadPic(final String base64) {
driving_license_info.setVisibility(View.VISIBLE);
if (base64 == null) {
return;
}
drivingLicenseBase64Data = "data:image/png;base64," + base64;
insertDialog.setMessage("正在识别行驶证");
insertDialog.show();
long tokenTime = System.currentTimeMillis() / 1000 - MainMapActivity.cha - 1;
String token = null;
try {
token = DES3.encode(String.valueOf(tokenTime));
} catch (Exception e) {
e.printStackTrace();
}
String url = MainApplication.url + "/zhannew/basic/web/index.php/car/ocr";
OkHttpUtils.post().url(url).addParams("Base64Data", drivingLicenseBase64Data).addParams("Category", "driving").addParams("token", token)
.build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
insertDialog.dismiss();
e.printStackTrace();
ToastUtil.showToast(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_SHORT);
}
@Override
public void onResponse(String response) {
insertDialog.dismiss();
// {"Code":0,"Message":"成功","RequestId":"F84FF659-1D65-48E1-8C12-B253CEFCC4F8","Data":{"plate_num":"京Q52DR5","vehicle_type":"小型轿车","owner":"北京一度用车信息科技有限公司","address":"北京市海淀区中关村东路18号1号楼C日609-1","useCharacter":"葙赁","model":"北京牌BJ7000B3D5-BEV","vin":"LNBSCB3F4HD101254","engine_num":"AD33DH03040031","register_date":"20170525","issueDate":"00170525"}}
String code = JsonUtils.getKeyResult(response, "Code");
if ("0".equals(code)) {
String data = JsonUtils.getKeyResult(response, "Data");
String platNum = JsonUtils.getKeyResult(data, "plate_num");
String engineNum = JsonUtils.getKeyResult(data, "engine_num");
String registerDate = JsonUtils.getKeyResult(data, "register_date");
String car_code = JsonUtils.getKeyResult(data, "car_code");
plate_num.setText(platNum);
engine_num.setText(engineNum);
register_date.setText(registerDate);
identification_code.setText(car_code);
} else {
String message = JsonUtils.getKeyResult(response, "Message");
ToastUtil.showToast(getApplicationContext(), message, Toast.LENGTH_SHORT);
}
}
});
}
private void addCarOwnerCertification() {
if (!checkBox.isChecked()){
ToastUtil.showToast(this, "请阅读授权协议并勾选确认", Toast.LENGTH_SHORT);
return;
}
if (carModelEntity == null) {
ToastUtil.showToast(this, "请添加车型", Toast.LENGTH_SHORT);
return;
}
if (drivingLicenseBase64Data == null) {
ToastUtil.showToast(this, "请上传行驶证首页" + drivingLicenseType, Toast.LENGTH_SHORT);
return;
}
if (TextUtils.isEmpty(plate_num.getText().toString().trim())) {
ToastUtil.showToast(this, "请输入车牌号", Toast.LENGTH_SHORT);
return;
}
if (TextUtils.isEmpty(engine_num.getText().toString().trim())) {
ToastUtil.showToast(this, "请输入发动机号", Toast.LENGTH_SHORT);
return;
}
if (TextUtils.isEmpty(register_date.getText().toString().trim())) {
ToastUtil.showToast(this, "请输入注册日期", Toast.LENGTH_SHORT);
return;
}
if (TextUtils.isEmpty(identification_code.getText().toString().trim())) {
ToastUtil.showToast(this, "请输入车辆识别代号", Toast.LENGTH_SHORT);
return;
}
insertDialog.setMessage("数据提交中");
insertDialog.show();
String url = MainApplication.url + "/zhannew/basic/web/index.php/car/add";
if (edit) {
url = url + "?id=" + carOwnerCertificateBean.getId();
}
Map<String, String> map = new HashMap<>();
Gson gson = new Gson();
String chexing = gson.toJson(carModelEntity);
map.put("chexing", chexing);
if (drivingLicenseBase64Data != null) {
map.put("license_img1", drivingLicenseBase64Data);
map.put("plate_number", plate_num.getText().toString().trim());
map.put("engine_number", engine_num.getText().toString().trim());
map.put("regdate", register_date.getText().toString().trim());
map.put("car_code", identification_code.getText().toString().trim());
}
map.put("cartype", drivingLicenseType);
map.put("userid", MainApplication.userId);
long tokenTime = System.currentTimeMillis() / 1000 - MainMapActivity.cha - 1;
String token = null;
try {
token = DES3.encode(String.valueOf(tokenTime));
} catch (Exception e) {
e.printStackTrace();
}
map.put("token", token);
// OkHttpUtils.postString().url(url).content(new Gson().toJson(map)).mediaType(MediaType.parse("application/json; charset=utf-8"))
OkHttpUtils.post().params(map).url(url).build().execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
insertDialog.dismiss();
e.printStackTrace();
ToastUtil.showToast(getApplicationContext(), e.getLocalizedMessage(), Toast.LENGTH_SHORT);
}
@Override
public void onResponse(String response) {
insertDialog.dismiss();
// {"Code":0,"Message":"成功","RequestId":"F84FF659-1D65-48E1-8C12-B253CEFCC4F8","Data":{"plate_num":"京Q52DR5","vehicle_type":"小型轿车","owner":"北京一度用车信息科技有限公司","address":"北京市海淀区中关村东路18号1号楼C日609-1","useCharacter":"葙赁","model":"北京牌BJ7000B3D5-BEV","vin":"LNBSCB3F4HD101254","engine_num":"AD33DH03040031","register_date":"20170525","issueDate":"00170525"}}
String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
if ("01".equals(rtnCode)) {
ToastUtil.showToast(getApplicationContext(), "认证信息提交成功,请等待审核", Toast.LENGTH_SHORT);
finish();
startActivity(new Intent(CarOwnerCertificateActivity.this, CarOwnerCertificateListActivity.class));
} else {
ToastUtil.showToast(getApplicationContext(), "认证信息提交超时,请重新提交", Toast.LENGTH_SHORT);
}
}
});
}
/*
@Override
public void onPermissionsGranted(int requestCode, List<String> perms) {
}
@Override
public void onPermissionsDenied(int requestCode, List<String> perms) {
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
*/
public void permissionTask() {
String[] callPhone =
new String[]{READ_MEDIA_IMAGES, CAMERA};
XXPermissions.with(this)
// 申请单个权限
.permission(callPhone)
.request(new OnPermissionCallback() {
@Override
public void onGranted(List<String> permissions, boolean all) {
if (all) {
opendCamera();
}else{
ToastUtil.showToast(getApplicationContext(), "获取部分权限成功,但部分权限未正常授予", Toast.LENGTH_SHORT);
}
}
@Override
public void onDenied(List<String> permissions, boolean never) {
if (never) {
// 如果是被永久拒绝就跳转到应用权限系统设置页面
XXPermissions.startPermissionActivity(CarOwnerCertificateActivity.this, permissions);
} else {
ToastUtil.showToast(getApplicationContext(), "获取权限失败", Toast.LENGTH_SHORT);
}
}
});
}
private void opendCamera() {
PictureSelector.create(CarOwnerCertificateActivity.this)
.openGallery(SelectMimeType.ofImage())
.setSelectorUIStyle(PictureUtlis.getStyle())
.setImageEngine(GlideEngine.createGlideEngine())
.setCompressEngine(new ImageFileCompressEngine()) //设置压缩
.setSandboxFileEngine(new MeSandboxFileEngine()) //设置相册沙盒目录拷贝引擎
.setCameraInterceptListener(new MeOnCameraInterceptListener())
.setSelectionMode(SelectModeConfig.SINGLE)
.setMaxSelectNum(1)
.isEmptyResultReturn(true) //支持未选择返回
.setImageSpanCount(4)
.isPageStrategy(true) // 是否开启分页模式
.isDisplayCamera(true) //是否显示相机入口
.isPreviewFullScreenMode(true)//预览点击全屏效果
.isCameraRotateImage(true) //拍照是否纠正旋转图片
.isEmptyResultReturn(true)//支持未选择返回
.isWithSelectVideoImage(false)//是否支持视频图片同选
.isSelectZoomAnim(true)// 选择缩略图缩放效果
.isCameraAroundState(false)// 是否开启前置摄像头;系统相机 只支持部分机型
.isCameraRotateImage(true) //拍照是否纠正旋转图片
.isGif(false)// 是否显示gif文件
.isWebp(true)// 是否显示webp文件
.isBmp(true)//是否显示bmp文件
.isMaxSelectEnabledMask(true)// 达到最大选择数是否开启禁选蒙层
.isAutomaticTitleRecyclerTop(true) //点击相册标题是否快速回到第一项
.isFastSlidingSelect(true) //快速滑动选择
.isDirectReturnSingle(true)//PictureConfig.SINGLE模式下是否直接返回
.setQuerySortOrder(MediaStore.MediaColumns.DATE_MODIFIED + " DESC")//由远-近 MediaStore.MediaColumns.DATE_MODIFIED + " ASC"
.isPreviewImage(true)//是否预览图片
.setFilterMinFileSize(1) //过滤最小文件
.forResult(REQUEST_CODE_CHOOSE);
}
private boolean isPermissionOK() {
return EasyPermissions.hasPermissions(this,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
);
}
public static void actionStart(Context context){
context.startActivity(new Intent(context,CarOwnerCertificateActivity.class));
}
public static void actionStart(Context context,boolean edit,String data){
Intent intent = new Intent(context, CarOwnerCertificateActivity.class);
intent.putExtra("edit",edit);
intent.putExtra("data",data);
context.startActivity(intent);
}
public static void actionStart(Context context,boolean edit){
Intent intent = new Intent(context, CarOwnerCertificateActivity.class);
intent.putExtra("edit",edit);
context.startActivity(intent);
}
}
|