Commit 22283030460cdc166dbf306e0f055f1d981e6d06

Authored by 谷俊
1 parent b979c751

添加ugc消息体的使用demo

app/src/main/java/com/cnlive/im/adapter/ChatRoomAdpter.java
@@ -16,6 +16,7 @@ import com.cnlive.im.adapter.base.BaseRecyclerAdapter; @@ -16,6 +16,7 @@ import com.cnlive.im.adapter.base.BaseRecyclerAdapter;
16 import com.cnlive.im.adapter.base.ItemClickListener; 16 import com.cnlive.im.adapter.base.ItemClickListener;
17 import com.cnlive.im.mode.ImagMessage; 17 import com.cnlive.im.mode.ImagMessage;
18 import com.cnlive.im.mode.StringMessage; 18 import com.cnlive.im.mode.StringMessage;
  19 +import com.cnlive.im.mode.UgcVideoMessage;
19 import com.cnlive.im.mode.VideoMessage; 20 import com.cnlive.im.mode.VideoMessage;
20 import com.cnlive.im.mode.VoiceMessage; 21 import com.cnlive.im.mode.VoiceMessage;
21 import com.cnlive.im.util.FileUtil; 22 import com.cnlive.im.util.FileUtil;
@@ -39,6 +40,8 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { @@ -39,6 +40,8 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter {
39 private int voiceOppsite = 6; 40 private int voiceOppsite = 6;
40 private int videoUser = 7; 41 private int videoUser = 7;
41 private int videoOppsite = 8; 42 private int videoOppsite = 8;
  43 + private int ugcVideoUser = 9;
  44 + private int ugcVideoOppsite = 10;
42 private Context mContext; 45 private Context mContext;
43 private ItemClickListener mItemClickListener; 46 private ItemClickListener mItemClickListener;
44 47
@@ -79,6 +82,12 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { @@ -79,6 +82,12 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter {
79 return videoUser; 82 return videoUser;
80 else return videoOppsite; 83 else return videoOppsite;
81 84
  85 + } else if (o instanceof UgcVideoMessage) {
  86 + UgcVideoMessage o1 = (UgcVideoMessage) o;
  87 + if (o1.isUserSend())
  88 + return ugcVideoUser;
  89 + else return ugcVideoOppsite;
  90 +
82 } 91 }
83 return 0; 92 return 0;
84 } 93 }
@@ -101,6 +110,10 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { @@ -101,6 +110,10 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter {
101 return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_user, null)); 110 return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_user, null));
102 } else if (viewType == videoOppsite) { 111 } else if (viewType == videoOppsite) {
103 return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_oppsite, null)); 112 return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_oppsite, null));
  113 + } else if (viewType == ugcVideoUser) {
  114 + return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_user, null));
  115 + } else if (viewType == ugcVideoOppsite) {
  116 + return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_oppsite, null));
