package com.bawei.gaoying; import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.content.FileProvider; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; import com.bwie.uploadpicture.ClipImageActivity; import com.bwie.uploadpicture.utils.FileUtil; import java.io.File; import butterknife.ButterKnife; import butterknife.InjectView; import okhttp3.MultipartBody; import okhttp3.RequestBody; import static com.bwie.uploadpicture.utils.FileUtil.getRealFilePathFromUri; /** * 调用相机,相册,剪裁完成的代码 */ public class PersonalActivity extends AppCompatActivity { @InjectView(R.id.setting_upload) ImageView settingUpload; @InjectView(R.id.personal_head) RelativeLayout personalHead; @InjectView(R.id.personal_username) TextView personalUsername; private SharedPreferences sp; //请求相机 private static final int REQUEST_CAPTURE = 100; //请求相册 private static final int REQUEST_PICK = 101; //请求截图 private static final int REQUEST_CROP_PHOTO = 102; //请求访问外部存储 private static final int READ_EXTERNAL_STORAGE_REQUEST_CODE = 103; //请求写入外部存储 private static final int WRITE_EXTERNAL_STORAGE_REQUEST_CODE = 104; //调用照相机返回图片文件 private File tempFile; // 1: qq, 2: weixin private int type = 1; private Bitmap bitMap; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_personal); ButterKnife.inject(this); sp = getSharedPreferences("name", MODE_PRIVATE); String username = sp.getString("username", null); if (!TextUtils.isEmpty(username)) { personalUsername.setText(username); } //弹框,弹出 personalHead.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //相机,相册调用 uploadHeadImage(); } }); } /** * 上传头像 */ private void uploadHeadImage() { View view = LayoutInflater.from(this).inflate(R.layout.layout_popupwindow, null); TextView btnCarema = (TextView) view.findViewById(R.id.btn_camera); TextView btnPhoto = (TextView) view.findViewById(R.id.btn_photo); TextView btnCancel = (TextView) view.findViewById(R.id.btn_cancel); final PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(getResources().getDrawable(android.R.color.transparent)); popupWindow.setOutsideTouchable(true); View parent = LayoutInflater.from(this).inflate(R.layout.activity_main, null); popupWindow.showAtLocation(parent, Gravity.BOTTOM, 0, 0); //popupWindow在弹窗的时候背景半透明 final WindowManager.LayoutParams params = getWindow().getAttributes(); params.alpha = 0.5f; getWindow().setAttributes(params); popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { params.alpha = 1.0f; getWindow().setAttributes(params); } }); btnCarema.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /* //权限判断 if (ContextCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //申请WRITE_EXTERNAL_STORAGE权限 ActivityCompat.requestPermissions(HomeActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, WRITE_EXTERNAL_STORAGE_REQUEST_CODE); } else { }*/ //跳转到调用系统相机 gotoCamera(); popupWindow.dismiss(); } }); btnPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /*//权限判断 if (ContextCompat.checkSelfPermission(HomeActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { //申请READ_EXTERNAL_STORAGE权限 ActivityCompat.requestPermissions(HomeActivity.this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, READ_EXTERNAL_STORAGE_REQUEST_CODE); } else { }*/ //跳转到相册 gotoPhoto(); popupWindow.dismiss(); } }); btnCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popupWindow.dismiss(); } }); } /** * 外部存储权限申请返回 */ @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted gotoCamera(); } } else if (requestCode == READ_EXTERNAL_STORAGE_REQUEST_CODE) { if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // Permission Granted gotoPhoto(); } } } /** * 跳转到相册 */ private void gotoPhoto() { Log.d("evan", "*****************打开图库********************"); //跳转到调用系统图库 Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); startActivityForResult(Intent.createChooser(intent, "请选择图片"), REQUEST_PICK); } /** * 跳转到照相机 */ private void gotoCamera() { Log.d("evan", "*****************打开相机********************"); //创建拍照存储的图片文件 tempFile = new File(FileUtil.checkDirPath(Environment.getExternalStorageDirectory().getPath() + "/image/"), System.currentTimeMillis() + ".jpg"); //跳转到调用系统相机 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //设置7.0中共享文件,分享路径定义在xml/file_paths.xml intent.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); Uri contentUri = FileProvider.getUriForFile(PersonalActivity.this, BuildConfig.APPLICATION_ID + ".fileProvider", tempFile); intent.putExtra(MediaStore.EXTRA_OUTPUT, contentUri); } else { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile)); } startActivityForResult(intent, REQUEST_CAPTURE); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent intent) { switch (requestCode) { case REQUEST_CAPTURE: //调用系统相机返回 if (resultCode == RESULT_OK) { gotoClipActivity(Uri.fromFile(tempFile)); } break; case REQUEST_PICK: //调用系统相册返回 if (resultCode == RESULT_OK) { Uri uri = intent.getData(); gotoClipActivity(uri); } break; case REQUEST_CROP_PHOTO: //剪切图片返回 if (resultCode == RESULT_OK) { final Uri uri = intent.getData(); if (uri == null) { return; } String cropImagePath = getRealFilePathFromUri(getApplicationContext(), uri); System.out.println("地址:"+cropImagePath); bitMap = BitmapFactory.decodeFile(cropImagePath); settingUpload.setImageBitmap(bitMap); //此处后面可以将bitMap转为二进制上传后台网络 //...... uploadImg(new File(cropImagePath)); } break; } } private void uploadImg(File file) {OkHttpClient okHttpClient = new OkHttpClient(); MultipartBody.Builder builder=new MultipartBody.Builder(); builder.setType(MultipartBody.FORM); builder.addFormDataPart("uid",uid+""); builder.addFormDataPart("file",file.getName(),RequestBody.create(MediaType.parse("application/octet-stream"),file)); MultipartBody build = builder.build(); final Request request = new Request.Builder().post(build).url(Api.HEAD_API).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, final Response response) throws IOException { final String string = response.body().string(); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(PersonalActivity.this,string, Toast.LENGTH_SHORT).show(); } }); } });} /** * 打开截图界面 */
public void gotoClipActivity(Uri uri) {
if (uri == null) {
return;
}
Intent intent = new Intent();
intent.setClass(this, ClipImageActivity.class);
intent.putExtra("type", type);
intent.setData(uri);
startActivityForResult(intent, REQUEST_CROP_PHOTO);
}}
//调用头像if(pic!=null) { Glide.with(SettingActivity.this).load(pic).into(settingUpload); }
调用相机,相册,剪裁完成的代码
最新推荐文章于 2019-08-04 16:53:11 发布