| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511 |
- package com.sk.weichat.ui.me;
- import android.app.Activity;
- import android.app.AlertDialog;
- import android.app.DatePickerDialog;
- import android.app.ProgressDialog;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.text.TextUtils;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.DatePicker;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.RadioButton;
- import android.widget.TextView;
- import com.alibaba.fastjson.JSON;
- import com.android.volley.Response.ErrorListener;
- import com.android.volley.VolleyError;
- import com.loopj.android.http.AsyncHttpClient;
- import com.loopj.android.http.AsyncHttpResponseHandler;
- import com.loopj.android.http.RequestParams;
- import com.nostra13.universalimageloader.core.ImageLoader;
- import com.sk.weichat.MyApplication;
- import com.sk.weichat.R;
- import com.sk.weichat.bean.Area;
- import com.sk.weichat.bean.User;
- import com.sk.weichat.db.dao.UserDao;
- import com.sk.weichat.helper.AvatarHelper;
- import com.sk.weichat.helper.LoginHelper;
- import com.sk.weichat.ui.base.BaseActivity;
- import com.sk.weichat.ui.tool.SelectAreaActivity;
- import com.sk.weichat.util.CameraUtil;
- import com.sk.weichat.util.ProgressDialogUtil;
- import com.sk.weichat.util.StringUtils;
- import com.sk.weichat.util.TimeUtils;
- import com.sk.weichat.util.ToastUtil;
- import com.sk.weichat.volley.ObjectResult;
- import com.sk.weichat.volley.Result;
- import com.sk.weichat.volley.StringJsonObjectRequest;
- import org.apache.http.Header;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.util.Date;
- import java.util.GregorianCalendar;
- import java.util.HashMap;
- /**
- * 我的基本资料界面
- *
- * @author Dean Tao
- * @version 1.0
- */
- public class BasicInfoEditActivity extends BaseActivity implements View.OnClickListener {
- private User mUser;
- // widget
- private ImageView mAvatarImg;
- private EditText mNameEdit;
- private TextView mBirthdayTv;
- private TextView mCityTv;
- private Button mNextStepBtn;
- private RadioButton rbBoy,rbGrid;
- // Temp
- private User mTempData;
- // 选择头像的数据
- private File mCurrentFile;
- private boolean isError = false;
- private ProgressDialog mProgressDialog;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- mUser = MyApplication.getInstance().mLoginUser;
- if (!LoginHelper.isUserValidation(mUser)) {
- isError = true;
- return;
- }
- mProgressDialog = ProgressDialogUtil.init(mContext, null, getString(R.string.please_wait));
- setContentView(R.layout.activity_basic_info_edit);
- initView();
- }
- private void initView() {
- getSupportActionBar().setTitle(R.string.basic_info);
- mAvatarImg = (ImageView) findViewById(R.id.avatar_img);
- mNameEdit = (EditText) findViewById(R.id.name_edit);
- rbBoy= (RadioButton) findViewById(R.id.rb_boy);
- rbGrid= (RadioButton) findViewById(R.id.rb_grid);
- mBirthdayTv = (TextView) findViewById(R.id.birthday_tv);
- mCityTv = (TextView) findViewById(R.id.city_tv);
- mNextStepBtn = (Button) findViewById(R.id.next_step_btn);
- mAvatarImg.setOnClickListener(this);
- findViewById(R.id.sex_select_rl).setOnClickListener(this);
- findViewById(R.id.birthday_select_rl).setOnClickListener(this);
- findViewById(R.id.city_select_rl).setOnClickListener(this);
- mNextStepBtn.setOnClickListener(this);
- updateUI();
- }
- private void updateUI() {
- // clone一份临时数据,用来存数变化的值,返回的时候对比有无变化
- try {
- mTempData = (User) mUser.clone();
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- }
- if (mTempData.getSex() == 1) {
- rbBoy.setChecked(true);
- } else {
- rbGrid.setChecked(true);
- }
- mBirthdayTv.setText(TimeUtils.sk_time_s_long_2_str(mTempData.getBirthday()));
- mNameEdit.setText(mTempData.getNickName());
- mCityTv.setText(Area.getProvinceCityString(mTempData.getProvinceId(), mTempData.getCityId()));
- AvatarHelper.getInstance().displayAvatar(mTempData.getUserId(), mAvatarImg, true);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.avatar_img:
- showSelectAvatarDialog();
- break;
- case R.id.sex_select_rl:
- // showSelectSexDialog();
- break;
- case R.id.birthday_select_rl:
- showSelectBirthdayDialog();
- break;
- case R.id.city_select_rl:
- Intent intent = new Intent(BasicInfoEditActivity.this, SelectAreaActivity.class);
- intent.putExtra(SelectAreaActivity.EXTRA_AREA_TYPE, Area.AREA_TYPE_PROVINCE);
- intent.putExtra(SelectAreaActivity.EXTRA_AREA_PARENT_ID, Area.AREA_DATA_CHINA_ID);// 直接选择中国,
- intent.putExtra(SelectAreaActivity.EXTRA_AREA_DEEP, Area.AREA_TYPE_COUNTY);
- startActivityForResult(intent, 4);
- break;
- case R.id.next_step_btn:
- next();
- break;
- }
- }
- private void showSelectAvatarDialog() {
- String[] items = new String[]{getString(R.string.c_take_picture), getString(R.string.c_photo_album)};
- AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(R.string.select_avatar).setSingleChoiceItems(items, 0,
- new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == 0) {
- takePhoto();
- } else {
- selectPhoto();
- }
- dialog.dismiss();
- }
- });
- builder.show();
- }
- private static final int REQUEST_CODE_CAPTURE_CROP_PHOTO = 1;
- private static final int REQUEST_CODE_PICK_CROP_PHOTO = 2;
- private static final int REQUEST_CODE_CROP_PHOTO = 3;
- private Uri mNewPhotoUri;
- private void takePhoto() {
- mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
- CameraUtil.captureImage(this, mNewPhotoUri, REQUEST_CODE_CAPTURE_CROP_PHOTO);
- }
- private void selectPhoto() {
- CameraUtil.pickImageSimple(this, REQUEST_CODE_PICK_CROP_PHOTO);
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_CODE_CAPTURE_CROP_PHOTO) {// 拍照返回再去裁减
- if (resultCode == Activity.RESULT_OK) {
- if (mNewPhotoUri != null) {
- Uri o = mNewPhotoUri;
- mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
- mCurrentFile = new File(mNewPhotoUri.getPath());
- CameraUtil.cropImage(this, o, mNewPhotoUri, REQUEST_CODE_CROP_PHOTO, 1, 1, 300, 300);
- } else {
- ToastUtil.showToast(this, R.string.c_photo_album_failed);
- }
- }
- } else if (requestCode == REQUEST_CODE_PICK_CROP_PHOTO) {// 选择一张图片,然后立即调用裁减
- if (resultCode == Activity.RESULT_OK) {
- if (data != null && data.getData() != null) {
- String path = CameraUtil.getImagePathFromUri(this, data.getData());
- Uri o = Uri.fromFile(new File(path));
- mNewPhotoUri = CameraUtil.getOutputMediaFileUri(this, CameraUtil.MEDIA_TYPE_IMAGE);
- mCurrentFile = new File(mNewPhotoUri.getPath());
- CameraUtil.cropImage(this, o, mNewPhotoUri, REQUEST_CODE_CROP_PHOTO, 1, 1, 300, 300);
- } else {
- ToastUtil.showToast(this, R.string.c_photo_album_failed);
- }
- }
- } else if (requestCode == REQUEST_CODE_CROP_PHOTO) {
- if (resultCode == Activity.RESULT_OK) {
- if (mNewPhotoUri != null) {
- mCurrentFile = new File(mNewPhotoUri.getPath());
- ImageLoader.getInstance().displayImage(mNewPhotoUri.toString(), mAvatarImg);
- } else {
- ToastUtil.showToast(this, R.string.c_crop_failed);
- }
- }
- } else if (requestCode == 4) {// 选择城市
- if (resultCode == RESULT_OK && data != null) {
- int countryId = data.getIntExtra(SelectAreaActivity.EXTRA_COUNTRY_ID, 0);
- int provinceId = data.getIntExtra(SelectAreaActivity.EXTRA_PROVINCE_ID, 0);
- int cityId = data.getIntExtra(SelectAreaActivity.EXTRA_CITY_ID, 0);
- int countyId = data.getIntExtra(SelectAreaActivity.EXTRA_COUNTY_ID, 0);
- // String country_name = data.getStringExtra(Constant.EXTRA_COUNTRY_NAME);
- String province_name = data.getStringExtra(SelectAreaActivity.EXTRA_PROVINCE_NAME);
- String city_name = data.getStringExtra(SelectAreaActivity.EXTRA_CITY_NAME);
- mCityTv.setText(province_name + "-" + city_name);
- mTempData.setCountryId(countryId);
- mTempData.setProvinceId(provinceId);
- mTempData.setCityId(cityId);
- mTempData.setAreaId(countyId);
- }
- }
- }
- private void showSelectSexDialog() {
- String[] sexs = new String[]{getString(R.string.sex_man), getString(R.string.sex_woman)};
- new AlertDialog.Builder(this).setTitle(getString(R.string.select_sex))
- .setSingleChoiceItems(sexs, mTempData.getSex() == 1 ? 0 : 1, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- if (which == 0) {
- mTempData.setSex(1);
- // mSexTv.setText(R.string.sex_man);
- } else {
- mTempData.setSex(0);
- // mSexTv.setText(R.string.sex_woman);
- }
- dialog.dismiss();
- }
- }).setCancelable(true).create().show();
- }
- @SuppressWarnings("deprecation")
- private void showSelectBirthdayDialog() {
- Date date = new Date(mTempData.getBirthday() * 1000);
- DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
- @Override
- public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
- GregorianCalendar calendar = new GregorianCalendar(year, monthOfYear, dayOfMonth);
- mTempData.setBirthday(TimeUtils.getSpecialBeginTime(mBirthdayTv, calendar.getTime().getTime() / 1000));
- long currentTime = System.currentTimeMillis() / 1000;
- long birthdayTime = calendar.getTime().getTime() / 1000;
- if (birthdayTime > currentTime) {
- ToastUtil.showToast(mContext, "亲!您的出生日期已经超过现在了哦!");
- }
- }
- }, date.getYear() + 1900, date.getMonth(), date.getDate());
- dialog.show();
- }
- private void loadPageData() {
- mTempData.setNickName(mNameEdit.getText().toString().trim());
- }
- private void next() {
- if (rbBoy.isChecked()){
- mTempData.setSex(1);
- Log.i("gongpengming","选择男的");
- }else{
- mTempData.setSex(0);
- Log.i("gongpengming","选择女的");
- }
- if (!MyApplication.getInstance().isNetworkActive()) {
- ToastUtil.showToast(this, R.string.net_exception);
- return;
- }
- loadPageData();
- if (TextUtils.isEmpty(mTempData.getNickName())) {
- mNameEdit.requestFocus();
- mNameEdit.setError(StringUtils.editTextHtmlErrorTip(this, R.string.name_empty_error));
- return;
- }
- if (!StringUtils.isNickName(mTempData.getNickName())) {
- mNameEdit.requestFocus();
- mNameEdit.setError(StringUtils.editTextHtmlErrorTip(this, R.string.nick_name_format_error));
- return;
- }
- if (mTempData.getCityId() <= 0) {
- ToastUtil.showToast(mContext, R.string.live_address_empty_error);
- return;
- }
- if (mUser != null && !mUser.equals(mTempData)) {// 数据改变了,提交数据
- Log.d("wang", "数据改变了,提交数据");
- updateData();
- }
- if (mCurrentFile != null && mCurrentFile.exists()) {
- Log.d("wang", "uploadAvatar");
- uploadAvatar(mCurrentFile);
- }
- }
- private void updateData() {
- HashMap<String, String> params = new HashMap<String, String>();
- params.put("access_token", MyApplication.getInstance().mAccessToken);
- if (!mUser.getNickName().equals(mTempData.getNickName())) {
- params.put("nickname", mTempData.getNickName());
- }
- if (mUser.getSex() != mTempData.getSex()) {
- params.put("sex", String.valueOf(mTempData.getSex()));
- }
- if (mUser.getBirthday() != mTempData.getBirthday()) {
- params.put("birthday", String.valueOf(mTempData.getBirthday()));
- }
- if (mUser.getCountryId() != mTempData.getCountryId()) {
- params.put("countryId", String.valueOf(mTempData.getCountryId()));
- }
- if (mUser.getProvinceId() != mTempData.getProvinceId()) {
- params.put("provinceId", String.valueOf(mTempData.getProvinceId()));
- }
- if (mUser.getCityId() != mTempData.getCityId()) {
- params.put("cityId", String.valueOf(mTempData.getCityId()));
- }
- if (mUser.getAreaId() != mTempData.getAreaId()) {
- params.put("areaId", String.valueOf(mTempData.getAreaId()));
- }
- ProgressDialogUtil.show(mProgressDialog);
- StringJsonObjectRequest<Void> request = new StringJsonObjectRequest<Void>(mConfig.USER_UPDATE, new ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError arg0) {
- ProgressDialogUtil.dismiss(mProgressDialog);
- ToastUtil.showErrorNet(BasicInfoEditActivity.this);
- }
- }, new StringJsonObjectRequest.Listener<Void>() {
- @Override
- public void onResponse(ObjectResult<Void> result) {
- boolean success = Result.defaultParser(mContext, result, true);
- if (success) {
- saveData();
- } else {
- ProgressDialogUtil.dismiss(mProgressDialog);
- }
- }
- }, Void.class, params);
- addDefaultRequest(request);
- }
- private void saveData() {
- if (!mUser.getNickName().equals(mTempData.getNickName())) {
- Log.d("wang", "更新数据库" + mTempData.getNickName());
- MyApplication.getInstance().mLoginUser.setNickName(mTempData.getNickName());
- UserDao.getInstance().updateNickName(mTempData.getUserId(), mTempData.getNickName());// 更新数据库
- }
- if (mUser.getSex() != mTempData.getSex()) {
- MyApplication.getInstance().mLoginUser.setSex(mTempData.getSex());
- UserDao.getInstance().updateSex(mTempData.getUserId(), mTempData.getSex() + "");// 更新数据库
- }
- if (mUser.getBirthday() != mTempData.getBirthday()) {
- MyApplication.getInstance().mLoginUser.setBirthday(mTempData.getBirthday());
- UserDao.getInstance().updateBirthday(mTempData.getUserId(), mTempData.getBirthday() + "");// 更新数据库
- }
- if (mUser.getCountryId() != mTempData.getCountryId()) {
- MyApplication.getInstance().mLoginUser.setCountryId(mTempData.getCountryId());
- UserDao.getInstance().updateCountryId(mTempData.getUserId(), mTempData.getCountryId());
- }
- if (mUser.getProvinceId() != mTempData.getProvinceId()) {
- MyApplication.getInstance().mLoginUser.setProvinceId(mTempData.getProvinceId());
- UserDao.getInstance().updateProvinceId(mTempData.getUserId(), mTempData.getProvinceId());
- }
- if (mUser.getCityId() != mTempData.getCityId()) {
- MyApplication.getInstance().mLoginUser.setCityId(mTempData.getCityId());
- UserDao.getInstance().updateCityId(mTempData.getUserId(), mTempData.getCityId());
- }
- if (mUser.getAreaId() != mTempData.getAreaId()) {
- MyApplication.getInstance().mLoginUser.setAreaId(mTempData.getAreaId());
- UserDao.getInstance().updateAreaId(mTempData.getUserId(), mTempData.getAreaId());
- }
- if (mCurrentFile != null && mCurrentFile.exists()) {
- uploadAvatar(mCurrentFile);
- } else {
- ProgressDialogUtil.dismiss(mProgressDialog);
- setResult(RESULT_OK);
- finish();
- }
- }
- @Override
- public void onBackPressed() {
- doBack();
- }
- @Override
- protected boolean onHomeAsUp() {
- doBack();
- return true;
- }
- private void doBack() {
- if (isError) {
- super.onBackPressed();
- return;
- }
- loadPageData();
- if ((mUser != null && !mUser.equals(mTempData)) || (mCurrentFile != null && mCurrentFile.exists())) {
- showBackDialog();
- } else {
- finish();
- }
- }
- private void showBackDialog() {
- AlertDialog.Builder builder = new AlertDialog.Builder(this).setTitle(R.string.prompt_title).setMessage(R.string.cancel_edit_prompt)
- .setNegativeButton(getString(R.string.no), null).setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- setResult(RESULT_OK);
- finish();
- }
- });
- builder.create().show();
- }
- private void uploadAvatar(File file) {
- if (!file.exists()) {// 文件不存在
- return;
- }
- // 显示正在上传的ProgressDialog
- ProgressDialogUtil.show(mProgressDialog, getString(R.string.upload_avataring));
- RequestParams params = new RequestParams();
- final String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
- params.put("userId", loginUserId);
- try {
- params.put("file1", file);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- AsyncHttpClient client = new AsyncHttpClient();
- client.post(mConfig.AVATAR_UPLOAD_URL, params, new AsyncHttpResponseHandler() {
- @Override
- public void onSuccess(int arg0, Header[] arg1, byte[] arg2) {
- boolean success = false;
- if (arg0 == 200) {
- Result result = null;
- try {
- result = JSON.parseObject(new String(arg2), Result.class);
- } catch (Exception e) {
- e.printStackTrace();
- }
- if (result != null && result.getResultCode() == Result.CODE_SUCCESS) {
- success = true;
- }
- }
- ProgressDialogUtil.dismiss(mProgressDialog);
- if (success) {
- AvatarHelper.getInstance().deleteAvatar(loginUserId);
- ToastUtil.showToast(BasicInfoEditActivity.this, R.string.upload_avatar_success);
- } else {
- ToastUtil.showToast(BasicInfoEditActivity.this, R.string.upload_avatar_failed);
- }
- finish();
- }
- @Override
- public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
- ProgressDialogUtil.dismiss(mProgressDialog);
- ToastUtil.showToast(BasicInfoEditActivity.this, R.string.upload_avatar_failed);
- }
- });
- }
- }
|