From 23cb5200b7a8fb57af5e8006612181bae9c0c95d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 13 九月 2024 14:51:17 +0800
Subject: [PATCH] '功能完善'

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java |   95 +++++++++++++++++++----------------------------
 1 files changed, 39 insertions(+), 56 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java
index 5d931d8..43e73fc 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/login/PersonInfoActivity.java
@@ -17,6 +17,8 @@
 import android.os.Bundle;
 import android.provider.MediaStore;
 import androidx.annotation.NonNull;
+import androidx.core.content.FileProvider;
+
 import android.util.Base64;
 import android.util.Log;
 import android.view.LayoutInflater;
@@ -63,6 +65,7 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Calendar;
 import java.util.Map;
 
@@ -73,6 +76,7 @@
 public class PersonInfoActivity extends BaseActivity implements View.OnClickListener, PermissionInterface {
 
     private String TAG = PersonInfoActivity.class.getSimpleName();
+    private  String BASE_FILE_DIR = Environment.getExternalStorageDirectory().getPath() + "/Download/YSDQImg";
 
     private LinearLayout ll_portrait;
     private LinearLayout ll_nickName;
@@ -97,6 +101,7 @@
     @Override
     protected void onCreate(Bundle arg0) {
         super.onCreate(arg0);
+//        BASE_FILE_DIR = getCacheDir().getAbsolutePath();
         setContentView(R.layout.activity_person_info);
         TopStatusSettings.setStatusViewAndDeepColor(this);
         ll_portrait = (LinearLayout) findViewById(R.id.ll_portrait_select);
@@ -293,8 +298,12 @@
                 //鍥惧簱
                 Photo_crop crop = new Photo_crop();//鍒濆鍖� 鍥剧墖鍘嬬缉
                 File f = new File(uriClipUri.getPath());//鑾峰彇鍥剧墖
-                if (crop.compressPhto(f, false)) {//鍘嬬缉骞朵繚瀛樻垚鍔�
-                    Uri uri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "avatar.png");
+                if(!f.exists()){
+                    Log.i(TAG,"瑁佸壀鐨勫浘鐗囦笉瀛樺湪");
+                }
+                String targetFilePath =  BASE_FILE_DIR + "/avatar.png";
+                if (crop.compressPhto(f, targetFilePath, false)) {//鍘嬬缉骞朵繚瀛樻垚鍔�
+                    Uri uri = Uri.parse("file://" + "/" + targetFilePath);
                     f = new File(uri.getPath());
                     imgBase64 = bitmapToBase64(f);
                     iv_portrait.postDelayed(new Runnable() {
@@ -316,9 +325,9 @@
      * @param uri
      */
     public void startPhotoZoom(Uri uri) {
-        File storageDir = new File(android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/");
+        File storageDir = new File(BASE_FILE_DIR);
         if (!storageDir.exists()) {//娌℃湁鏂囦欢澶瑰垯鍒涘缓
-            storageDir.mkdir();
+            storageDir.mkdirs();
         }
         //com.android.camera.action.CROP锛岃繖涓猘ction鏄皟鐢ㄧ郴缁熻嚜甯︾殑鍥剧墖瑁佸垏鍔熻兘
         Intent intent = new Intent("com.android.camera.action.CROP");
@@ -340,11 +349,15 @@
 
         //uritempFile涓篣ri绫诲彉閲忥紝瀹炰緥鍖杣ritempFile
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+
+            File file = new File(BASE_FILE_DIR+"/"+ System.currentTimeMillis() + "_clip.jpg");
+//            uriClipUri = FileProvider.getUriForFile(getApplicationContext(),getApplicationContext().getPackageName() + ".fileprovider",file);
+
             //濡傛灉鏄�7.0鐨勭浉鍐�
             //璁剧疆瑁佸壀鐨勫浘鐗囧湴鍧�Uri
-            uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + System.currentTimeMillis() + "_clip.jpg");
+            uriClipUri = Uri.parse("file://" + "/" + BASE_FILE_DIR + "/"+ System.currentTimeMillis() + "_clip.jpg");
         } else {
-            uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + System.currentTimeMillis() + "_clip.jpg");
+            uriClipUri = Uri.parse("file://" + "/" + BASE_FILE_DIR + "/" + System.currentTimeMillis() + "_clip.jpg");
         }
         //Android 瀵笽ntent涓墍鍖呭惈鏁版嵁鐨勫ぇ灏忔槸鏈夐檺鍒剁殑锛屼竴鑸笉鑳借秴杩� 1M锛屽惁鍒欎細浣跨敤缂╃暐鍥� ,鎵�浠ユ垜浠鎸囧畾杈撳嚭瑁佸壀鐨勫浘鐗囪矾寰�
         intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri);
@@ -720,55 +733,13 @@
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        String filePath = android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/";
+        String filePath = BASE_FILE_DIR;
         if (new File(filePath).exists()) {
             FileUtils.deleteDirectory(filePath);
         }
     }
 
     class Photo_crop {
-        /**
-         * 鑾峰彇鐩稿唽鍥剧墖
-         *
-         * @param uri
-         */
-        public Uri startPhotoZoom(Uri uri, Context mContext) {
-            Uri uriClipUri = null;
-            //com.android.camera.action.CROP锛岃繖涓猘ction鏄皟鐢ㄧ郴缁熻嚜甯︾殑鍥剧墖瑁佸垏鍔熻兘
-            Intent intent = new Intent("com.android.camera.action.CROP");
-            intent.setDataAndType(uri, "image/*");//瑁佸壀鐨勫浘鐗噓ri鍜屽浘鐗囩被鍨�
-            intent.putExtra("crop", "true");//璁剧疆鍏佽瑁佸壀锛屽鏋滀笉璁剧疆锛屽氨浼氳烦杩囪鍓殑杩囩▼锛岃繕鍙互璁剧疆putExtra("crop", "circle")
-            if (Build.MANUFACTURER.equals("HUAWEI")) { //鍗庝负鐗规畩澶勭悊 涓嶇劧浼氭樉绀哄渾
-                intent.putExtra("aspectX", 9998);
-                intent.putExtra("aspectY", 9999);
-            } else {
-                intent.putExtra("aspectX", 1);//瑁佸壀妗嗙殑 X 鏂瑰悜鐨勬瘮渚�,闇�瑕佷负鏁存暟
-                intent.putExtra("aspectY", 1);//瑁佸壀妗嗙殑 Y 鏂瑰悜鐨勬瘮渚�,闇�瑕佷负鏁存暟
-            }
-            intent.putExtra("outputX", 600);//杩斿洖鏁版嵁鐨勬椂鍊欑殑X鍍忕礌澶у皬銆�
-            intent.putExtra("outputY", 600);//杩斿洖鏁版嵁鐨勬椂鍊欑殑Y鍍忕礌澶у皬銆�
-            //瑁佸壀鏃舵槸鍚︿繚鐣欏浘鐗囩殑姣斾緥锛岃繖閲岀殑姣斾緥鏄�1:1
-            intent.putExtra("scale", true);
-            //鏄惁鏄渾褰㈣鍓尯鍩焧rue锛岃缃簡涔熶笉涓�瀹氭湁鏁�
-            intent.putExtra("circleCrop", false);
-            //uritempFile涓篣ri绫诲彉閲忥紝瀹炰緥鍖杣ritempFile
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
-                //濡傛灉鏄�7.0鐨勭浉鍐�
-                //璁剧疆瑁佸壀鐨勫浘鐗囧湴鍧�Uri
-                uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "clip.jpg");
-            } else {
-                uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + "clip.jpg");
-            }
-            Log.e("uriClipUri=====", "" + uriClipUri);
-            //Android 瀵笽ntent涓墍鍖呭惈鏁版嵁鐨勫ぇ灏忔槸鏈夐檺鍒剁殑锛屼竴鑸笉鑳借秴杩� 1M锛屽惁鍒欎細浣跨敤缂╃暐鍥� ,鎵�浠ユ垜浠鎸囧畾杈撳嚭瑁佸壀鐨勫浘鐗囪矾寰�
-            intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri);
-            intent.putExtra("return-data", false);//鏄惁灏嗘暟鎹繚鐣欏湪Bitmap涓繑鍥�
-            intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//杈撳嚭鏍煎紡锛屼竴鑸涓築itmap鏍煎紡鍙婂浘鐗囩被鍨�
-            intent.putExtra("noFaceDetection", false);//浜鸿劯璇嗗埆鍔熻兘
-            ((Activity) mContext).startActivityForResult(intent, 1002);//瑁佸壀瀹屾垚鐨勬爣璇�
-            return uriClipUri;
-        }
-
         /**
          * 鍥剧墖鍘嬬缉鐨勬柟娉�(鍙槸鍐呭瓨鍑忓皯锛岄伩鍏峯om锛屽浘鐗囨湰韬湪disk鐩樹綋绉笉鍙�)
          * 鏄剧ず鐨凚itmap鍗犵敤鐨勫唴瀛樺皯涓�鐐癸紝杩樻槸闇�瑕佸幓璁剧疆鍔犺浇鐨勫儚绱犻暱搴﹀拰瀹藉害锛堝彉鎴愮缉鐣ュ浘锛�
@@ -777,7 +748,7 @@
          * @param crop  鏄惁鍓鍦嗗舰鍥剧墖 true 鏄� false 鍚�
          * @return
          */
