package com.amlogic.tzr.charismatic_yichang.activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.amlogic.tzr.charismatic_yichang.BaseActivity; import com.amlogic.tzr.charismatic_yichang.R; import com.amlogic.tzr.charismatic_yichang.Tool.BitmapUtil; import com.amlogic.tzr.charismatic_yichang.bean.User; import com.amlogic.tzr.charismatic_yichang.event.LoginEvent; import com.amlogic.tzr.charismatic_yichang.view.CircleTransformation; import com.squareup.picasso.Picasso; import java.io.File; import java.io.FileNotFoundException; import cn.bmob.v3.BmobUser; import cn.bmob.v3.datatype.BmobFile; import cn.bmob.v3.listener.UpdateListener; import cn.bmob.v3.listener.UploadFileListener; import de.greenrobot.event.EventBus; public class UserInfoActivity extends BaseActivity implements View.OnClickListener { private static final String TAG = "UserInfoActivity"; private static final int PICK_FROM_CAMERA = 0x000000; private static final int PICK_FROM_FILE = 0x000001; private static final int CROP_FROM_CAMERA = 0x000002; private static final int CROP_FROM_FILE = 0x000003; public static final String ARG_TAKEN_PHOTO_URI = "image"; private Context mContext; private Uri photoUri; private int photoSize; private Toolbar mToolbar; private ImageView headImg; private LinearLayout layout_phone; private TextView tv_head, tv_nick, tv_sex, tv_address, tv_introduce, tv_phone, tv_creatTime; private Uri imgUri; private User mUser; private boolean isMe=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_user_info); mContext = UserInfoActivity.this; mUser= (User) getIntent().getSerializableExtra(UserProfileActivity.CURRENT_USER); if (mUser.getObjectId().equals(BmobUser.getCurrentUser(mContext,User.class).getObjectId())){ isMe=true; } initView(); initData(); } private void initView() { mToolbar = (Toolbar) findViewById(R.id.tl_aui_toolBar); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle("详细资料"); layout_phone= (LinearLayout) findViewById(R.id.ll_cui_phone); headImg = (ImageView) findViewById(R.id.iv_cui_img); tv_head = (TextView) findViewById(R.id.tv_cui_editImg); tv_nick = (TextView) findViewById(R.id.tv_cui_nick); tv_sex = (TextView) findViewById(R.id.tv_cui_sex); tv_address = (TextView) findViewById(R.id.tv_cui_address); tv_introduce = (TextView) findViewById(R.id.tv_cui_introduce); tv_phone = (TextView) findViewById(R.id.tv_cui_phone); tv_creatTime = (TextView) findViewById(R.id.tv_cui_createTime); tv_head.setOnClickListener(this); tv_nick.setOnClickListener(this); tv_sex.setOnClickListener(this); tv_address.setOnClickListener(this); tv_introduce.setOnClickListener(this); tv_phone.setOnClickListener(this); tv_creatTime.setOnClickListener(this); } private void initData(){ if (mUser!=null){ if (mUser.getHead_thumb()!=null){ String icon_url=mUser.getHead_thumb().getFileUrl(mContext); Picasso.with(mContext).load(icon_url).transform(new CircleTransformation()).into(headImg); }else{ Picasso.with(mContext).load(R.mipmap.ic_user).transform(new CircleTransformation()).into(headImg); } if (mUser.getNick()!=null){ }else { } if (mUser.getSex()==false){ tv_sex.setText("男"); }else{ tv_sex.setText("女"); } if (mUser.getAddress()!=null){ }else { } if (mUser.getIntroduce()!=null){ }else { } if (mUser!=BmobUser.getCurrentUser(mContext,User.class)){ layout_phone.setVisibility(View.GONE); } } } @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_user_info, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.home: finish(); break; case R.id.action_publish: break; } return super.onOptionsItemSelected(item); } @Override public void onClick(View v) { if (isMe) { switch (v.getId()) { case R.id.tv_cui_editImg: showDialog(); break; case R.id.tv_cui_nick: break; case R.id.tv_cui_sex: break; case R.id.tv_cui_address: break; case R.id.tv_cui_introduce: break; case R.id.tv_cui_phone: break; case R.id.tv_cui_createTime: break; } } } private void showDialog(){ User mUser= BmobUser.getCurrentUser(mContext,User.class); if (mUser!=null) { View dialog_publish = LayoutInflater.from(mContext).inflate( R.layout.dialog_publish_photo, null); AlertDialog.Builder builder = new AlertDialog.Builder(mContext); builder.setView(dialog_publish); builder.create(); final AlertDialog dialog = builder.show(); ImageView choiceCamera = (ImageView) dialog_publish .findViewById(R.id.img_choice_from_camera); ImageView choicePhoto = (ImageView) dialog_publish .findViewById(R.id.img_choice_from_photo); ImageView choiceCancle = (ImageView) dialog_publish.findViewById(R.id.img_choice_cancale); choiceCamera.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub dialog.dismiss(); getPicFromCapture(); } }); choicePhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub dialog.dismiss(); getPicFromContent(); } }); choiceCancle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub dialog.dismiss(); } }); }else{ startActivity(new Intent(mContext, LoginActivity.class)); } } private void getPicFromContent() { Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); i.setType("image/*"); startActivityForResult(i, PICK_FROM_FILE); } private void getPicFromCapture() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); imgUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "avatar_" + String.valueOf(System.currentTimeMillis()) + ".png")); intent.putExtra(MediaStore.EXTRA_OUTPUT, imgUri); startActivityForResult(intent, PICK_FROM_CAMERA); } private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", outputX); intent.putExtra("outputY", outputY); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); intent.putExtra("return-data", false); intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString()); intent.putExtra("noFaceDetection", true); // no face detection startActivityForResult(intent, requestCode); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { return; } switch (requestCode) { case PICK_FROM_CAMERA: cropImageUri(imgUri, 250, 250, CROP_FROM_CAMERA); break; case PICK_FROM_FILE: imgUri = data.getData(); doCrop(); break; case CROP_FROM_CAMERA: if (imgUri != null) { setCropImg(data,CROP_FROM_CAMERA); } break; case CROP_FROM_FILE: if (null != data) { setCropImg(data,CROP_FROM_FILE); } break; } } private void doCrop() { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(imgUri, "image/*"); intent.putExtra("outputX", 250); intent.putExtra("outputY", 250); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("scale", true); intent.putExtra("return-data", true); startActivityForResult(intent, CROP_FROM_FILE); } private void setCropImg(Intent picdata,int type) { Bundle bundle = picdata.getExtras(); Bitmap mBitmap=null; if (null != bundle) { if (type==CROP_FROM_FILE) { mBitmap =bundle.getParcelable("data"); }else if(type==CROP_FROM_CAMERA) { // mBitmap = BitmapUtil.decodeUriAsBitmap(mContext,imgUri); try { mBitmap = BitmapUtil.decodeSampledBitmapFromResource(mContext,photoUri,150,150); } catch (FileNotFoundException e) { e.printStackTrace(); } } String BitmapPath = BitmapUtil.saveBitmap(mBitmap, mContext); final BmobFile file = new BmobFile(new File(BitmapPath)); file.upload(this, new UploadFileListener() { @Override public void onSuccess() { Log.e(TAG, "file.upload is ok"); mUser.setHead_thumb(file); updateHead_thumb(file.getFileUrl(mContext)); mUser.update(mContext, new UpdateListener() { @Override public void onSuccess() { EventBus.getDefault().post(new LoginEvent(true, mUser)); Log.e(TAG, " currentUser.update is ok"); } @Override public void onFailure(int i, String s) { Log.e(TAG, " currentUser.update is onFailure---" + i + s); } }); } @Override public void onFailure(int i, String s) { Log.e(TAG, "file.upload is onFailure---" + i + s); } }); } } private void updateHead_thumb(String url) { Picasso.with(mContext).load(url).transform(new CircleTransformation()).into(headImg); } }