104 } 117 }
105 return null; 118 return null;
106 } 119 }
@@ -127,6 +140,11 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { @@ -127,6 +140,11 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter {
127 final Object o = mItems.get(position); 140 final Object o = mItems.get(position);
128 final VideoMessage o1 = (VideoMessage) o; 141 final VideoMessage o1 = (VideoMessage) o;
129 holder1.showMessage(o1); 142 holder1.showMessage(o1);
  143 + } else if (holder instanceof UgcVideoMessageHolder) {
  144 + final UgcVideoMessageHolder holder1 = (UgcVideoMessageHolder) holder;
  145 + final Object o = mItems.get(position);
  146 + final UgcVideoMessage o1 = (UgcVideoMessage) o;
  147 + holder1.showMessage(o1);
130 } 148 }
131 149
132 } 150 }
@@ -382,4 +400,78 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { @@ -382,4 +400,78 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter {
382 } 400 }
383 } 401 }
384 402
  403 + public class UgcVideoMessageHolder extends RecyclerView.ViewHolder {
  404 +
  405 + private TextView video_user_name;
  406 + private ImageView video_cover;
  407 + private View videoLayout;
  408 + private TextView status;
  409 +
  410 + public UgcVideoMessageHolder(View itemView) {
  411 + super(itemView);
  412 + video_user_name = (TextView) itemView.findViewById(R.id.user_name);
  413 + video_cover = (ImageView) itemView.findViewById(R.id.img_content);
  414 + videoLayout = itemView.findViewById(R.id.videoLayout);
  415 + status = (TextView) itemView.findViewById(R.id.status);
  416 + }
  417 +
  418 + public void showMessage(final UgcVideoMessage videoMessage) {
  419 + video_user_name.setText(videoMessage.getCnUgcMessage().getUserInfo().getUserName());
  420 + switch (videoMessage.getCnUgcMessage().getStatus()) {
  421 + case IChat.CN_MSG_STATUS_SENDING:
  422 + if (status != null)
  423 + status.setText("发送中");
  424 + Glide.with(mContext).load(videoMessage.getCnUgcMessage().getCoverPath()).into(video_cover);
  425 + break;
  426 + case IChat.CN_MSG_STATUS_SEND_FAIL:
  427 + if (status != null)
  428 + status.setText("发送失败");
  429 + Glide.with(mContext).load(videoMessage.getCnUgcMessage().getCoverPath()).into(video_cover);
  430 + break;
  431 + case IChat.CN_MSG_STATUS_SEND_SUCCESS:
  432 + if (status != null)
  433 + status.setText("发送成功");
  434 + sendSuccess(videoMessage);
  435 + break;
  436 + }
  437 + }
  438 +
  439 + private void sendSuccess(final UgcVideoMessage videoMessage) {
  440 + videoLayout.setOnClickListener(new View.OnClickListener() {
  441 + @Override
  442 + public void onClick(View v) {
  443 + if (mItemClickListener != null)
  444 + mItemClickListener.onUgcVideoClick(videoMessage);
  445 + }
  446 + });
  447 + if (videoMessage.getCnUgcMessage().isSelf()) {
  448 + Glide.with(mContext).load(videoMessage.getCnUgcMessage().getCoverPath()).into(video_cover);
  449 + } else {
  450 + String coverUuid = videoMessage.getCnUgcMessage().getFileId() + "_image";
  451 + final String imagePath = FileUtil.getCacheFilePath(coverUuid);
  452 + if (FileUtil.isCacheFileExist(coverUuid)) {
  453 + if (video_cover != null && mContext != null)
  454 + Glide.with(mContext).load(imagePath).into(video_cover);
  455 + } else {
  456 + if (!videoMessage.isDownloading()) {
  457 + videoMessage.setDownloading(true);
  458 + videoMessage.getCnUgcMessage().getCover().getImage(imagePath, new IChat.OnDownloadListener() {
  459 + @Override
  460 + public void onSuccess() {
  461 + videoMessage.setDownloading(false);
  462 + if (video_cover != null && mContext != null)
  463 + Glide.with(mContext).load(imagePath).into(video_cover);
  464 + }
  465 +
  466 + @Override
  467 + public void onError(int i, String s) {
  468 + videoMessage.setDownloading(false);
  469 + }
  470 + });
  471 + }
  472 + }
  473 + }
  474 + }
  475 + }
  476 +
385 } 477 }
app/src/main/java/com/cnlive/im/adapter/base/ItemClickListener.java
@@ -3,6 +3,7 @@ package com.cnlive.im.adapter.base; @@ -3,6 +3,7 @@ package com.cnlive.im.adapter.base;
3 import android.graphics.drawable.AnimationDrawable; 3 import android.graphics.drawable.AnimationDrawable;
4 4
5 import com.cnlive.im.mode.ImagMessage; 5 import com.cnlive.im.mode.ImagMessage;
  6 +import com.cnlive.im.mode.UgcVideoMessage;
