From 715842ad199fd4064c613afcbffab613b974bcc1 Mon Sep 17 00:00:00 2001 From: jia Date: Wed, 25 Dec 2024 00:08:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=AE=B6=E8=BA=AB=E4=BB=BD=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iFish7/src/main/AndroidManifest.xml | 2 +- .../ifish/activity/ShopsCheckActivity.java | 51 +++ .../java/com/ifish/basebean/EventBean.java | 2 + .../fragment/ShopsCheckUserPhotoFragment.java | 361 +++++++++++++++--- 4 files changed, 354 insertions(+), 62 deletions(-) diff --git a/iFish7/src/main/AndroidManifest.xml b/iFish7/src/main/AndroidManifest.xml index 45a8232d7..79567244f 100644 --- a/iFish7/src/main/AndroidManifest.xml +++ b/iFish7/src/main/AndroidManifest.xml @@ -18,7 +18,7 @@ - + diff --git a/iFish7/src/main/java/com/ifish/activity/ShopsCheckActivity.java b/iFish7/src/main/java/com/ifish/activity/ShopsCheckActivity.java index 7e157b5ec..00cbc2211 100644 --- a/iFish7/src/main/java/com/ifish/activity/ShopsCheckActivity.java +++ b/iFish7/src/main/java/com/ifish/activity/ShopsCheckActivity.java @@ -2,20 +2,36 @@ package com.ifish.activity; import android.app.FragmentManager; import android.app.FragmentTransaction; +import android.content.Intent; +import android.graphics.Bitmap; +import android.os.Build; import android.os.Bundle; +import android.os.Environment; import android.text.TextUtils; import android.view.View; import android.widget.TextView; +import com.bumptech.glide.Glide; +import com.ifish.basebean.EventBean; import com.ifish.basebean.ShopsCheckSwitchFragment; import com.ifish.baseclass.BaseActivity; import com.ifish.fragment.ShopsCheckResultFragment; import com.ifish.fragment.ShopsCheckUserInfoFragment; import com.ifish.fragment.ShopsCheckUserPhotoFragment; import com.ifish.utils.Commons; +import com.ifish.utils.L; import com.ifish.view.SelectorImageView; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.entity.LocalMedia; +import com.squareup.picasso.Picasso; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.concurrent.ExecutionException; import de.greenrobot.event.EventBus; +import jp.wasabeef.picasso.transformations.RoundedCornersTransformation; /** * --------------------------- @@ -186,4 +202,39 @@ public class ShopsCheckActivity extends BaseActivity { } } + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); + + if (requestCode == 1024 && Build.VERSION.SDK_INT >=Build.VERSION_CODES.R){ + if (Environment.isExternalStorageManager()){ + EventBean eventBean = new EventBean(EventBean.CARD,""); + EventBus.getDefault().post(eventBean); + } + + }else if (resultCode == RESULT_OK){ + if (requestCode== PictureConfig.CHOOSE_REQUEST){ + ArrayList selectList = PictureSelector.obtainSelectorList(data); + String mCompressPath; + if (selectList!=null && selectList.size()>0){ + LocalMedia localMedia = selectList.get(0); + if (localMedia.isCut()){ + mCompressPath = localMedia.getCutPath(); + }else + { + mCompressPath = localMedia.getCompressPath(); + } + + if (TextUtils.isEmpty(mCompressPath)){ + mCompressPath = localMedia.getRealPath(); + } + L.i("jjia------------1---"+mCompressPath); + if (!TextUtils.isEmpty(mCompressPath)){ + EventBean eventBean = new EventBean(EventBean.CARD,mCompressPath); + EventBus.getDefault().post(eventBean); + } + } + } + } + } } diff --git a/iFish7/src/main/java/com/ifish/basebean/EventBean.java b/iFish7/src/main/java/com/ifish/basebean/EventBean.java index 716641660..d31933755 100644 --- a/iFish7/src/main/java/com/ifish/basebean/EventBean.java +++ b/iFish7/src/main/java/com/ifish/basebean/EventBean.java @@ -17,6 +17,8 @@ public class EventBean { public static String LINK_FINISH = "link_finish"; public static String CHANGE_DEVICE_NAME = "change_device_name"; public static String HEADER = "header"; + public static String SELECT = "select"; + public static String CARD = "card"; public EventBean(String name){ this.name = name; diff --git a/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java b/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java index fa34a8eb4..39e2f1b98 100644 --- a/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java +++ b/iFish7/src/main/java/com/ifish/fragment/ShopsCheckUserPhotoFragment.java @@ -1,13 +1,19 @@ package com.ifish.fragment; +import static android.app.Activity.RESULT_OK; + +import android.app.AlertDialog; import android.app.Dialog; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.provider.MediaStore; +import android.provider.Settings; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -16,24 +22,36 @@ import android.view.Window; import android.widget.ImageView; import android.widget.RelativeLayout; +import com.bumptech.glide.Glide; +import com.ifish.activity.MineActivity; import com.ifish.activity.R; import com.ifish.basebean.BaseBean; import com.ifish.basebean.ChangeWater; +import com.ifish.basebean.EventBean; import com.ifish.basebean.ShopsCheckSwitchFragment; import com.ifish.basebean.ShopsInfo; import com.ifish.baseclass.BaseFragment; import com.ifish.baseclass.UriForFile; +import com.ifish.permission.PermissionHelper; +import com.ifish.utils.AppUtil; import com.ifish.utils.Commons; import com.ifish.utils.HttpListener; import com.ifish.utils.HttpManager; import com.ifish.utils.L; import com.ifish.utils.ToastUtil; +import com.ifish.view.picture.PictureSelectBean; +import com.ifish.view.picture.PictureSelectorUtil; +import com.luck.picture.lib.basic.PictureSelector; +import com.luck.picture.lib.config.PictureConfig; +import com.luck.picture.lib.entity.LocalMedia; import com.squareup.picasso.Picasso; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; +import java.util.concurrent.ExecutionException; import de.greenrobot.event.EventBus; import jp.wasabeef.picasso.transformations.RoundedCornersTransformation; @@ -81,10 +99,14 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment { initListener(); init(); initData(); + return v; } - + private PermissionHelper permissionHelper; private void initData() { + permission = AppUtil.getImagePermissionList(); + permissionHelper = new PermissionHelper(getActivity(), permission, 250); + if (isResult) { Picasso.with(getActivity()).load(HttpManager.SHOP_URL + Commons.USER.getUserId() + "/" + Commons.SHOP.picture1 + "?time=" + Commons.Date.getTime()).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).error(R.drawable.shopscheck_idcard).into(iv_idCard); Picasso.with(getActivity()).load(HttpManager.SHOP_URL + Commons.USER.getUserId() + "/" + Commons.SHOP.picture2 + "?time=" + Commons.Date.getTime()).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).error(R.drawable.shopscheck_idcard_back).into(iv_idCardBack); @@ -251,29 +273,118 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment { } } }; + String[] permission; - private void pickImage() { - final Dialog dialogHead = new Dialog(getActivity(), R.style.HOLOMyDialogs); - dialogHead.show(); - Window window = dialogHead.getWindow(); - window.setContentView(R.layout.dialog_cramer); - RelativeLayout rl_png = (RelativeLayout) window.findViewById(R.id.rl_man); - RelativeLayout rl_cramera = (RelativeLayout) window.findViewById(R.id.rl_woman); - rl_png.setOnClickListener(new View.OnClickListener() { + private void showPermissionHint(){ + AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity(), AlertDialog.THEME_HOLO_LIGHT); + dialog.setCancelable(false); + dialog.setTitle("提示"); + dialog.setMessage("设置头像,需要申请相机和相册权限,是否允许申请?"); + dialog.setNegativeButton("拒绝", (arg0, arg1) -> { + arg0.dismiss(); + + }); + dialog.setPositiveButton("申请", (dialog1, which) -> { + getPermission(); + }); + dialog.show(); + } + + private void getPermission() { + permissionHelper.request(new PermissionHelper.PermissionCallback() { @Override - public void onClick(View v) { + public void onPermissionGranted() { gallery(); - dialogHead.dismiss(); } - }); - rl_cramera.setOnClickListener(new View.OnClickListener() { + @Override - public void onClick(View v) { - camera(); - dialogHead.dismiss(); + public void onIndividualPermissionGranted(String[] grantedPermission) { + AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); + dialog.setCancelable(false); + dialog.setMessage("请先同意app获取权限"); + dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick( + DialogInterface dialog, + int which) { + + } + }); + dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }); + dialog.show(); + } + + @Override + public void onPermissionDenied() { + AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); + dialog.setCancelable(false); + dialog.setMessage("请先同意app获取权限"); + dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick( + DialogInterface dialog, + int which) { + getPermission(); + } + }); + dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }); + dialog.show(); + } + + @Override + public void onPermissionDeniedBySystem() { + AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); + dialog.setCancelable(false); + dialog.setTitle("温馨提示"); +// dialog.setMessage("请到应用管理-爱鱼奇-应用权限页面开启权限后重新打开app"); + dialog.setMessage("请到应用信息页面-权限管理-打开图片和相机权限"); + dialog.setPositiveButton("去开启", (dialog1, which) -> { + AppUtil.toAuthority(getActivity()); + }); + dialog.setNegativeButton("取消", (dialog12, which) -> { + }); + dialog.show(); } }); } + private void pickImage() { + + if (!permissionHelper.checkSelfPermission(permission)) { + showPermissionHint(); + } else { + gallery(); + } + + +// final Dialog dialogHead = new Dialog(getActivity(), R.style.HOLOMyDialogs); +// dialogHead.show(); +// Window window = dialogHead.getWindow(); +// window.setContentView(R.layout.dialog_cramer); +// RelativeLayout rl_png = (RelativeLayout) window.findViewById(R.id.rl_man); +// RelativeLayout rl_cramera = (RelativeLayout) window.findViewById(R.id.rl_woman); +// rl_png.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// gallery(); +// dialogHead.dismiss(); +// } +// }); +// rl_cramera.setOnClickListener(new View.OnClickListener() { +// @Override +// public void onClick(View v) { +// camera(); +// dialogHead.dismiss(); +// } +// }); + } private boolean hasSdcard() {//判断有无SD卡 if (Environment.getExternalStorageState().equals( @@ -283,15 +394,32 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment { return false; } } - + private void selectPic(){ + PictureSelectBean bean = new PictureSelectBean(); + bean.setCircle(false); + if ( PHOTO_FILE_NAME != BUSINESS){ + bean.setWidth(8); + bean.setHeigh(5); + }else { + bean.setCrop(false); + } + PictureSelectorUtil.selectPic(getContext(),bean); + } /* * 从相册获取 */ public void gallery() { - // 激活系统图库,选择一张图片 - Intent intent = new Intent(Intent.ACTION_PICK); - intent.setType("image/*"); - startActivityForResult(intent, PHOTO_REQUEST_GALLERY); + if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.R){ + if (!Environment.isExternalStorageManager()){ + Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION); + intent.setData(Uri.parse("package:"+getActivity().getPackageName())); + startActivityForResult(intent,1024); + }else { + selectPic(); + } + }else { + selectPic(); + } } /* @@ -306,58 +434,169 @@ public class ShopsCheckUserPhotoFragment extends BaseFragment { startActivityForResult(intent, PHOTO_REQUEST_CAMERA); } + public void onEventMainThread(EventBean eventBean){ + if (eventBean!=null && EventBean.CARD.equals(eventBean.name)){ + if (!TextUtils.isEmpty(eventBean.value)){ + mCompressPath = eventBean.value; + image(); + }else { + gallery(); + } + } + } + + private void image(){ + new Thread(new Runnable() { + @Override + public void run() { + try { + bitmap = Glide.with(getActivity()).asBitmap().load(mCompressPath).submit().get(); + if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面 + idCardFile = saveFile(bitmap, PHOTO_FILE_NAME); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + Picasso.with(getActivity()).invalidate(idCardFile); + Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard); + + } + }); + } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面 + idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + Picasso.with(getActivity()).invalidate(idCardBackFile); + Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack); + + } + }); + } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照 + businessFile = saveFile(bitmap, PHOTO_FILE_NAME); + getActivity().runOnUiThread(new Runnable() { + @Override + public void run() { + Picasso.with(getActivity()).invalidate(businessFile); + Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense); + + } + }); + } + if (tempFile != null) { + tempFile.delete(); + } +// bitmap.recycle(); +// bitmap = null; + } catch (ExecutionException e) { + throw new RuntimeException(e); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + }).start(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + if (bitmap!=null){ + bitmap.recycle(); + bitmap = null; + } + } + + private String mCompressPath = null; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == PHOTO_REQUEST_GALLERY) { - if (data != null) { - // 得到图片的全路径 - Uri uri = data.getData(); - crop(uri); + + + if (requestCode == 1024 && Build.VERSION.SDK_INT >=Build.VERSION_CODES.R){ + if (Environment.isExternalStorageManager()){ + selectPic(); } - } else if (requestCode == PHOTO_REQUEST_CAMERA) { - if (hasSdcard()) { - tempFile = new File(Environment.getExternalStorageDirectory(), - PHOTO_FILE_NAME); - crop(UriForFile.getUriForFile(getContext(), tempFile)); - } else { - ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片"); - } + }else if (resultCode == RESULT_OK){ + if (requestCode== PictureConfig.CHOOSE_REQUEST){ + ArrayList selectList = PictureSelector.obtainSelectorList(data); + if (selectList!=null && selectList.size()>0){ + LocalMedia localMedia = selectList.get(0); + if (localMedia.isCut()){ + mCompressPath = localMedia.getCutPath(); + }else + { + mCompressPath = localMedia.getCompressPath(); + } - } else if (requestCode == PHOTO_REQUEST_CUT) { - try { - bitmap = data.getParcelableExtra("data"); - if (!hasSdcard()) {//未找到SD卡 - ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片"); - return; - } - if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面 - idCardFile = saveFile(bitmap, PHOTO_FILE_NAME); - Picasso.with(getActivity()).invalidate(idCardFile); - Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard); - } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面 - idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME); - Picasso.with(getActivity()).invalidate(idCardBackFile); - Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack); - } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照 - businessFile = saveFile(bitmap, PHOTO_FILE_NAME); - Picasso.with(getActivity()).invalidate(businessFile); - Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense); + if (TextUtils.isEmpty(mCompressPath)){ + mCompressPath = localMedia.getRealPath(); + } + L.i("jjia------------1---"+mCompressPath); + + image(); } - if (tempFile != null) { - tempFile.delete(); - } - bitmap.recycle(); - bitmap = null; - } catch (Exception e) { - e.printStackTrace(); - ToastUtil.show(getActivity(), "未找到图片 请重试"); } } + + + + /// ////////////// + + + +// if (requestCode == PHOTO_REQUEST_GALLERY) { +// if (data != null) { +// // 得到图片的全路径 +// Uri uri = data.getData(); +// crop(uri); +// } +// +// } else if (requestCode == PHOTO_REQUEST_CAMERA) { +// if (hasSdcard()) { +// tempFile = new File(Environment.getExternalStorageDirectory(), +// PHOTO_FILE_NAME); +// crop(UriForFile.getUriForFile(getContext(), tempFile)); +// } else { +// ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片"); +// } +// +// } else if (requestCode == PHOTO_REQUEST_CUT) { +// try { +// bitmap = data.getParcelableExtra("data"); +// if (!hasSdcard()) {//未找到SD卡 +// ToastUtil.show(getActivity(), "未找到存储卡 无法存储照片"); +// return; +// } +// if (PHOTO_FILE_NAME.equals(ID_CARD)) {//身份证正面 +// idCardFile = saveFile(bitmap, PHOTO_FILE_NAME); +// Picasso.with(getActivity()).invalidate(idCardFile); +// Picasso.with(getActivity()).load(idCardFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCard); +// } else if (PHOTO_FILE_NAME.equals(ID_CARD_BACK)) {//身份证背面 +// idCardBackFile = saveFile(bitmap, PHOTO_FILE_NAME); +// Picasso.with(getActivity()).invalidate(idCardBackFile); +// Picasso.with(getActivity()).load(idCardBackFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_idCardBack); +// } else if (PHOTO_FILE_NAME.equals(BUSINESS)) {//营业执照 +// businessFile = saveFile(bitmap, PHOTO_FILE_NAME); +// Picasso.with(getActivity()).invalidate(businessFile); +// Picasso.with(getActivity()).load(businessFile).config(Bitmap.Config.RGB_565).transform(new RoundedCornersTransformation(rounded, 0, RoundedCornersTransformation.CornerType.ALL)).into(iv_businessLicense); +// +// } +// if (tempFile != null) { +// tempFile.delete(); +// } +// bitmap.recycle(); +// bitmap = null; +// } catch (Exception e) { +// e.printStackTrace(); +// ToastUtil.show(getActivity(), "未找到图片 请重试"); +// } +// } + } /**