package com.quark.quanzi; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.json.JSONException; import org.json.JSONObject; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.android.volley.AuthFailureError; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.VolleyError; import com.android.volley.toolbox.ImageRequest; import com.android.volley.toolbox.StringRequest; import com.carson.constant.ConstantForSaveList; import com.easemob.chat.EMContactManager; import com.easemob.chatuidemo.Constant; import com.parttime.IM.ChatActivity; import com.easemob.chatuidemo.domain.User; import com.lidroid.xutils.ViewUtils; import com.parttime.constants.ApplicationConstants; import com.qingmu.jianzhidaren.R; import com.quark.common.JsonUtil; import com.quark.common.Url; import com.quark.http.image.CircularImage; import com.quark.http.image.LoadImage; import com.quark.jianzhidaren.ApplicationControl; import com.quark.jianzhidaren.BaseActivity; import com.quark.model.HuanxingUserInfo; import com.quark.ui.widget.EditDialog; /** * 联系人列表页 * */ public class UserInfo extends BaseActivity { private String dataUrl; HuanxingUserInfo hxus; String hxId; int[] heartImg = { R.id.xinyi_bt1, R.id.xinyi_bt2, R.id.xinyi_bt3, R.id.xinyi_bt4, R.id.xinyi_bt5, R.id.xinyi_bt6, R.id.xinyi_bt7, R.id.xinyi_bt8, R.id.xinyi_bt9, R.id.xinyi_bt10 }; private int creditworthiness;// 信誉值:步长为:10为一个心,5为半个心 private boolean friendFlag = false;// 判断是否是好友 private Button add_friend_btn;// 添加好友or发送消息 private ProgressDialog progressDialog; private SharedPreferences sp; CircularImage cover_user_photo;// 头像 private ImageView my_sex_imv, yan_img_imv, cyj_imv;// 性别 private TextView nameTv;// 姓名 private LinearLayout xinyu_linearlayout; /** * 发送好友弹框 */ public void showAlertDialog(String str, final String str2) { final EditDialog.Builder builder = new EditDialog.Builder(UserInfo.this); builder.setMessage(str); builder.setTitle(str2); builder.setPositiveButton("确 定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { final String content = builder.getContent(); dialog.dismiss(); progressDialog = new ProgressDialog(UserInfo.this); progressDialog.setMessage("正在发送请求..."); progressDialog.setCanceledOnTouchOutside(false); progressDialog.show(); new Thread(new Runnable() { public void run() { try { String sendstr = ""; // demo写死了个reason,实际应该让用户手动填入 if (content.isEmpty()) { sendstr = "邀请你为好友"; } else { sendstr = content; } EMContactManager.getInstance().addContact(hxId, sendstr); UserInfo.this.runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); Toast.makeText(UserInfo.this, "发送请求成功,等待对方验证", 1).show(); add_friend_btn.setText("等待对方验证中..."); add_friend_btn.setEnabled(false); } }); } catch (final Exception e) { UserInfo.this.runOnUiThread(new Runnable() { public void run() { progressDialog.dismiss(); Toast.makeText(UserInfo.this, "请求添加好友失败:" + e.getMessage(), 1) .show(); } }); } } }).start(); } }); builder.create().show(); } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.huanxing_user_info); sp = getSharedPreferences("jrdr.setting", MODE_PRIVATE); ImageView back = (ImageView) findViewById(R.id.left); back.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { UserInfo.this.finish(); } }); // 头像 cover_user_photo = (CircularImage) findViewById(R.id.cover_user_photo); // 姓名 nameTv = (TextView) findViewById(R.id.name); // 性别 my_sex_imv = (ImageView) findViewById(R.id.my_sex_imv); yan_img_imv = (ImageView) findViewById(R.id.yan_img); cyj_imv = (ImageView) findViewById(R.id.cyj_img); xinyu_linearlayout = (LinearLayout) findViewById(R.id.xinyu_linearlayout); add_friend_btn = (Button) findViewById(R.id.add_friend_btn); add_friend_btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // 如果是好友关系则跳转到发送消息界面,反之则发送好友请求 if (friendFlag) { UserInfo.this.finish(); if (!ApplicationConstants.JZDR.equals(hxId)) { startActivity(new Intent(UserInfo.this, ChatActivity.class).putExtra("userId", hxId)); } } else { showAlertDialog("留言", "留言"); } } }); ViewUtils.inject(this); dataUrl = Url.HUANXIN_user_info; hxId = getIntent().getStringExtra("hxId"); // 如果是商家,hxId以C开头,取消显示信誉值 if (hxId != null && !"".equals(hxId)) { String userId = sp.getString("userId", ""); if (!"".equals(userId)) { if (hxId.contains(userId)) { add_friend_btn.setVisibility(View.GONE); } } if (hxId.contains("c")) { xinyu_linearlayout.setVisibility(View.GONE); cyj_imv.setVisibility(View.GONE); } } // 判断是否是好友关系 getFriendList(); getData(); } /** * 获取当前用户好友列表 */ private void getFriendList() { List<User> friendList = new ArrayList<User>();// 好友列表 try { // friendList = // EMContactManager.getInstance().getContactUserNames(); // 获取本地好友列表 Map<String, User> users = ApplicationControl.getInstance() .getContactList(); Iterator<Entry<String, User>> iterator = users.entrySet() .iterator(); while (iterator.hasNext()) { Entry<String, User> entry = iterator.next(); if (!entry.getKey().equals(Constant.NEW_FRIENDS_USERNAME) && !entry.getKey().equals(Constant.GROUP_USERNAME) && !entry.getKey().equals(Constant.PUBLIC_COUNT) ) { // 这里有bug,会有好友列表有uid,没有名字的情况 if (!entry.getKey().equals(ApplicationConstants.JZDR)) { // userName ==nick 都是u661或者c221之类的 // head 是u或者c friendList.add(entry.getValue()); } } } } catch (Exception e) { friendList = new ArrayList<User>(); e.printStackTrace(); } if (friendList.size() > 0) { for (int i = 0; i < friendList.size(); i++) { if (friendList.get(i).getUsername().equals(hxId)) { friendFlag = true; return; } } } } public void getData() { showWait(true); StringRequest request = new StringRequest(Request.Method.POST, dataUrl, new Response.Listener<String>() { @Override public void onResponse(String response) { showWait(false); try { JSONObject js = new JSONObject(response); JSONObject jstatu = js .getJSONObject("ResponseStatus"); JSONObject jinfo = js.getJSONObject("info"); int status = jstatu.getInt("status"); if (status == 2) { Toast.makeText(getApplicationContext(), "无此用户", 0).show(); } hxus = (HuanxingUserInfo) JsonUtil.jsonToBean( jinfo, HuanxingUserInfo.class); Editor edt = sp.edit(); edt.putString(hxId + "_photo", hxus.getAvatar()); edt.putString(hxId + "realname", hxus.getName()); edt.commit(); initView(); } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { showWait(false); hxus = new HuanxingUserInfo(); hxus.setAvatar(sp.getString(hxId + "_photo", "")); hxus.setName(sp.getString(hxId + "realname", "")); hxus.setSex(-1); initView(); Toast.makeText(getApplicationContext(), "哎呀,网络太糟糕了", 0) .show(); } }) { @Override protected Map<String, String> getParams() throws AuthFailureError { Map<String, String> map = new HashMap<String, String>(); map.put("id", hxId + ""); return map; } }; queue.add(request); request.setRetryPolicy(new DefaultRetryPolicy(ConstantForSaveList.DEFAULTRETRYTIME*1000, 1, 1.0f)); } /** * 加载本地头像和名字 */ private void loadNativePhoto(final String id, final ImageView avatar) { // 先获取本地名字和头像 File mePhotoFold = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image"); if (!mePhotoFold.exists()) { mePhotoFold.mkdirs(); } // 当前聊天对象的头像更改,要先联网验证头像路径是否更改 File picture_1 = new File(Environment.getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + sp.getString(id + "_photo", "c")); if (picture_1.exists()) { // 加载本地图片 // Bitmap bb_bmp = MyResumeActivity.zoomImg(picture_1, 300, 300); Bitmap bb_bmp = BitmapFactory.decodeFile(Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + sp.getString(id + "_photo", "c")); if (bb_bmp != null) { avatar.setImageBitmap(LoadImage.toRoundBitmap(bb_bmp)); } else { loadpersonPic(hxus.getAvatar(), avatar, 1); } } else { loadpersonPic(hxus.getAvatar(), avatar, 1); } } public void initView() { if ((hxus.getAvatar() != null) && (!hxus.getAvatar().equals(""))) { loadNativePhoto(hxId, cover_user_photo); // loadpersonPic(Url.GETPIC + hxus.getAvatar(), head, 1); } else { cover_user_photo.setImageResource(R.drawable.default_avatar); } creditworthiness = hxus.getCertification(); nameTv.setText(hxus.getName()); if (hxus.getSex() == -1) { my_sex_imv.setVisibility(View.GONE); } else if (hxus.getSex() == 1) { my_sex_imv.setVisibility(View.VISIBLE); my_sex_imv.setImageResource(R.drawable.my_men); } else if (hxus.getSex() == 0) { my_sex_imv.setVisibility(View.VISIBLE); my_sex_imv.setImageResource(R.drawable.my_women); } if (hxus.getCertification() == 2) { yan_img_imv.setImageResource(R.drawable.my_certified); } else { yan_img_imv.setImageResource(R.drawable.my_unauthorized); } if (hxus.getEarnest_money() == 1) { cyj_imv.setImageResource(R.drawable.my_margin); } else { cyj_imv.setImageResource(R.drawable.my_ordinary); } addXinToView(hxus.getCreditworthiness()); if (friendFlag) { // message_title_tv.setText("查看好友"); add_friend_btn.setText("发消息"); } else { // message_title_tv.setText("添加好友"); add_friend_btn.setText("发送好友申请"); } } /** * @Description: 加载图片 * @author howe * @date 2014-7-30 下午5:57:52 * */ public void loadpersonPic(final String url, final ImageView imageView, final int isRound) { ImageRequest imgRequest = new ImageRequest(Url.GETPIC + url, new Response.Listener<Bitmap>() { @Override public void onResponse(Bitmap arg0) { // Bitmap bit = UploadImg.toRoundCorner(arg0, 2); // imageView.setImageBitmap(UploadImg.toRoundCorner(arg0, // 2)); String picName = url; imageView.setImageBitmap(LoadImage.toRoundBitmap(arg0)); OutputStream output = null; try { File mePhotoFold = new File(Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image"); if (!mePhotoFold.exists()) { mePhotoFold.mkdirs(); } output = new FileOutputStream(Environment .getExternalStorageDirectory() + "/" + "jzdr/" + "image/" + picName); arg0.compress(Bitmap.CompressFormat.JPEG, 100, output); output.flush(); output.close(); } catch (Exception e) { e.printStackTrace(); } } }, 300, 200, Config.ARGB_8888, new ErrorListener() { @Override public void onErrorResponse(VolleyError arg0) { } }); queue.add(imgRequest); imgRequest.setRetryPolicy(new DefaultRetryPolicy(ConstantForSaveList.DEFAULTRETRYTIME*1000, 1, 1.0f)); } public void addXinToView(int xin) { if (xin > 0) { // 如 60 是整10的 int heartCount = xin / 10; int heartHeart = xin % 10; int j = 0; if (heartCount > 9) { ImageView imageView = (ImageView) findViewById(heartImg[0]); imageView.setVisibility(View.VISIBLE); imageView.setImageResource(R.drawable.icon_heart_ten); } else { for (int i = 0; i < heartCount; i++) { ImageView imageView = (ImageView) findViewById(heartImg[i]); imageView.setVisibility(View.VISIBLE); imageView.setImageResource(R.drawable.icon_heart); j = i; } } } else { for (int a = 0; a < 10; a++) { ImageView imageView = (ImageView) findViewById(heartImg[a]); imageView.setVisibility(View.GONE); } } } }