6 import com.cnlive.im.mode.VideoMessage; 7 import com.cnlive.im.mode.VideoMessage;
7 import com.cnlive.im.mode.VoiceMessage; 8 import com.cnlive.im.mode.VoiceMessage;
8 9
@@ -16,5 +17,7 @@ public interface ItemClickListener { @@ -16,5 +17,7 @@ public interface ItemClickListener {
16 17
17 void onVideoClick(VideoMessage videoMessage); 18 void onVideoClick(VideoMessage videoMessage);
18 19
  20 + void onUgcVideoClick(UgcVideoMessage ugcVideoMessage);
  21 +
19 void onImageClick(ImagMessage imagMessage); 22 void onImageClick(ImagMessage imagMessage);
20 } 23 }
app/src/main/java/com/cnlive/im/ui/ChatRoomActivity.java
@@ -40,6 +40,7 @@ import com.cnlive.im.adapter.ChatRoomAdpter; @@ -40,6 +40,7 @@ import com.cnlive.im.adapter.ChatRoomAdpter;
40 import com.cnlive.im.adapter.base.ItemClickListener; 40 import com.cnlive.im.adapter.base.ItemClickListener;
41 import com.cnlive.im.mode.ImagMessage; 41 import com.cnlive.im.mode.ImagMessage;
42 import com.cnlive.im.mode.StringMessage; 42 import com.cnlive.im.mode.StringMessage;
  43 +import com.cnlive.im.mode.UgcVideoMessage;
43 import com.cnlive.im.mode.VideoMessage; 44 import com.cnlive.im.mode.VideoMessage;
44 import com.cnlive.im.mode.VoiceMessage; 45 import com.cnlive.im.mode.VoiceMessage;
45 import com.cnlive.im.util.AudioRecordUtil; 46 import com.cnlive.im.util.AudioRecordUtil;
@@ -53,6 +54,7 @@ import com.cnlive.libs.util.chat.base.IChat; @@ -53,6 +54,7 @@ import com.cnlive.libs.util.chat.base.IChat;
53 import com.cnlive.libs.util.chat.model.CNBaseMessage; 54 import com.cnlive.libs.util.chat.model.CNBaseMessage;
54 import com.cnlive.libs.util.chat.model.CNImgMessage; 55 import com.cnlive.libs.util.chat.model.CNImgMessage;
55 import com.cnlive.libs.util.chat.model.CNMessage; 56 import com.cnlive.libs.util.chat.model.CNMessage;
  57 +import com.cnlive.libs.util.chat.model.CNUgcMessage;