-        public boolean compressPhto(File mFile, boolean crop) {
+        public boolean compressPhto(File mFile,String targetFilePath, boolean crop) {
 //        BitmapFactory杩欎釜绫诲氨鎻愪緵浜嗗涓В鏋愭柟娉曪紙decodeResource銆乨ecodeStream銆乨ecodeFile绛夛級鐢ㄤ簬鍒涘缓Bitmap銆�
 //        姣斿濡傛灉鍥剧墖鏉ユ簮浜庣綉缁滐紝灏卞彲浠ヤ娇鐢╠ecodeStream鏂规硶锛�
 //        濡傛灉鏄痵d鍗¢噷闈㈢殑鍥剧墖锛屽氨鍙互閫夋嫨decodeFile鏂规硶锛�
@@ -797,8 +768,12 @@
             String path = mFile.getPath();
             String absPath = mFile.getAbsolutePath();
             Bitmap bitmap = BitmapFactory.decodeFile(absPath, options);
+
             try {
-                return saveBitmap(bitmap, "avatar.png", crop);//淇濆瓨鎴愬姛
+                if(bitmap==null){
+                    bitmap = BitmapFactory.decodeStream(Files.newInputStream(mFile.toPath()));
+                }
+                return saveBitmap(bitmap, targetFilePath, crop);//淇濆瓨鎴愬姛
             } catch (IOException e) {
                 e.printStackTrace();
                 return false;
@@ -835,27 +810,35 @@
          * 淇濆瓨鏂囦欢锛�
          *
          * @param bitmap
-         * @param bitName 鏂囦欢鍚�
+         * @param path 鏂囦欢璺緞
          * @param crop
          * @return
          * @throws IOException
          */
-        private boolean saveBitmap(Bitmap bitmap, String bitName, boolean crop) throws IOException {
+        private boolean saveBitmap(Bitmap bitmap, String path, boolean crop) throws IOException {
             boolean save = false;
-            File storageDir = new File(Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/");
+            File storageDir = new File(BASE_FILE_DIR);
             if (!storageDir.exists()) {//娌℃湁鏂囦欢澶瑰垯鍒涘缓
                 storageDir.mkdir();
             }
             String fileName;
             File file;
-            fileName = Environment.getExternalStorageDirectory().getPath() + "/YSDQImg/" + bitName;
+            fileName = path;
             file = new File(fileName);
             if (bitmap != null) {
                 if (file.exists()) {
                     file.delete();
                 }
+                // 鍒涘缓涓婄骇鏂囦欢澶�
+                if(!file.getParentFile().exists())
+                {
+                    file.getParentFile().mkdirs();
+                }
+               // 鍒涘缓鏂囦欢
+                if(!file.exists()){
+                    file.createNewFile();
+                }
                 FileOutputStream out;
-
                 out = new FileOutputStream(file);
                 // 鏍煎紡涓� JPEG锛岀収鐩告満鎷嶅嚭鐨勫浘鐗囦负JPEG鏍煎紡鐨勶紝PNG鏍煎紡鐨勪笉鑳芥樉绀哄湪鐩稿唽涓�
                 if (bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out)) {

--
Gitblit v1.8.0