| | |
| | | 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; |
| | |
| | | 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. |
| | |
| | | // 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) { |
| | |
| | | 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()) { |
| | |
| | | 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(); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 从相册选择 图片 |
| | | */ |
| | | 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(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 上传个人信息 |
| | | */ |