56 import com.cnlive.libs.util.chat.model.CNUserInfo; 58 import com.cnlive.libs.util.chat.model.CNUserInfo;
57 import com.cnlive.libs.util.chat.model.CNVideoMessage; 59 import com.cnlive.libs.util.chat.model.CNVideoMessage;
58 import com.cnlive.libs.util.chat.model.CNVoiceMessage; 60 import com.cnlive.libs.util.chat.model.CNVoiceMessage;
@@ -228,7 +230,8 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL @@ -228,7 +230,8 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL
228 */ 230 */
229 public void updateItem(CNBaseMessage o) { 231 public void updateItem(CNBaseMessage o) {
230 int updateIndex = groupChatOneListMy.indexOf(o.getMessageId()); 232 int updateIndex = groupChatOneListMy.indexOf(o.getMessageId());
231 - if (updateIndex < 0 || chatListAdapterOne.getItemCount() <= 0) return; 233 + if (updateIndex < 0 || chatListAdapterOne.getItemCount() <= 0 || updateIndex > chatListAdapterOne.getItemCount() - 1)
  234 + return;
232 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { 235 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) {
233 CNMessage o1 = (CNMessage) o; 236 CNMessage o1 = (CNMessage) o;
234 chatListAdapterOne.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex); 237 chatListAdapterOne.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex);
@@ -243,6 +246,10 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL @@ -243,6 +246,10 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL
243 CNVideoMessage ol = (CNVideoMessage) o; 246 CNVideoMessage ol = (CNVideoMessage) o;
244 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); 247 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf());
245 chatListAdapterOne.updateItem(videoMessage, updateIndex); 248 chatListAdapterOne.updateItem(videoMessage, updateIndex);
  249 + } else if (o.getMsgType() == IChat.CN_MSG_TYPE_UGC) {
  250 + CNUgcMessage ol = (CNUgcMessage) o;
  251 + UgcVideoMessage ugcVideoMessage = new UgcVideoMessage(MessageType.ugcVideoMessage, ol, ol.isSelf());
  252 + chatListAdapterOne.updateItem(ugcVideoMessage, updateIndex);
246 } 253 }
247 } 254 }
248 255
@@ -267,8 +274,13 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL @@ -267,8 +274,13 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL
267 CNVideoMessage ol = (CNVideoMessage) o; 274 CNVideoMessage ol = (CNVideoMessage) o;
268 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); 275 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf());
269 chatListAdapterOne.addItem(videoMessage); 276 chatListAdapterOne.addItem(videoMessage);
  277 + } else if (o.getMsgType() == IChat.CN_MSG_TYPE_UGC) {
  278 + CNUgcMessage ol = (CNUgcMessage) o;
  279 + UgcVideoMessage ugcVideoMessage = new UgcVideoMessage(MessageType.ugcVideoMessage, ol, ol.isSelf());
  280 + chatListAdapterOne.addItem(ugcVideoMessage);
270 } 281 }
271 - listViewOne.smoothScrollToPosition(chatListAdapterOne.getItemCount() - 1); 282 + if (chatListAdapterOne.getItemCount() > 0)
  283 + listViewOne.smoothScrollToPosition(chatListAdapterOne.getItemCount() - 1);
272 } 284 }
273 285
274 286
@@ -380,7 +392,7 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL @@ -380,7 +392,7 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL
380 openSystemRecorder(); 392 openSystemRecorder();
381 break; 393 break;
382 case R.id.ugcVideoBtn: 394 case R.id.ugcVideoBtn:
383 - 395 + openSystemRecorder();
384 break; 396 break;
385 } 397 }
386 } 398 }
@@ -562,6 +574,37 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL @@ -562,6 +574,37 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL
562 } 574 }
563 575
564 @Override 576 @Override
  577 + public void onUgcVideoClick(UgcVideoMessage ugcVideoMessage) {
  578 + if (ugcVideoMessage.getCnUgcMessage().isSelf()) {
  579 + Intent intent = new Intent(ChatRoomActivity.this, VideoActivity.class);
  580 + intent.putExtra("videoPath", ugcVideoMessage.getCnUgcMessage().getVideoPath());
  581 + startActivity(intent);
  582 + } else {
  583 + String videoUuid = ugcVideoMessage.getCnUgcMessage().getFileId() + "_video";
  584 + final String videoPath = FileUtil.getCacheFilePath(videoUuid);
  585 + if (FileUtil.isCacheFileExist(videoUuid)) {
  586 + Intent intent = new Intent(ChatRoomActivity.this, VideoActivity.class);
  587 + intent.putExtra("videoPath", videoPath);
  588 + startActivity(intent);
  589 + } else {
  590 + ugcVideoMessage.getCnUgcMessage().getVideo().getVideo(videoPath, new IChat.OnDownloadListener() {
  591 + @Override
  592 + public void onSuccess() {
  593 + Intent intent = new Intent(ChatRoomActivity.this, VideoActivity.class);
  594 + intent.putExtra("videoPath", videoPath);
  595 + startActivity(intent);
  596 + }
  597 +
  598 + @Override
  599 + public void onError(int i, String s) {
  600 +
  601 + }
  602 + });
  603 + }
  604 + }
  605 + }
  606 +
  607 + @Override
