|
|
@@ -3,8 +3,13 @@ package com.xzjmyk.pm.activity.ui.message;
|
|
|
import android.app.ProgressDialog;
|
|
|
import android.content.ComponentName;
|
|
|
import android.content.ServiceConnection;
|
|
|
+import android.graphics.Bitmap;
|
|
|
+import android.media.ThumbnailUtils;
|
|
|
import android.os.Bundle;
|
|
|
+import android.os.Handler;
|
|
|
import android.os.IBinder;
|
|
|
+import android.os.Message;
|
|
|
+import android.util.Log;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
|
@@ -18,13 +23,26 @@ import android.widget.ListView;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.android.volley.Request;
|
|
|
import com.android.volley.Response;
|
|
|
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.xzjmyk.pm.activity.bean.MucRoomSimple;
|
|
|
import com.xzjmyk.pm.activity.db.dao.FriendDao;
|
|
|
import com.xzjmyk.pm.activity.helper.AvatarHelper;
|
|
|
import com.xzjmyk.pm.activity.ui.base.BaseActivity;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.net.HttpUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.BitmapUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.FileUtils;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.NumberUtils;
|
|
|
+import com.xzjmyk.pm.activity.ui.erp.util.PropertiesUtil;
|
|
|
+import com.xzjmyk.pm.activity.ui.groupchat.SelectContactsActivity;
|
|
|
+import com.xzjmyk.pm.activity.util.DateFormatUtil;
|
|
|
import com.xzjmyk.pm.activity.util.DisplayUtil;
|
|
|
+import com.xzjmyk.pm.activity.util.ImageUtil;
|
|
|
import com.xzjmyk.pm.activity.util.ProgressDialogUtil;
|
|
|
import com.xzjmyk.pm.activity.util.TimeUtils;
|
|
|
import com.xzjmyk.pm.activity.view.HorizontalListView;
|
|
|
@@ -38,8 +56,14 @@ import com.xzjmyk.pm.activity.volley.ObjectResult;
|
|
|
import com.xzjmyk.pm.activity.volley.Result;
|
|
|
import com.xzjmyk.pm.activity.volley.StringJsonObjectRequest;
|
|
|
|
|
|
+import org.apache.http.Header;
|
|
|
+
|
|
|
+import java.io.File;
|
|
|
+import java.io.FileNotFoundException;
|
|
|
+import java.io.IOException;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.LinkedList;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
@@ -66,6 +90,7 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
|
|
|
private boolean mXmppBind;
|
|
|
private CoreService mCoreService;
|
|
|
+ private String photoId;
|
|
|
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
@@ -302,6 +327,7 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
|
|
|
/**
|
|
|
* 邀请好友
|
|
|
+ * 原成员小于等于9需要重新上传图片的逻辑
|
|
|
*/
|
|
|
private void inviteFriend() {
|
|
|
if (mSelectPositions.size() <= 1) {
|
|
|
@@ -312,7 +338,7 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
params.put("roomId", mRoomId);
|
|
|
|
|
|
- List<String> inviteUsers = new ArrayList<String>();
|
|
|
+ final List<String> inviteUsers = new ArrayList<String>();
|
|
|
// 邀请好友
|
|
|
for (int i = 0; i < mSelectPositions.size(); i++) {
|
|
|
if (mSelectPositions.get(i) == -1) {
|
|
|
@@ -321,6 +347,26 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
String userId = mFriendList.get(mSelectPositions.get(i)).getUserId();
|
|
|
inviteUsers.add(userId);
|
|
|
}
|
|
|
+
|
|
|
+ //开启线程处理合成群头像操作
|
|
|
+ final Thread uploadImageTask=
|
|
|
+ new Thread(new Runnable() {
|
|
|
+ @Override
|
|
|
+ public void run() {
|
|
|
+// uploadIsEnd=false;//开始上传任务
|
|
|
+ photoId= NumberUtils.generateNumber2();//八位不重复随机数
|
|
|
+ /*inviteUsers.add(0, MyApplication.getInstance().mLoginUser.getUserId());*/
|
|
|
+ inviteUsers.addAll(0,mExistIds);
|
|
|
+ image= createChatImage(inviteUsers);
|
|
|
+ Message msg=mhandler.obtainMessage();
|
|
|
+ msg.getData().putString("roomjId",mRoomJid);
|
|
|
+ msg.what=uploadFile;
|
|
|
+ mhandler.sendMessage(msg);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ uploadImageTask.start();
|
|
|
+
|
|
|
params.put("text", JSON.toJSONString(inviteUsers));
|
|
|
|
|
|
ProgressDialogUtil.show(mProgressDialog);
|
|
|
@@ -335,6 +381,9 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
public void onResponse(ObjectResult<Void> result) {
|
|
|
boolean parserResult = Result.defaultParser(mContext, result, true);
|
|
|
if (parserResult) {
|
|
|
+ while (uploadImageTask.isAlive()){ //上传线程正在运行
|
|
|
+ Log.i("Arison","SelectContactsActivity:onResponse:440:上传是否结束:"+uploadImageTask.isAlive());
|
|
|
+ }
|
|
|
inviteFriendSuccess();
|
|
|
}
|
|
|
ProgressDialogUtil.dismiss(mProgressDialog);
|
|
|
@@ -370,4 +419,170 @@ public class AddContactsActivity extends BaseActivity {
|
|
|
finish();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @功能:合成九宫图头像--耗时操作
|
|
|
+ * @author:Arisono
|
|
|
+ * @param:
|
|
|
+ * @return:
|
|
|
+ */
|
|
|
+ private File createChatImage(List<String> inviteUsers){
|
|
|
+ Log.i("Arison", "SelectContactsActivity:createChatImage:473:开始合成图片:" + DateFormatUtil.getFormatDate(System.currentTimeMillis()));
|
|
|
+ File file=null;
|
|
|
+ if (!ListUtils.isEmpty(inviteUsers)){
|
|
|
+ int size=inviteUsers.size()>9?9:inviteUsers.size();
|
|
|
+ List<SelectContactsActivity.MyBitmapEntity> mEntityList = getBitmapEntitys(size);
|
|
|
+ Bitmap mBitmaps[]=new Bitmap[size];
|
|
|
+ for (int i=0;i<size;i++){
|
|
|
+ String url=AvatarHelper.getAvatarUrl(inviteUsers.get(i), false);
|
|
|
+ Bitmap nextBitmap=null;
|
|
|
+ String filepath= HttpUtil.download(url, FileUtils.getSDRoot() + "/uu/chat/head" + i + ".png");
|
|
|
+ Log.i("Arison","SelectContactsActivity:createChatImage:493:filepath:"+filepath);
|
|
|
+ nextBitmap= ImageUtil.compressBitmapWithFilePath(filepath, 300, 300);
|
|
|
+ if(nextBitmap==null){
|
|
|
+ nextBitmap=ImageUtil.compressBitmapWithResources(this,R.drawable.avatar_normal,300,300);
|
|
|
+ }
|
|
|
+ Bitmap tempBitmap= ThumbnailUtils.extractThumbnail(nextBitmap, (int) mEntityList
|
|
|
+ .get(i).width, (int) mEntityList.get(i).width);
|
|
|
+ Log.i("Arison","createChatImage:499:tempBitmap:"+url);
|
|
|
+ Log.i("Arison","createChatImage:499:tempBitmap:"+nextBitmap);
|
|
|
+ mBitmaps[i]=tempBitmap;
|
|
|
+ }
|
|
|
+ Bitmap combineBitmap = BitmapUtil.getCombineBitmaps(mEntityList, mBitmaps);
|
|
|
+ try {
|
|
|
+ file= BitmapUtil.saveFile(combineBitmap,"chatImage.png");
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ } catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Log.i("Arison", "SelectContactsActivity:createChatImage:473:合成图片结束:" + DateFormatUtil.getFormatDate(System.currentTimeMillis()) + ";file=" + file);
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void uploadAvatar(File file, final String roomjId) {
|
|
|
+ if (!file.exists()) {// 文件不存在
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ RequestParams params = new RequestParams();
|
|
|
+// final String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
|
|
|
+// long time=System.currentTimeMillis();
|
|
|
+ params.put("userId", photoId);//群主id+当前系统时间
|
|
|
+ try {
|
|
|
+ params.put("file1", file);
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ AsyncHttpClient client = new AsyncHttpClient();
|
|
|
+ client.post(MyApplication.getInstance().getConfig().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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (success) {
|
|
|
+ Log.i("Arison", "SelectContactsActivity:onSuccess:567:" + "上次头像成功!");
|
|
|
+ ToastUtil.showToast(AddContactsActivity.this, R.string.upload_avatar_success);
|
|
|
+ //更新服务器
|
|
|
+ updateIMChatImageId(roomjId, photoId);
|
|
|
+ } else {
|
|
|
+ Log.i("Arison", "SelectContactsActivity:onSuccess:567:" + "上次头失败!");
|
|
|
+ ToastUtil.showToast(AddContactsActivity.this, R.string.upload_avatar_failed);
|
|
|
+ }
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onFailure(int arg0, Header[] arg1, byte[] arg2, Throwable arg3) {
|
|
|
+ ToastUtil.showToast(AddContactsActivity.this, R.string.upload_avatar_failed);
|
|
|
+ Log.i("Arison", "SelectContactsActivity:onSuccess:567:" + "上次头失败!");
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @功能:上传文件后,需要上传更新图像id
|
|
|
+ * @author:Arisono
|
|
|
+ * @param:
|
|
|
+ * @return:
|
|
|
+ */
|
|
|
+ public void updateIMChatImageId(String roomjId,String photoId){
|
|
|
+// this.uploadIsEnd=true;
|
|
|
+ String url = MyApplication.getInstance().getConfig().apiUrl+"room/setRelationGroupPhoto";
|
|
|
+ final String requestTag = "loginManagerSystem";
|
|
|
+ Map<String, String> params = new HashMap<String, String>();
|
|
|
+ params.put("access_token", MyApplication.getInstance().mAccessToken);
|
|
|
+ params.put("roomId", roomjId);
|
|
|
+ params.put("photoid",photoId);
|
|
|
+// final ProgressDialog dialog = ProgressDialogUtil.init(mContext, null, getString(R.string.please_wait), true);
|
|
|
+// ProgressDialogUtil.show(dialog);
|
|
|
+ StringJsonObjectRequest<String> mRequest = new StringJsonObjectRequest<String>(
|
|
|
+ Request.Method.GET, url,
|
|
|
+ new Response.ErrorListener() {
|
|
|
+ @Override
|
|
|
+ public void onErrorResponse(VolleyError volleyError) {
|
|
|
+// ProgressDialogUtil.dismiss(dialog);
|
|
|
+// ToastUtil.showErrorNet(mContext);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ new StringJsonObjectRequest.Listener<String>() {
|
|
|
+ @Override
|
|
|
+ public void onResponse(ObjectResult<String> result) {
|
|
|
+ Log.i("Arison","更新头像id result:"+ result.getResultData());
|
|
|
+ }
|
|
|
+ }, String.class, params, true);
|
|
|
+ mRequest.setTag(requestTag);
|
|
|
+ addDefaultRequest(mRequest);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private List<SelectContactsActivity.MyBitmapEntity> getBitmapEntitys(int count) {
|
|
|
+ List<SelectContactsActivity.MyBitmapEntity> mList = new LinkedList<SelectContactsActivity.MyBitmapEntity>();
|
|
|
+ String value = PropertiesUtil.readData(this, String.valueOf(count),
|
|
|
+ R.raw.data);
|
|
|
+ String[] arr1 = value.split(";");
|
|
|
+ int length = arr1.length;
|
|
|
+ for (int i = 0; i < length; i++) {
|
|
|
+ String content = arr1[i];
|
|
|
+ String[] arr2 = content.split(",");
|
|
|
+ SelectContactsActivity.MyBitmapEntity entity = null;
|
|
|
+ for (int j = 0; j < arr2.length; j++) {
|
|
|
+ entity = new SelectContactsActivity.MyBitmapEntity();
|
|
|
+ entity.x = Float.valueOf(arr2[0]);
|
|
|
+ entity.y = Float.valueOf(arr2[1]);
|
|
|
+ entity.width = Float.valueOf(arr2[2]);
|
|
|
+ entity.height = Float.valueOf(arr2[3]);
|
|
|
+ }
|
|
|
+ mList.add(entity);
|
|
|
+ }
|
|
|
+ return mList;
|
|
|
+ }
|
|
|
+
|
|
|
+ private final int uploadFile=1;
|
|
|
+ private File image;
|
|
|
+ private Handler mhandler=new Handler(){
|
|
|
+ @Override
|
|
|
+ public void handleMessage(Message msg) {
|
|
|
+ switch (msg.what){
|
|
|
+ case uploadFile:
|
|
|
+ String roomjId=msg.getData().getString("roomjId");
|
|
|
+ Log.i("Arison","SelectContactsActivity:handleMessage:466:handler uploadFile="+uploadFile);
|
|
|
+ uploadAvatar(image,roomjId);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ };
|
|
|
}
|