Commit 22283030460cdc166dbf306e0f055f1d981e6d06
1 parent
b979c751
添加ugc消息体的使用demo
Showing
5 changed files
with
212 additions
and
9 deletions
app/src/main/java/com/cnlive/im/adapter/ChatRoomAdpter.java
| ... | ... | @@ -16,6 +16,7 @@ import com.cnlive.im.adapter.base.BaseRecyclerAdapter; |
| 16 | 16 | import com.cnlive.im.adapter.base.ItemClickListener; |
| 17 | 17 | import com.cnlive.im.mode.ImagMessage; |
| 18 | 18 | import com.cnlive.im.mode.StringMessage; |
| 19 | +import com.cnlive.im.mode.UgcVideoMessage; | |
| 19 | 20 | import com.cnlive.im.mode.VideoMessage; |
| 20 | 21 | import com.cnlive.im.mode.VoiceMessage; |
| 21 | 22 | import com.cnlive.im.util.FileUtil; |
| ... | ... | @@ -39,6 +40,8 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { |
| 39 | 40 | private int voiceOppsite = 6; |
| 40 | 41 | private int videoUser = 7; |
| 41 | 42 | private int videoOppsite = 8; |
| 43 | + private int ugcVideoUser = 9; | |
| 44 | + private int ugcVideoOppsite = 10; | |
| 42 | 45 | private Context mContext; |
| 43 | 46 | private ItemClickListener mItemClickListener; |
| 44 | 47 | |
| ... | ... | @@ -79,6 +82,12 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { |
| 79 | 82 | return videoUser; |
| 80 | 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 | 92 | return 0; |
| 84 | 93 | } |
| ... | ... | @@ -101,6 +110,10 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { |
| 101 | 110 | return new VideoMessageHolder(LayoutInflater.from(mContext).inflate(R.layout.video_layout_item_user, null)); |
| 102 | 111 | } else if (viewType == videoOppsite) { |
| 103 | 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 | 118 | return null; |
| 106 | 119 | } |
| ... | ... | @@ -127,6 +140,11 @@ public class ChatRoomAdpter extends BaseRecyclerAdapter { |
| 127 | 140 | final Object o = mItems.get(position); |
| 128 | 141 | final VideoMessage o1 = (VideoMessage) o; |
| 129 | 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 | 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 | 3 | import android.graphics.drawable.AnimationDrawable; |
| 4 | 4 | |
| 5 | 5 | import com.cnlive.im.mode.ImagMessage; |
| 6 | +import com.cnlive.im.mode.UgcVideoMessage; | |
| 6 | 7 | import com.cnlive.im.mode.VideoMessage; |
| 7 | 8 | import com.cnlive.im.mode.VoiceMessage; |
| 8 | 9 | |
| ... | ... | @@ -16,5 +17,7 @@ public interface ItemClickListener { |
| 16 | 17 | |
| 17 | 18 | void onVideoClick(VideoMessage videoMessage); |
| 18 | 19 | |
| 20 | + void onUgcVideoClick(UgcVideoMessage ugcVideoMessage); | |
| 21 | + | |
| 19 | 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 | 40 | import com.cnlive.im.adapter.base.ItemClickListener; |
| 41 | 41 | import com.cnlive.im.mode.ImagMessage; |
| 42 | 42 | import com.cnlive.im.mode.StringMessage; |
| 43 | +import com.cnlive.im.mode.UgcVideoMessage; | |
| 43 | 44 | import com.cnlive.im.mode.VideoMessage; |
| 44 | 45 | import com.cnlive.im.mode.VoiceMessage; |
| 45 | 46 | import com.cnlive.im.util.AudioRecordUtil; |
| ... | ... | @@ -53,6 +54,7 @@ import com.cnlive.libs.util.chat.base.IChat; |
| 53 | 54 | import com.cnlive.libs.util.chat.model.CNBaseMessage; |
| 54 | 55 | import com.cnlive.libs.util.chat.model.CNImgMessage; |
| 55 | 56 | import com.cnlive.libs.util.chat.model.CNMessage; |
| 57 | +import com.cnlive.libs.util.chat.model.CNUgcMessage; | |
| 56 | 58 | import com.cnlive.libs.util.chat.model.CNUserInfo; |
| 57 | 59 | import com.cnlive.libs.util.chat.model.CNVideoMessage; |
| 58 | 60 | import com.cnlive.libs.util.chat.model.CNVoiceMessage; |
| ... | ... | @@ -228,7 +230,8 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL |
| 228 | 230 | */ |
| 229 | 231 | public void updateItem(CNBaseMessage o) { |
| 230 | 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 | 235 | if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { |
| 233 | 236 | CNMessage o1 = (CNMessage) o; |
| 234 | 237 | chatListAdapterOne.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex); |
| ... | ... | @@ -243,6 +246,10 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL |
| 243 | 246 | CNVideoMessage ol = (CNVideoMessage) o; |
| 244 | 247 | VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); |
| 245 | 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 | 274 | CNVideoMessage ol = (CNVideoMessage) o; |
| 268 | 275 | VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); |
| 269 | 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 | 392 | openSystemRecorder(); |
| 381 | 393 | break; |
| 382 | 394 | case R.id.ugcVideoBtn: |
| 383 | - | |
| 395 | + openSystemRecorder(); | |
| 384 | 396 | break; |
| 385 | 397 | } |
| 386 | 398 | } |
| ... | ... | @@ -562,6 +574,37 @@ public class ChatRoomActivity extends AppCompatActivity implements View.OnClickL |
| 562 | 574 | } |
| 563 | 575 | |
| 564 | 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 | 608 | public void onImageClick(final ImagMessage imagMessage) { |
| 566 | 609 | if (imagMessage.getCnImgMessage().isSelf()) { |
| 567 | 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 | 42 | import com.cnlive.im.mode.CNMessageModole; |
| 43 | 43 | import com.cnlive.im.mode.ImagMessage; |
| 44 | 44 | import com.cnlive.im.mode.StringMessage; |
| 45 | +import com.cnlive.im.mode.UgcVideoMessage; | |
| 45 | 46 | import com.cnlive.im.mode.VideoMessage; |
| 46 | 47 | import com.cnlive.im.mode.VoiceMessage; |
| 47 | 48 | import com.cnlive.im.util.AudioRecordUtil; |
| ... | ... | @@ -55,6 +56,7 @@ import com.cnlive.libs.util.chat.base.IChat; |
| 55 | 56 | import com.cnlive.libs.util.chat.model.CNBaseMessage; |
| 56 | 57 | import com.cnlive.libs.util.chat.model.CNImgMessage; |
| 57 | 58 | import com.cnlive.libs.util.chat.model.CNMessage; |
| 59 | +import com.cnlive.libs.util.chat.model.CNUgcMessage; | |
| 58 | 60 | import com.cnlive.libs.util.chat.model.CNUserInfo; |
| 59 | 61 | import com.cnlive.libs.util.chat.model.CNVideoMessage; |
| 60 | 62 | import com.cnlive.libs.util.chat.model.CNVoiceMessage; |
| ... | ... | @@ -266,7 +268,7 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi |
| 266 | 268 | openSystemRecorder(); |
| 267 | 269 | break; |
| 268 | 270 | case R.id.ugcVideoBtn: |
| 269 | - | |
| 271 | + openSystemRecorder(); | |
| 270 | 272 | break; |
| 271 | 273 | } |
| 272 | 274 | } |
| ... | ... | @@ -443,7 +445,8 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi |
| 443 | 445 | */ |
| 444 | 446 | public void updateItem(CNBaseMessage o) { |
| 445 | 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 | 450 | if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { |
| 448 | 451 | CNMessage o1 = (CNMessage) o; |
| 449 | 452 | chatListAdapter.updateItem(new StringMessage(MessageType.stringMessage, o1, o1.isSelf()), updateIndex); |
| ... | ... | @@ -458,6 +461,10 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi |
| 458 | 461 | CNVideoMessage ol = (CNVideoMessage) o; |
| 459 | 462 | VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); |
| 460 | 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 | 474 | * @param o |
| 468 | 475 | */ |
| 469 | 476 | private void showMessage(CNBaseMessage o, boolean isReceivedMsg) { |
| 470 | - messageList.add(o.getMessageId()); | |
| 471 | 477 | if (o.getMsgType() == IChat.CN_MSG_TYPE_TEXT) { |
| 472 | 478 | if (isReceivedMsg) { |
| 473 | 479 | CNMessage o1 = (CNMessage) o; |
| ... | ... | @@ -484,29 +490,56 @@ public class PrivateActivity extends AppCompatActivity implements View.OnClickLi |
| 484 | 490 | sendInfo = 4; |
| 485 | 491 | } else if ("4".equals(type)) { |
| 486 | 492 | Log.v(TAG, o1.getContent().toString()); |
| 493 | + messageList.add(o.getMessageId()); | |
| 487 | 494 | chatListAdapter.addItem(new StringMessage(MessageType.stringMessage, o1, false)); |
| 488 | - chatListView.smoothScrollToPosition(chatListAdapter.getItemCount() - 1); | |
| 489 | 495 | } |
| 490 | 496 | } catch (JSONException e) { |
| 491 | 497 | e.printStackTrace(); |
| 492 | 498 | } |
| 493 | 499 | } else { |
| 494 | 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 | 521 | } else if (o.getMsgType() == IChat.CN_MSG_TYPE_IMAGE) { |
| 522 | + messageList.add(o.getMessageId()); | |
| 498 | 523 | CNImgMessage o1 = (CNImgMessage) o; |
| 499 | 524 | chatListAdapter.addItem(new ImagMessage(MessageType.imaMessage, o1, o1.isSelf())); |
| 500 | 525 | } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VOICE) { |
| 526 | + messageList.add(o.getMessageId()); | |
| 501 | 527 | CNVoiceMessage o1 = (CNVoiceMessage) o; |
| 502 | 528 | VoiceMessage voiceMessage = new VoiceMessage(MessageType.voiceMessage, o1, o1.isSelf()); |
| 503 | 529 | chatListAdapter.addItem(voiceMessage); |
| 504 | 530 | } else if (o.getMsgType() == IChat.CN_MSG_TYPE_VIDEO) { |
| 531 | + messageList.add(o.getMessageId()); | |
| 505 | 532 | CNVideoMessage ol = (CNVideoMessage) o; |
| 506 | 533 | VideoMessage videoMessage = new VideoMessage(MessageType.videoMessage, ol, ol.isSelf()); |
| 507 | 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 | 792 | } |
| 760 | 793 | |
| 761 | 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 | 826 | public void onImageClick(final ImagMessage imagMessage) { |
| 763 | 827 | if (imagMessage.getCnImgMessage().isSelf()) { |
| 764 | 828 | Intent intent = new Intent(PrivateActivity.this, ImageViewActivity.class); | ... | ... |
app/src/main/java/com/cnlive/im/util/MessageType.java