565 public void onImageClick(final ImagMessage imagMessage) { 608 public void onImageClick(final ImagMessage imagMessage) {
566 if (imagMessage.getCnImgMessage().isSelf()) { 609 if (imagMessage.getCnImgMessage().isSelf()) {
567 Intent intent = new Intent(ChatRoomActivity.this, ImageViewActivity.class); 610 Intent intent = new Intent(ChatRoomActivity.this, ImageViewActivity.class);
app/src/main/java/com/cnlive/im/ui/PrivateActivity.java
@@ -42,6 +42,7 @@ import com.cnlive.im.adapter.base.ItemClickListener; @@ -42,6 +42,7 @@ import com.cnlive.im.adapter.base.ItemClickListener;
42 import com.cnlive.im.mode.CNMessageModole; 42 import com.cnlive.im.mode.CNMessageModole;
43 import com.cnlive.im.mode.ImagMessage; 43 import com.cnlive.im.mode.ImagMessage;
44 import com.cnlive.im.mode.StringMessage; 44 import com.cnlive.im.mode.StringMessage;
  45 +import com.cnlive.im.mode.UgcVideoMessage;
45 import com.cnlive.im.mode.VideoMessage; 46 import com.cnlive.im.mode.VideoMessage;
46 import com.cnlive.im.mode.VoiceMessage; 47 import com.cnlive.im.mode.VoiceMessage;
47 import com.cnlive.im.util.AudioRecordUtil; 48 import com.cnlive.im.util.AudioRecordUtil;
@@ -55,6 +56,7 @@ import com.cnlive.libs.util.chat.base.IChat; @@ -55,6 +56,7 @@ import com.cnlive.libs.util.chat.base.IChat;
55 import com.cnlive.libs.util.chat.model.CNBaseMessage; 56 import com.cnlive.libs.util.chat.model.CNBaseMessage;
56 import com.cnlive.libs.util.chat.model.CNImgMessage; 57 import com.cnlive.libs.util.chat.model.CNImgMessage;
57 import com.cnlive.libs.util.chat.model.CNMessage; 58 import com.cnlive.libs.util.chat.model.CNMessage;
  59 +import com.cnlive.libs.util.chat.model.CNUgcMessage;
58 import com.cnlive.libs.util.chat.model.CNUserInfo; 60 import com.cnlive.libs.util.chat.model.CNUserInfo;
59 import com.cnlive.libs.util.chat.model.CNVideoMessage; 61 import com.cnlive.libs.util.chat.model.CNVideoMessage;
60 import com.cnlive.libs.util.chat.model.CNVoiceMessage; 62 import com.cnlive.libs.util.chat.model.CNVoiceMessage;
@@ -266,7 +268,7 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -266,7 +268,7 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
266 openSystemRecorder(); 268 openSystemRecorder();
267 break; 269 break;
268 case R.id.ugcVideoBtn: 270 case R.id.ugcVideoBtn:
269 - 271 + openSystemRecorder();
270 break; 272 break;
271 } 273 }
272 } 274 }
@@ -443,7 +445,8 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -443,7 +445,8 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
443 */ 445 */
444 public void updateItem(CNBaseMessage o) { 446 public void updateItem(CNBaseMessage o) {
445 int updateIndex = messageList.indexOf(o.getMessageId()); 447 int updateIndex = messageList.indexOf(o.getMessageId());
446 - if (updateIndex < 0 || chatListAdapter.getItemCount() <= 0) return; 448 + if (updateIndex < 0 || chatListAdapter.getItemCount() <= 0 || updateIndex > chatListAdapter.getItemCount() - 1)
  449 + return;
447 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { 450 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) {
448 CNMessage o1 = (CNMessage) o; 451 CNMessage o1 = (CNMessage) o;
449 chatListAdapter.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex); 452 chatListAdapter.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex);
@@ -458,6 +461,10 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -458,6 +461,10 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
458 CNVideoMessage ol = (CNVideoMessage) o; 461 CNVideoMessage ol = (CNVideoMessage) o;
459 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); 462 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf());
460 chatListAdapter.updateItem(videoMessage, updateIndex); 463 chatListAdapter.updateItem(videoMessage, updateIndex);
  464 + } else if (o.getMsgType() == IChat.CN_MSG_TYPE_UGC) {
  465 + CNUgcMessage ol = (CNUgcMessage) o;
  466 + UgcVideoMessage ugcVideoMessage = new UgcVideoMessage(MessageType.ugcVideoMessage, ol, ol.isSelf());
  467 + chatListAdapter.updateItem(ugcVideoMessage, updateIndex);
461 } 468 }
462 } 469 }
463 470
@@ -467,7 +474,6 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -467,7 +474,6 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
467 * @param o 474 * @param o
468 */ 475 */
469 private void showMessage(CNBaseMessage o, boolean isReceivedMsg) { 476 private void showMessage(CNBaseMessage o, boolean isReceivedMsg) {
470 - messageList.add(o.getMessageId());  
471 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { 477 if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) {
472 if (isReceivedMsg) { 478 if (isReceivedMsg) {
473 CNMessage o1 = (CNMessage) o; 479 CNMessage o1 = (CNMessage) o;
@@ -484,29 +490,56 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -484,29 +490,56 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
484 sendInfo = 4; 490 sendInfo = 4;
485 } else if ("4".equals(type)) { 491 } else if ("4".equals(type)) {
486 Log.v(TAG, o1.getContent().toString()); 492 Log.v(TAG, o1.getContent().toString());
  493 + messageList.add(o.getMessageId());
487 chatListAdapter.addItem(new StringMessage(MessageType.stringMessage, o1, false)); 494 chatListAdapter.addItem(new StringMessage(MessageType.stringMessage, o1, false));
488 - chatListView.smoothScrollToPosition(chatListAdapter.getItemCount() - 1);  
489 } 495 }
490 } catch (JSONException e) { 496 } catch (JSONException e) {
491 e.printStackTrace(); 497 e.printStackTrace();
492 } 498 }
493 } else { 499 } else {
494 CNMessage o1 = (CNMessage) o; 500 CNMessage o1 = (CNMessage) o;
495 - chatListAdapter.addItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf())); 501 + JSONObject jsonObject = null;
  502 + try {
  503 + jsonObject = new JSONObject(o1.getContent().toString());
  504 + String type = (String) jsonObject.get("type");
  505 + String message = (String) jsonObject.get("message");
  506 + Toast.makeText(PrivateActivity.this, "发送消息成功", Toast.LENGTH_SHORT).show();
  507 + if ("3".equals(type) && message.equals("你好我们可以进行私聊吗")) {
  508 + sendInfo = 2;
  509 + Toast.makeText(PrivateActivity.this, "申请已发送等待对方验证", Toast.LENGTH_SHORT).show();
  510 + } else if ("3".equals(type) && message.equals("拒绝")) {
  511 + sendInfo = 5;
  512 + } else if ("3".equals(type) && message.equals("同意")) {
  513 + sendInfo = 1;
  514 + } else if ("4".equals(type)) {
  515 + messageList.add(o.getMessageId());
  516 + chatListAdapter.addItem(new StringMessage(MessageType.stringMessage, o1, true));
  517 + }
  518 + } catch (JSONException e) {
  519 + }
496 } 520 }
497 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_IMAGE) { 521 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_IMAGE) {
  522 + messageList.add(o.getMessageId());
498 CNImgMessage o1 = (CNImgMessage) o; 523 CNImgMessage o1 = (CNImgMessage) o;
499 chatListAdapter.addItem(new ImagMessage(MessageType.imaMessage, o1, o1.isSelf())); 524 chatListAdapter.addItem(new ImagMessage(MessageType.imaMessage, o1, o1.isSelf()));
500 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VOICE) { 525 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VOICE) {
  526 + messageList.add(o.getMessageId());
501 CNVoiceMessage o1 = (CNVoiceMessage) o; 527 CNVoiceMessage o1 = (CNVoiceMessage) o;
502 VoiceMessage voiceMessage = new VoiceMessage(MessageType.voiceMessage, o1, o1.isSelf()); 528 VoiceMessage voiceMessage = new VoiceMessage(MessageType.voiceMessage, o1, o1.isSelf());
503 chatListAdapter.addItem(voiceMessage); 529 chatListAdapter.addItem(voiceMessage);
504 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VIDEO) { 530 } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VIDEO) {
  531 + messageList.add(o.getMessageId());
505 CNVideoMessage ol = (CNVideoMessage) o; 532 CNVideoMessage ol = (CNVideoMessage) o;
506 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); 533 VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf());
507 chatListAdapter.addItem(videoMessage); 534 chatListAdapter.addItem(videoMessage);
  535 + } else if (o.getMsgType() == IChat.CN_MSG_TYPE_UGC) {
  536 + messageList.add(o.getMessageId());
  537 + CNUgcMessage ol = (CNUgcMessage) o;
  538 + UgcVideoMessage ugcVideoMessage = new UgcVideoMessage(MessageType.ugcVideoMessage, ol, ol.isSelf());
  539 + chatListAdapter.addItem(ugcVideoMessage);
508 } 540 }
509 - chatListView.smoothScrollToPosition(chatListAdapter.getItemCount() - 1); 541 + if (chatListAdapter.getItemCount() > 0)
  542 + chatListView.smoothScrollToPosition(chatListAdapter.getItemCount() - 1);
