package com.example.fei.yhb_20.ui; import android.content.ContentResolver; import android.content.Intent; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.bmob.BmobProFile; import com.bmob.btp.callback.UploadListener; import com.example.fei.yhb_20.R; import com.example.fei.yhb_20.bean.Merchant; import com.example.fei.yhb_20.utils.MyUtils; import com.marshalchen.common.uimodule.cropperimage.CropImageView; import butterknife.ButterKnife; import butterknife.InjectView; import cn.bmob.v3.listener.UpdateListener; public class CropperImageActivity extends ActionBarActivity { private static final int DEFAULT_ASPECT_RATIO_VALUES = 10; private static final String TAG = "CropperImageActivity"; @InjectView(R.id.CropImageView)CropImageView cropImageView; @InjectView(R.id.crop)Button crop; private Merchant merchant; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cropper_image); ButterKnife.inject(this); Intent intent = getIntent(); merchant = (Merchant) intent.getSerializableExtra("merchant"); int flag = intent.getIntExtra("flag",-1); if (flag==0){ Uri bitmapUri = (Uri)intent.getParcelableExtra("bitmapUri"); Log.e(TAG, bitmapUri.toString()); if (bitmapUri!=null){ ContentResolver resolver = getContentResolver(); try { Bitmap myBitmap = MyUtils.getPicFromBytes(MyUtils.readStream(resolver.openInputStream(Uri.parse(bitmapUri.toString()))), null); cropImageView.setImageBitmap(myBitmap); cropImageView.setFixedAspectRatio(true); cropImageView.setAspectRatio(DEFAULT_ASPECT_RATIO_VALUES, DEFAULT_ASPECT_RATIO_VALUES); cropImageView.setGuidelines(0); crop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = cropImageView.getCroppedImage(); MyUtils.showProgressDialog(CropperImageActivity.this,"正在设置头像"); Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null)); Log.e(TAG,getAbsoluteImagePath(uri)); BmobProFile.getInstance(CropperImageActivity.this).upload(getAbsoluteImagePath(uri),new UploadListener() { @Override public void onSuccess(String filename, String url) { merchant.setAvatarPaht(BmobProFile.getInstance(CropperImageActivity.this).signURL(filename, url, "54f197dc6dce11fc7c078c07420a080e", 0, null)); merchant.update(CropperImageActivity.this,new UpdateListener() { @Override public void onSuccess() { Toast.makeText(CropperImageActivity.this,"成功设置头像",Toast.LENGTH_LONG).show(); finish(); } @Override public void onFailure(int i, String s) { Log.e(TAG,s+i); } }); } @Override public void onProgress(int i) { Log.e(TAG, String.valueOf(i)); } @Override public void onError(int i, String s) { Log.e(TAG,s+i); } }); } }); } catch (Exception e) { e.printStackTrace(); } } }else if (flag==1){ Bitmap bitmap = intent.getParcelableExtra("bitmap"); if (bitmap!=null){ cropImageView.setImageBitmap(bitmap); cropImageView.setFixedAspectRatio(true); cropImageView.setAspectRatio(DEFAULT_ASPECT_RATIO_VALUES, DEFAULT_ASPECT_RATIO_VALUES); cropImageView.setGuidelines(0); crop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bitmap bitmap = cropImageView.getCroppedImage(); MyUtils.showProgressDialog(CropperImageActivity.this,"正在设置头像"); Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null)); Log.e(TAG,getAbsoluteImagePath(uri)); } }); } }else{ Toast.makeText(this,"未知错误",Toast.LENGTH_LONG).show(); } } private String getAbsoluteImagePath(Uri uri) { // can post image String[] proj = { MediaStore.Images.Media.DATA }; Cursor cursor = managedQuery(uri, proj, // Which columns to return null, // WHERE clause; which rows to return (all rows) null, // WHERE clause selection arguments (none) null); // Order-by clause (ascending by name) if (cursor != null) { int column_index = cursor .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); cursor.moveToFirst(); return cursor.getString(column_index); } else { //如果游标为空说明获取的已经是绝对路径了 return uri.getPath(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_cropper_image, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }