From ddb2cd3aca3e8a2247510ee7ed5d8963907992eb Mon Sep 17 00:00:00 2001 From: linminjie <1004644107@qq.com> Date: Wed, 12 Jul 2023 13:37:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../unionmedtv/activity/DoctorDetailActivity.java | 49 ++-- .../unionmed/unionmedtv/activity/HomeActivity.java | 15 +- .../unionmed/unionmedtv/activity/MsgActivity.java | 53 +++- .../unionmedtv/adapter/MsgItemAdapter.java | 150 ++++++++-- .../unionmedtv/adapter/MsgListAdapter.java | 21 +- .../unionmedtv/application/MyApplication.java | 3 + .../unionmed/unionmedtv/fragment/MsgFragment.java | 95 ++++++- .../unionmedtv/fragment/MyDoctorFragment.java | 3 + .../unionmed/unionmedtv/im/MeetingMsgModel.java | 308 +++++++++++++++++++++ .../activity/fragment/LoginPhoneFragment.java | 2 +- app/src/main/res/layout/activity_msg.xml | 30 ++ app/src/main/res/layout/fragment_phone_login.xml | 2 +- .../main/res/layout/item_msg_text_left_layout.xml | 10 +- .../main/res/layout/item_msg_text_right_layout.xml | 10 +- .../res/layout/item_msg_unknown_left_layout.xml | 71 +++++ .../res/layout/item_msg_unknown_right_layout.xml | 71 +++++ .../main/res/layout/item_msg_video_left_layout.xml | 82 ++++++ .../res/layout/item_msg_video_right_layout.xml | 81 ++++++ .../res/layout/layout_appointment_record_empty.xml | 38 +++ .../mipmap-xhdpi/icon_appointment_record_empty.png | Bin 0 -> 57716 bytes 20 files changed, 998 insertions(+), 96 deletions(-) create mode 100644 app/src/main/java/com/unionmed/unionmedtv/im/MeetingMsgModel.java create mode 100644 app/src/main/res/layout/item_msg_unknown_left_layout.xml create mode 100644 app/src/main/res/layout/item_msg_unknown_right_layout.xml create mode 100644 app/src/main/res/layout/item_msg_video_left_layout.xml create mode 100644 app/src/main/res/layout/item_msg_video_right_layout.xml create mode 100644 app/src/main/res/layout/layout_appointment_record_empty.xml create mode 100644 app/src/main/res/mipmap-xhdpi/icon_appointment_record_empty.png diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorDetailActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorDetailActivity.java index 877511c..2dcf91f 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorDetailActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/DoctorDetailActivity.java @@ -126,7 +126,7 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi //所属医院 tv_affiliation_hospital.setText("所属医院: " + choscodeInfoBean.getChosname()); if (TextUtils.isEmpty(choscodeInfoBean.getJj()) - ||choscodeInfoBean.getJj().equals("null")) { + || choscodeInfoBean.getJj().equals("null")) { tv_doctor_brief.setText("医生简介: 暂无医生简介"); } else { tv_doctor_brief.setText("医生简介: " + choscodeInfoBean.getJj()); @@ -184,32 +184,33 @@ public class DoctorDetailActivity extends BaseActivity implements View.OnClickLi return; } if (checkCamera(DoctorDetailActivity.this)) { - List pKeys = new ArrayList<>(); - pKeys.add(targetId); - EasyHttp.post(DoctorDetailActivity.this) - .api(new ApplyVideoApi(pKeys, "10001")) - .request(new OnHttpListener>>() { - @Override - public void onSucceed(ApiResponse> result) { - if (null != result.getData() && result.getData().isInnerRequestSucceed() && - null != result.getData().getData()) { - - VideoCallActivity.startActivity(DoctorDetailActivity.this, targetId, - result.getData().getData().getGroupID(), VideoCallActivity.CALL); - } else { - ToastUtils.showLong("发起视频失败"); - LogUtils.e("applyVideo失败", "数据解析失败"); + if (HomeActivity.connectIsSuccess(DoctorDetailActivity.this)) { + List pKeys = new ArrayList<>(); + pKeys.add(targetId); + EasyHttp.post(DoctorDetailActivity.this) + .api(new ApplyVideoApi(pKeys, "10001")) + .request(new OnHttpListener>>() { + @Override + public void onSucceed(ApiResponse> result) { + if (null != result.getData() && result.getData().isInnerRequestSucceed() && + null != result.getData().getData()) { + + VideoCallActivity.startActivity(DoctorDetailActivity.this, targetId, + result.getData().getData().getGroupID(), VideoCallActivity.CALL); + } else { + ToastUtils.showLong("发起视频失败"); + LogUtils.e("applyVideo失败", "数据解析失败"); + } } - } - - @Override - public void onFail(Exception e) { - ToastUtils.showLong("发起视频失败"); - LogUtils.e("applyVideo失败", "失败:" + e); - } - }); + @Override + public void onFail(Exception e) { + ToastUtils.showLong("发起视频失败"); + LogUtils.e("applyVideo失败", "失败:" + e); + } + }); + } } } diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/HomeActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/HomeActivity.java index 694e69f..7ac64b6 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/HomeActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/HomeActivity.java @@ -161,7 +161,16 @@ public class HomeActivity extends BaseActivity implements View.OnFocusChangeList }); } - + public static boolean connectIsSuccess(Context context) { + if (!RongIMClient.getInstance() + .getCurrentConnectionStatus() + .equals(RongIMClient.ConnectionStatusListener.ConnectionStatus.CONNECTED)) { + ToastUtils.showLong( "融云未登录"); + return false; + } else { + return true; + } + } @Override public void onFocusChange(View view, boolean b) { if (view.getId() == R.id.tv_my_doctor) { @@ -198,7 +207,9 @@ public class HomeActivity extends BaseActivity implements View.OnFocusChangeList } else if (view.getId() == R.id.tv_city) { AddressSelectActivity.StartActivity(HomeActivity.this); } else if (view.getId() == R.id.iv_msg) { - MsgActivity.StartActivity(HomeActivity.this); + if(HomeActivity.connectIsSuccess(HomeActivity.this)) { + MsgActivity.StartActivity(HomeActivity.this); + } } } diff --git a/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java b/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java index b884ed3..99f218b 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java +++ b/app/src/main/java/com/unionmed/unionmedtv/activity/MsgActivity.java @@ -6,6 +6,7 @@ import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.FrameLayout; +import android.widget.LinearLayout; import android.widget.TextView; import androidx.annotation.NonNull; @@ -23,6 +24,7 @@ import androidx.viewpager2.widget.ViewPager2; import com.blankj.utilcode.util.LogUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; +import com.example.yideng.loaddialoglibrary.LmiotDialog; import com.hjq.http.EasyHttp; import com.hjq.http.listener.OnHttpListener; import com.unionmed.unionmedtv.R; @@ -58,7 +60,10 @@ public class MsgActivity extends BaseActivity { private FrameLayout frameLayout; private TextView tv_title; private int lastSelectedPosition = 0; - + private MsgFragment msgFragment; + private LinearLayout lin; + private TextView tv_retry; + private TextView tv_content; public static void StartActivity(Context context) { Intent intent = new Intent(context, MsgActivity.class); context.startActivity(intent); @@ -70,19 +75,24 @@ public class MsgActivity extends BaseActivity { setContentView(R.layout.activity_msg); initView(); } - - public void initView() { - recyclerView = findViewById(R.id.recyclerView); - tv_title = findViewById(R.id.tv_title); - MyLinearLayoutManager myLinearLayoutManager = new MyLinearLayoutManager(MsgActivity.this); - recyclerView.setLayoutManager(myLinearLayoutManager); + public void getMsgList(){ + LmiotDialog.show(MsgActivity.this,"获取聊天数据"); Conversation.ConversationType[] conversationTypes = {Conversation.ConversationType.PRIVATE, Conversation.ConversationType.GROUP}; RongIMClient.getInstance().getConversationListByPage(new RongIMClient. ResultCallback>() { @Override public void onSuccess(List conversations) { + LmiotDialog.hidden(); + if(conversations==null){ + tv_content.setText("暂无数据"); + return; + } + lin.setVisibility(View.GONE); for (int i=0;i void onChildClick(View view, int position, T data) { @@ -104,8 +130,10 @@ public class MsgActivity extends BaseActivity { recyclerView.setAdapter(msgListAdapter); FragmentManager fragmentManager = getSupportFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - fragmentTransaction.replace(R.id.framelayout, new MsgFragment()); + msgFragment=new MsgFragment(); + fragmentTransaction.replace(R.id.framelayout, msgFragment); fragmentTransaction.commit(); + getMsgList(); LiveDataBus.get().with(Constants.MSG_LIST_SELECT_ITEM, Integer.class).observe(this, new Observer() { @Override @@ -113,7 +141,12 @@ public class MsgActivity extends BaseActivity { lastSelectedPosition = integer; msgListAdapter.setPostion(lastSelectedPosition); msgListAdapter.notifyDataSetChanged(); + tv_title.setText(list.get(integer).getName()); + msgFragment.setTargetId(list.get(integer).getConversation().getTargetId()); + msgFragment.setName(list.get(integer).getName()); + msgFragment.setImgPath(list.get(integer).getImgPath()); LiveDataBus.get().with(Constants.MSG_REFRESH_ITEM).postValue(""); + } }); LiveDataBus.get().with(Constants.MSG_LIST_REFRESH_ITEM, String.class).observe(this, new Observer() { diff --git a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java index b6db8fc..aac801f 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java +++ b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgItemAdapter.java @@ -1,6 +1,7 @@ package com.unionmed.unionmedtv.adapter; import android.graphics.Color; +import android.util.Log; import android.view.View; import android.widget.ImageView; import android.widget.TextView; @@ -8,6 +9,7 @@ import android.widget.TextView; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; +import com.blankj.utilcode.util.TimeUtils; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.chad.library.adapter.base.BaseDelegateMultiAdapter; @@ -15,72 +17,162 @@ import com.chad.library.adapter.base.delegate.BaseMultiTypeDelegate; import com.chad.library.adapter.base.viewholder.BaseViewHolder; import com.unionmed.unionmedtv.R; import com.unionmed.unionmedtv.activity.MsgActivity; +import com.unionmed.unionmedtv.im.MeetingMsgModel; +import com.unionmed.unionmedtv.utils.CacheUtil; import com.unionmed.unionmedtv.utils.OnChildClickListener; import org.jetbrains.annotations.NotNull; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; -public class MsgItemAdapter extends BaseDelegateMultiAdapter { +import io.rong.imlib.model.Message; +import io.rong.imlib.model.UnknownMessage; +import io.rong.message.ImageMessage; +import io.rong.message.TextMessage; + +public class MsgItemAdapter extends BaseDelegateMultiAdapter { private OnChildClickListener onChildClickListener; + private String name; + private String imgPath; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImgPath() { + return imgPath; + } + + public void setImgPath(String imgPath) { + this.imgPath = imgPath; + } - public MsgItemAdapter(@Nullable List data, OnChildClickListener onChildClickListener) { + public MsgItemAdapter(@Nullable List data, OnChildClickListener onChildClickListener) { super(data); this.onChildClickListener = onChildClickListener; - setMultiTypeDelegate(new BaseMultiTypeDelegate() { + setMultiTypeDelegate(new BaseMultiTypeDelegate() { @Override - public int getItemType(@NotNull List data, int position) { + public int getItemType(@NotNull List data, int position) { // 根据数据,自己判断应该返回的类型 - if (data.get(position).equals("1")) { + Message message = data.get(position); + if (message.getContent() instanceof TextMessage && + message.getMessageDirection() == Message.MessageDirection.RECEIVE) {//文本类型发送方 return 0; - } else if (data.get(position).equals("2")) { + } else if (message.getContent() instanceof TextMessage && + message.getMessageDirection() == Message.MessageDirection.SEND) {//文本类型接收方 return 1; - } else if (data.get(position).equals("3")) { + } else if (message.getContent() instanceof ImageMessage && + message.getMessageDirection() == Message.MessageDirection.RECEIVE) { return 2; - } else if (data.get(position).equals("4")) { + } else if (message.getContent() instanceof ImageMessage && + message.getMessageDirection() == Message.MessageDirection.SEND) { return 3; - } else if (data.get(position).equals("5")) { + } else if (message.getContent() instanceof MeetingMsgModel && + message.getMessageDirection() == Message.MessageDirection.RECEIVE) { return 4; - } else if (data.get(position).equals("6")) { + } else if (message.getContent() instanceof MeetingMsgModel && + message.getMessageDirection() == Message.MessageDirection.SEND) { return 5; + }else if (message.getContent() instanceof UnknownMessage && + message.getMessageDirection() == Message.MessageDirection.RECEIVE) { + return 6; + } else if (message.getContent() instanceof UnknownMessage && + message.getMessageDirection() == Message.MessageDirection.SEND) { + return 7; } else { return 0; } } }); getMultiTypeDelegate() - .addItemType(0, R.layout.item_msg_text_left_layout) + .addItemType(0, R.layout.item_msg_text_left_layout)//文本类型 .addItemType(1, R.layout.item_msg_text_right_layout) - .addItemType(2, R.layout.item_msg_image_left_layout) + .addItemType(2, R.layout.item_msg_image_left_layout)//图片类型 .addItemType(3, R.layout.item_msg_image_right_layout) - .addItemType(4, R.layout.item_msg_order_left_layout) - .addItemType(5, R.layout.item_msg_order_right_layout); + .addItemType(4, R.layout.item_msg_video_left_layout)//视频类型 + .addItemType(5, R.layout.item_msg_video_right_layout) + .addItemType(6, R.layout.item_msg_order_left_layout)//订单类型 + .addItemType(7, R.layout.item_msg_order_right_layout) + .addItemType(8, R.layout.item_msg_unknown_left_layout)//未知类型 + .addItemType(9, R.layout.item_msg_unknown_right_layout); } @Override - protected void convert(@NotNull BaseViewHolder vh, String s) { - if (vh.getItemViewType() == 0) { - - } else if (vh.getItemViewType() == 2) { - ImageView iv_imag = vh.findView(R.id.iv_image); + protected void convert(@NotNull BaseViewHolder vh, Message message) { + TextView tv_time = vh.findView(R.id.tv_time); + TextView tv_name = vh.findView(R.id.tv_name); + ImageView iv_avatar = vh.findView(R.id.iv_avatar); + tv_time.setText(TimeUtils.millis2String(message.getSentTime()) + ""); + if (message.getMessageDirection() == Message.MessageDirection.SEND) {//右边样式 + tv_name.setText(CacheUtil.getToken().getName()); + Glide.with(getContext()) + .load((CacheUtil.getToken().getHeadImg())) + .apply(new RequestOptions() + .placeholder(R.drawable.icon_default_doctor) + .circleCrop() + ) + .into(iv_avatar); + if (vh.getItemViewType() == 1) {//文本 + TextView tv_content = vh.findView(R.id.tv_content); + TextMessage textMessage = (TextMessage) message.getContent(); + tv_content.setText(textMessage.getContent()); + } else if (vh.getItemViewType() == 3) {//图片 + ImageView iv_imag = vh.findView(R.id.iv_image); + ImageMessage imageMessage = (ImageMessage) message.getContent(); + Glide.with(getContext()) + .load((imageMessage.getRemoteUri())) + .apply(new RequestOptions() + .placeholder(R.color.white_e1e1e1) + ) + .into(iv_imag); + } else if (vh.getItemViewType() == 5) {//视频 + TextView tv_content = vh.findView(R.id.tv_content); + TextView tv_title = vh.findView(R.id.tv_title); + MeetingMsgModel meetingMsgModel = (MeetingMsgModel) message.getContent(); + tv_title.setText(meetingMsgModel.getTitle()); + tv_content.setText(meetingMsgModel.getText()); + } + } else {//左边样式 + tv_name.setText(name); Glide.with(getContext()) - .load("https://lmg.jj20.com/up/allimg/4k/s/02/210924233115O14-0-lp.jpg") + .load(imgPath) .apply(new RequestOptions() - .placeholder(R.color.white_e1e1e1) + .placeholder(R.drawable.icon_default_doctor) + .circleCrop() ) - .into(iv_imag); + .into(iv_avatar); + if (vh.getItemViewType() == 0) {//文本 + TextView tv_content = vh.findView(R.id.tv_content); + TextMessage textMessage = (TextMessage) message.getContent(); + tv_content.setText(textMessage.getContent()); + } else if (vh.getItemViewType() == 2) {//图片 + ImageView iv_imag = vh.findView(R.id.iv_image); + ImageMessage imageMessage = (ImageMessage) message.getContent(); + Glide.with(getContext()) + .load((imageMessage.getRemoteUri())) + .apply(new RequestOptions() + .placeholder(R.color.white_e1e1e1) + ) + .into(iv_imag); + } else if (vh.getItemViewType() == 4) {//视频 + TextView tv_content = vh.findView(R.id.tv_content); + TextView tv_title = vh.findView(R.id.tv_title); + MeetingMsgModel meetingMsgModel = (MeetingMsgModel) message.getContent(); + tv_title.setText(meetingMsgModel.getTitle()); + tv_content.setText(meetingMsgModel.getText()); + } } -// TextView tv_content=vh.findView(R.id.tv_content); -// if(getContext() instanceof MsgActivity){ -// RecyclerView recyclerView=((MsgActivity) getContext()).findViewById(R.id.recyclerView); -// tv_content.setNextFocusLeftId(recyclerView.getId()); -// } - vh.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - onChildClickListener.onChildClick(view, vh.getLayoutPosition(), s); + onChildClickListener.onChildClick(view, vh.getLayoutPosition(), message); } }); diff --git a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java index db27aea..e78b89b 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java +++ b/app/src/main/java/com/unionmed/unionmedtv/adapter/MsgListAdapter.java @@ -63,19 +63,15 @@ public class MsgListAdapter extends BaseQuickAdapter>>() { @Override public void onSucceed(ApiResponse> result) { + if(postion==0){ + LiveDataBus.get().with(Constants.MSG_LIST_SELECT_ITEM).postValue(0); + } conversation.setFirstLoad(false); if (null != result.getData() && result.getData().isInnerRequestSucceed() && null != result.getData().getData()) { conversation.setName(result.getData().getData().getName()); conversation.setImgPath(result.getData().getData().getHeadImg()); - tv_title.setText(conversation.getName()); - Glide.with(getContext()) - .load(conversation.getImgPath()) - .apply(new RequestOptions() - .placeholder(R.mipmap.rc_default_portrait) - .circleCrop() - ) - .into(iv_avatar); + notifyDataSetChanged(); } } @@ -89,6 +85,14 @@ public class MsgListAdapter extends BaseQuickAdapter list = new ArrayList<>(); + private List list = new ArrayList<>(); private LinearLayout lin; private TextView tv_look; + private String targetId; + private String name; + private String imgPath; + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getImgPath() { + return imgPath; + } + + public void setImgPath(String imgPath) { + this.imgPath = imgPath; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -54,19 +88,29 @@ public class MsgFragment extends Fragment implements View.OnClickListener { msgItemLinearLayoutManager.setRecyclerView(recyclerView); recyclerView.setLayoutManager(msgItemLinearLayoutManager); recyclerView.addItemDecoration(new LinearSpacingItemDecoration(getActivity(), 14)); - list.clear(); - list.add("1"); - list.add("2"); - list.add("3"); - list.add("4"); - list.add("5"); - list.add("6"); +// list.clear(); +// list.add("1"); +// list.add("2"); +// list.add("3"); +// list.add("4"); +// list.add("5"); +// list.add("6"); + msgItemAdapter = new MsgItemAdapter(list, new OnChildClickListener() { @Override public void onChildClick(View view, int position, T data) { } }); + View emptyView = LayoutInflater.from(getActivity()) + .inflate( + R.layout.layout_appointment_record_empty, + recyclerView, + false + ); + TextView tv_hint = emptyView.findViewById(R.id.tv_hint); + tv_hint.setText("暂无聊天记录"); + msgItemAdapter.setEmptyView(emptyView); recyclerView.setAdapter(msgItemAdapter); if (list.size() > 0) { recyclerView.smoothScrollToPosition(list.size() - 1); @@ -86,7 +130,7 @@ public class MsgFragment extends Fragment implements View.OnClickListener { View selectView = msgItemLinearLayoutManager.findViewByPosition(pos); if (selectView != null) { selectView.requestFocus(); - }else { + } else { recyclerView.requestFocus(); } } else { @@ -103,12 +147,41 @@ public class MsgFragment extends Fragment implements View.OnClickListener { public void onChanged(String s) { lin.setVisibility(View.VISIBLE); recyclerView.setVisibility(View.GONE); + msgItemAdapter.setName(name); + msgItemAdapter.setImgPath(imgPath); // LmiotDialog.show(getActivity()); + } }); return view; } + public void getRemoteHistory() { + Conversation.ConversationType conversationType = Conversation.ConversationType.PRIVATE; + long dateTime = 0; + int count = 20; + RongIMClient.getInstance().getHistoryMessages(conversationType, targetId, -1, count, new RongIMClient.ResultCallback>() { + + @Override + public void onSuccess(List messages) { + for (int i=0;i doctorInfo = stringHttpData.getData().getData().getMember(); if (doctorInfo.size()==0) { tv_title.setVisibility(View.GONE); diff --git a/app/src/main/java/com/unionmed/unionmedtv/im/MeetingMsgModel.java b/app/src/main/java/com/unionmed/unionmedtv/im/MeetingMsgModel.java new file mode 100644 index 0000000..9633479 --- /dev/null +++ b/app/src/main/java/com/unionmed/unionmedtv/im/MeetingMsgModel.java @@ -0,0 +1,308 @@ +package com.unionmed.unionmedtv.im; + +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; +import android.util.Log; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.UnsupportedEncodingException; + +import io.rong.common.ParcelUtils; +import io.rong.imlib.MessageTag; +import io.rong.imlib.model.MentionedInfo; +import io.rong.imlib.model.MessageContent; +import io.rong.imlib.model.UserInfo; + +@MessageTag(value = "UMCustonMessage", flag = MessageTag.ISCOUNTED) +public class MeetingMsgModel extends MessageContent { + private static final String TAG = "MeetingMsgModel"; + + public static final Creator CREATOR = new Creator() { + public MeetingMsgModel createFromParcel(Parcel source) { + return new MeetingMsgModel(source); + } + + public MeetingMsgModel[] newArray(int size) { + return new MeetingMsgModel[size]; + } + }; + + private String content; + private String contentType; + private String ext; + private String logo; + private String text; + private String title; + private String url; + + + /** + * 将本地消息对象序列化为消息数据。 + * + * @return 消息数据。 + */ + @Override + public byte[] encode() { + JSONObject jsonObj = new JSONObject(); + try { + // 消息携带用户信息时, 自定义消息需添加下面代码 + if (getJSONUserInfo() != null) { + jsonObj.putOpt("user", getJSONUserInfo()); + } + // 用于群组聊天, 消息携带 @ 人信息时, 自定义消息需添加下面代码 + if (getJsonMentionInfo() != null) { + jsonObj.putOpt("mentionedInfo", getJsonMentionInfo()); + } + // 将所有自定义消息的内容,都序列化至 json 对象中 + jsonObj.put("content", this.content); + jsonObj.put("contentType", this.contentType); + jsonObj.put("logo", this.logo); + jsonObj.put("text", this.text); + jsonObj.put("title", this.title); + jsonObj.put("url", this.url); + jsonObj.put("ext", this.ext); + } catch (JSONException e) { + Log.e(TAG, "JSONException " + e.getMessage()); + } + + try { + return jsonObj.toString().getBytes("UTF-8"); + } catch (UnsupportedEncodingException e) { + Log.e(TAG, "UnsupportedEncodingException ", e); + } + return null; + } + + /** + * 创建 MyMyTextContent(byte[] data) 带有 byte[] 的构造方法用于解析消息内容. + */ + public MeetingMsgModel(byte[] data) { + if (data == null) { + return; + } + String jsonStr = null; + try { + jsonStr = new String(data, "UTF-8"); + } catch (UnsupportedEncodingException e) { + Log.e(TAG, "UnsupportedEncodingException ", e); + } + if (jsonStr == null) { + Log.e(TAG, "jsonStr is null "); + return; + } + + try { + JSONObject jsonObj = new JSONObject(jsonStr); + // 消息携带用户信息时, 自定义消息需添加下面代码 + if (jsonObj.has("user")) { + setUserInfo(parseJsonToUserInfo(jsonObj.getJSONObject("user"))); + } + // 用于群组聊天, 消息携带 @ 人信息时, 自定义消息需添加下面代码 + if (jsonObj.has("mentionedInfo")) { + setMentionedInfo(parseJsonToMentionInfo(jsonObj.getJSONObject("mentionedInfo"))); + } + // 将所有自定义变量从收到的 json 解析并赋值 + if (jsonObj.has("content")) { + content = jsonObj.optString("content"); + } + if (jsonObj.has("contentType")) { + contentType = jsonObj.optString("contentType"); + } + if (jsonObj.has("logo")) { + logo = jsonObj.optString("logo"); + } + if (jsonObj.has("text")) { + text = jsonObj.optString("text"); + } + if (jsonObj.has("title")) { + title = jsonObj.optString("title"); + } + if (jsonObj.has("url")) { + url = jsonObj.optString("url"); + } + if (jsonObj.has("ext")) { + ext = jsonObj.optString("ext"); + } +// if (jsonObj.has("ext")) { +// setExt(parseJsonToExt(jsonObj.getJSONObject("ext"))); +// } + } catch (JSONException e) { + Log.e(TAG, "JSONException " + e.getMessage()); + } + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + ParcelUtils.writeToParcel(dest, this.getExtra()); + ParcelUtils.writeToParcel(dest, this.getUserInfo()); + ParcelUtils.writeToParcel(dest, this.getMentionedInfo()); + ParcelUtils.writeToParcel(dest, this.isDestruct() ? 1 : 0); + ParcelUtils.writeToParcel(dest, this.getDestructTime()); + + ParcelUtils.writeToParcel(dest, this.content); + ParcelUtils.writeToParcel(dest, this.contentType); + ParcelUtils.writeToParcel(dest, this.logo); + ParcelUtils.writeToParcel(dest, this.text); + ParcelUtils.writeToParcel(dest, this.title); + ParcelUtils.writeToParcel(dest, this.url); + ParcelUtils.writeToParcel(dest, this.ext); + } + + public ExtBean parseJsonToExt(JSONObject jsonObj) { + ExtBean info = null; + String roomID = jsonObj.optString("roomID"); + String GroupID = jsonObj.optString("GroupID"); + + if (!TextUtils.isEmpty(roomID) && !TextUtils.isEmpty(GroupID)) { + info = new ExtBean(roomID, GroupID); + } + + return info; + } + + /** + * 构造函数。 + * + * @param in 初始化传入的 Parcel。 + */ + public MeetingMsgModel(Parcel in) { + this.setExtra(ParcelUtils.readFromParcel(in)); + this.setUserInfo((UserInfo) ParcelUtils.readFromParcel(in, UserInfo.class)); + this.setMentionedInfo((MentionedInfo) ParcelUtils.readFromParcel(in, MentionedInfo.class)); + this.setDestruct(ParcelUtils.readIntFromParcel(in) == 1); + this.setDestructTime(ParcelUtils.readLongFromParcel(in)); + + this.setContent(ParcelUtils.readFromParcel(in)); + this.setContentType(ParcelUtils.readFromParcel(in)); + this.setLogo(ParcelUtils.readFromParcel(in)); + this.setText(ParcelUtils.readFromParcel(in)); + this.setTitle(ParcelUtils.readFromParcel(in)); + this.setUrl(ParcelUtils.readFromParcel(in)); + this.setExt(ParcelUtils.readFromParcel(in)); +// this.setExt((ExtBean) ParcelUtils.readFromParcel(in, ExtBean.class)); + } + + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + + public String getContentType() { + return contentType; + } + + public void setContentType(String contentType) { + this.contentType = contentType; + } + + public String getExt() { + return ext; + } + + public void setExt(String ext) { + this.ext = ext; + } + + public String getLogo() { + return logo; + } + + public void setLogo(String logo) { + this.logo = logo; + } + + public String getText() { + return text; + } + + public void setText(String text) { + this.text = text; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public static class ExtBean implements Parcelable { + private String roomID; + private String groupID; + + public String getRoomID() { + return roomID; + } + + public void setRoomID(String roomID) { + this.roomID = roomID; + } + + public String getGroupID() { + return groupID; + } + + public void setGroupID(String groupID) { + groupID = groupID; + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeString(this.roomID); + dest.writeString(this.groupID); + } + + public void readFromParcel(Parcel source) { + this.roomID = source.readString(); + this.groupID = source.readString(); + } + + public ExtBean(String roomID, String groupID) { + this.roomID = roomID; + this.groupID = groupID; + } + + protected ExtBean(Parcel in) { + this.roomID = in.readString(); + this.groupID = in.readString(); + } + + public static final Creator CREATOR = new Creator() { + @Override + public ExtBean createFromParcel(Parcel source) { + return new ExtBean(source); + } + + @Override + public ExtBean[] newArray(int size) { + return new ExtBean[size]; + } + }; + } +} diff --git a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java index da8174d..811535c 100644 --- a/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java +++ b/app/src/main/java/com/unionmed/unionmedtv/login/activity/fragment/LoginPhoneFragment.java @@ -270,7 +270,7 @@ public class LoginPhoneFragment extends Fragment implements View.OnClickListener } }); } - }, 0, 5000); // 设置定时任务的时间间隔为 5 秒 + }, 0, 3000); // 设置定时任务的时间间隔为3 秒 } @Override diff --git a/app/src/main/res/layout/activity_msg.xml b/app/src/main/res/layout/activity_msg.xml index 05a1739..21025c0 100644 --- a/app/src/main/res/layout/activity_msg.xml +++ b/app/src/main/res/layout/activity_msg.xml @@ -4,6 +4,36 @@ android:layout_height="match_parent" xmlns:tools="http://schemas.android.com/tools" android:orientation="horizontal"> + + + + + + android:descendantFocusability="afterDescendants"> \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_text_right_layout.xml b/app/src/main/res/layout/item_msg_text_right_layout.xml index 958bab5..2f0abe2 100644 --- a/app/src/main/res/layout/item_msg_text_right_layout.xml +++ b/app/src/main/res/layout/item_msg_text_right_layout.xml @@ -1,12 +1,12 @@ + android:descendantFocusability="afterDescendants"> \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_unknown_left_layout.xml b/app/src/main/res/layout/item_msg_unknown_left_layout.xml new file mode 100644 index 0000000..1f327b1 --- /dev/null +++ b/app/src/main/res/layout/item_msg_unknown_left_layout.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_unknown_right_layout.xml b/app/src/main/res/layout/item_msg_unknown_right_layout.xml new file mode 100644 index 0000000..baf2bd2 --- /dev/null +++ b/app/src/main/res/layout/item_msg_unknown_right_layout.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_video_left_layout.xml b/app/src/main/res/layout/item_msg_video_left_layout.xml new file mode 100644 index 0000000..982712e --- /dev/null +++ b/app/src/main/res/layout/item_msg_video_left_layout.xml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_video_right_layout.xml b/app/src/main/res/layout/item_msg_video_right_layout.xml new file mode 100644 index 0000000..de8414a --- /dev/null +++ b/app/src/main/res/layout/item_msg_video_right_layout.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_appointment_record_empty.xml b/app/src/main/res/layout/layout_appointment_record_empty.xml new file mode 100644 index 0000000..e7c74a8 --- /dev/null +++ b/app/src/main/res/layout/layout_appointment_record_empty.xml @@ -0,0 +1,38 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xhdpi/icon_appointment_record_empty.png b/app/src/main/res/mipmap-xhdpi/icon_appointment_record_empty.png new file mode 100644 index 0000000000000000000000000000000000000000..282d1761f13207e0fe9c10657e58bdc6afe6f32c GIT binary patch literal 57716 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 literal 0 HcmV?d00001