510 } 543 }
511 544
512 /** 545 /**
@@ -759,6 +792,37 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi @@ -759,6 +792,37 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi
759 } 792 }
760 793
761 @Override 794 @Override
  795 + public void onUgcVideoClick(UgcVideoMessage ugcVideoMessage) {
  796 + if (ugcVideoMessage.getCnUgcMessage().isSelf()) {
  797 + Intent intent = new Intent(PrivateActivity.this, VideoActivity.class);
  798 + intent.putExtra("videoPath", ugcVideoMessage.getCnUgcMessage().getVideoPath());
  799 + startActivity(intent);
  800 + } else {
  801 + String videoUuid = ugcVideoMessage.getCnUgcMessage().getFileId() + "_video";
  802 + final String videoPath = FileUtil.getCacheFilePath(videoUuid);
  803 + if (FileUtil.isCacheFileExist(videoUuid)) {
  804 + Intent intent = new Intent(PrivateActivity.this, VideoActivity.class);
  805 + intent.putExtra("videoPath", videoPath);
  806 + startActivity(intent);
  807 + } else {
  808 + ugcVideoMessage.getCnUgcMessage().getVideo().getVideo(videoPath, new IChat.OnDownloadListener() {
  809 + @Override
  810 + public void onSuccess() {
  811 + Intent intent = new Intent(PrivateActivity.this, VideoActivity.class);
  812 + intent.putExtra("videoPath", videoPath);
  813 + startActivity(intent);
  814 + }
  815 +
  816 + @Override
  817 + public void onError(int i, String s) {
  818 +
  819 + }
  820 + });
  821 + }
  822 + }
  823 + }
  824 +
  825 + @Override
762 public void onImageClick(final ImagMessage imagMessage) { 826 public void onImageClick(final ImagMessage imagMessage) {
763 if (imagMessage.getCnImgMessage().isSelf()) { 827 if (imagMessage.getCnImgMessage().isSelf()) {
764 Intent intent = new Intent(PrivateActivity.this, ImageViewActivity.class); 828 Intent intent = new Intent(PrivateActivity.this, ImageViewActivity.class);
app/src/main/java/com/cnlive/im/util/MessageType.java
@@ -10,4 +10,5 @@ public class MessageType { @@ -10,4 +10,5 @@ public class MessageType {
10 public static final String imaMessage = "2"; 10 public static final String imaMessage = "2";
11 public static final String voiceMessage = "3"; 11 public static final String voiceMessage = "3";
12 public static final String videoMessage = "4"; 12 public static final String videoMessage = "4";
  13 + public static final String ugcVideoMessage = "5";
13 } 14 }