admin
2021-08-19 6f07cf3ce7ccb37911f5c755b7833732fb8eee64
app/src/com/hanju/video/app/ui/login/PersonInfoActivity.java
@@ -1,28 +1,40 @@
package com.hanju.video.app.ui.login;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.provider.MediaStore;
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.widget.DatePicker;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.TextView;
import android.widget.Toast;
import com.androidquery.AQuery;
import com.bumptech.glide.Glide;
import com.hanju.video.app.ui.mine.BrowserActivity;
import com.hanju.video.app.util.PhotoCrop;
import com.lcjian.library.util.Environment;
import com.lcjian.library.util.SingleToast;
import com.lcjian.library.util.common.StringUtils;
@@ -47,6 +59,9 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Calendar;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
/**
 * Created by weikou2015 on 2016/10/27.
@@ -140,26 +155,81 @@
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == Activity.RESULT_OK) {
            Bitmap bm = null;
            bm = SelectPicUtil.onActivityResult(this, requestCode,
                    resultCode, data, imgWidth, imgHeight, imgWidth,
                    imgHeight);
            if (bm != null) {
                if (bm.getByteCount() / 1024 > maxSize) {
                    bm = compressImage(bm);
            //从相册中选择而来
            if (requestCode == 1001 && data != null) {
                Uri selectedImage = data.getData();
                startPhotoZoom(selectedImage);//系统剪裁
            } else if (requestCode == 1002 && data != null) {
                if (uriClipUri != null) {
                    //图库
                    PhotoCrop crop = new PhotoCrop();//初始化 图片压缩
                    File f = new File(uriClipUri.getPath());//获取图片
                    Bitmap bitmap = crop.compressPhto(f);
                    if (crop.compressPhto(f, false)) {//压缩并保存成功
                        if (bitmap != null) {
                            if (bitmap.getByteCount() / 1024 > maxSize) {
                                bitmap = compressImage(bitmap);
                            }
                            String path = saveBitmapTofile(bitmap);
                            final File file = new File(path);
                            if (!file.exists()) {
                                return;
                            }
                            imgBase64 = bitmapToBase64(bitmap);
                            Log.i("mresult", "图片路劲为:" + path + "----requestcode:" + requestCode);
                            Glide.with(PersonInfoActivity.this).load(file).transform(new GlideCircleTransform(PersonInfoActivity.this)).into(iv_portrait);
                        }
                    }
                }
                String path = saveBitmapTofile(bm);
                final File file = new File(path);
                if (!file.exists()) {
                    return;
                }
                imgBase64 = bitmapToBase64(bm);
                Log.i("mresult", "图片路劲为:" + path + "----requestcode:" + requestCode);
                Glide.with(PersonInfoActivity.this).load(file).transform(new GlideCircleTransform(PersonInfoActivity.this)).into(iv_portrait);
            }
        }
    }
    private Uri uriClipUri;//剪裁图片路径
    /**
     * 获取相册图片
     *
     * @param uri
     */
    public void startPhotoZoom(Uri uri) {
        File storageDir = new File(android.os.Environment.getExternalStorageDirectory().getPath() + "/FLQImg/");
        if (!storageDir.exists()) {//没有文件夹则创建
            storageDir.mkdir();
        }
        //com.android.camera.action.CROP,这个action是调用系统自带的图片裁切功能
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");//裁剪的图片uri和图片类型
        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", 250);//返回数据的时候的X像素大小。
        intent.putExtra("outputY", 250);//返回数据的时候的Y像素大小。
        //裁剪时是否保留图片的比例,这里的比例是1:1
        intent.putExtra("scale", true);
        //是否是圆形裁剪区域,设置了也不一定有效
        intent.putExtra("circleCrop", false);
        //uritempFile为Uri类变量,实例化uritempFile
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //如果是7.0的相册
            //设置裁剪的图片地址Uri
            uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/FLQImg/" + "clip.jpg");
        } else {
            uriClipUri = Uri.parse("file://" + "/" + android.os.Environment.getExternalStorageDirectory().getPath() + "/FLQImg/" + "clip.jpg");
        }
        //Android 对Intent中所包含数据的大小是有限制的,一般不能超过 1M,否则会使用缩略图 ,所以我们要指定输出裁剪的图片路径
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uriClipUri);
        intent.putExtra("return-data", false);//是否将数据保留在Bitmap中返回
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());//输出格式,一般设为Bitmap格式及图片类型
        intent.putExtra("noFaceDetection", false);//人脸识别功能
        startActivityForResult(intent, 1002);//裁剪完成的标识
    }
    private String bitmapToBase64(Bitmap bitmap) {
@@ -238,6 +308,22 @@
        return bitmap;
    }
    // 判断权限集合 是否授权 false授权 true未授权
    public boolean lacksPermissions(String... permissions) {
        for (String permission : permissions) {
            if (lacksPermission(permission)) {
                return true;
            }
        }
        return false;
    }
    // 判断是否缺少权限
    private boolean lacksPermission(String permission) {
        //权限未授权
        return ContextCompat.checkSelfPermission(getApplicationContext(), permission) == PackageManager.PERMISSION_DENIED;
    }
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
@@ -245,7 +331,12 @@
                finish();
                break;
            case R.id.ll_portrait_select:
                SelectPicUtil.getByAlbum(PersonInfoActivity.this);
                if (lacksPermissions(Manifest.permission.READ_EXTERNAL_STORAGE,
                        Manifest.permission.WRITE_EXTERNAL_STORAGE)) { //存储权限未开启
                    ActivityCompat.requestPermissions(PersonInfoActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, 10023);
                    return;
                }
                popwindow_img();//选择相册
                break;
            case R.id.ll_nickName:
                getNickName();
@@ -269,6 +360,30 @@
        }
    }
    /**
     * 从相册选择 图片
     */
    private void popwindow_img() {
        // 打开系统图库选择图片
        Intent picture = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        //解决手机找不到activity 方案一 检测裁是否有对应的app(选择了方案二 方案一占时屏蔽)
//                PackageManager packageManager = getPackageManager();
//                List<ResolveInfo> applist = packageManager.queryIntentActivities(picture, 0);
//                if (applist == null || applist.isEmpty()) {
//                    Toast.makeText(MyInfoActivity.this, "no activity", Toast.LENGTH_SHORT).show();
//                    return;
//                }
        //解决手机找不到activity 方案二 抛异常
        try {
            startActivityForResult(picture, 1001);
        } catch (ActivityNotFoundException exception) {
            Toast.makeText(this, "no activity", Toast.LENGTH_SHORT).show();
        }
    }
    /**
     * 上传个人信息
     */