diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java index d742fad..18a6910 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java +++ b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/manager/ImManager.java @@ -338,7 +338,7 @@ public class ImManager implements IMInterface { } String msg = GsonImplHelp.get().toJson(message); try { - mqttClient.publish("server1" + packetType, msg.getBytes(Charsets.UTF_8), 2, false); + mqttClient.publish("server" + packetType, msg.getBytes(Charsets.UTF_8), 2, false); // 如果是发送的消息,需要应答 if (PacketType.SEND == packetType) { if (null != callback) diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ConnectedMessage.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ConnectedMessage.java index f248fc8..ae3dd1b 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ConnectedMessage.java +++ b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/im/msg/ConnectedMessage.java @@ -1,6 +1,7 @@ package cn.org.bjca.trust.android.lib.im.im.msg; +import cn.org.bjca.trust.android.lib.im.bean.UserInfo; import cn.org.bjca.trust.android.lib.im.enums.PacketType; import cn.org.bjca.trust.android.lib.im.im.bean.PacketMessage; @@ -11,6 +12,15 @@ public class ConnectedMessage extends PacketMessage { private int status; private String msg; + private UserInfo userInfo; + + public UserInfo getUserInfo() { + return userInfo; + } + + public void setUserInfo(UserInfo userInfo) { + this.userInfo = userInfo; + } public int getStatus() { return status; diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkInterface.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkInterface.java index dcdda30..b72d933 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkInterface.java +++ b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/kit/SdkInterface.java @@ -2,6 +2,8 @@ package cn.org.bjca.trust.android.lib.im.kit; import android.content.Context; +import cn.org.bjca.trust.android.lib.im.bean.UserInfo; + public interface SdkInterface { void setIMSDKListener(IMSDKListener listener); @@ -14,6 +16,9 @@ public interface SdkInterface { void logout(IMSDKCallback callback); + UserInfo getUser(); + UserInfo getUser(String userId); + String getVersion(); } diff --git a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java index 2f89eaf..f4e16e6 100644 --- a/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java +++ b/SzyxImSdk/src/main/java/cn/org/bjca/trust/android/lib/im/manager/SZYXImManager.java @@ -4,6 +4,7 @@ import android.content.Context; import cn.org.bjca.trust.android.lib.im.BuildConfig; import cn.org.bjca.trust.android.lib.im.SZYXDbHelper; +import cn.org.bjca.trust.android.lib.im.bean.UserInfo; import cn.org.bjca.trust.android.lib.im.cfg.Constant; import cn.org.bjca.trust.android.lib.im.common.DeviceHelper; import cn.org.bjca.trust.android.lib.im.http.HttpManage; @@ -76,6 +77,15 @@ public class SZYXImManager implements SdkInterface { IMHelper.getInstance().logout(); } + @Override + public UserInfo getUser() { + return UserManager.getInstance().getUserInfoForMsg(); + } + @Override + public UserInfo getUser(String userId) { + return UserManager.getInstance().getUserInfoForMsg(); + } + @Override public String getVersion() { diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java index 6674b6d..ea79cd9 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java +++ b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/ChatActivity.java @@ -20,7 +20,7 @@ import cn.org.bjca.trust.android.lib.im.kit.IMSDKCallback; public class ChatActivity extends BaseActivity { private ChatVM vm; - private final ChatAdapter adapter = new ChatAdapter(); + private ChatAdapter adapter; @Override public int getLayoutId() { @@ -30,6 +30,7 @@ public class ChatActivity extends BaseActivity { @Override public void initView(Bundle savedInstanceState) { super.initView(savedInstanceState); + this.adapter = new ChatAdapter(mContext); vm = new ViewModelProvider(this).get(ChatVM.class); String userId = getIntent().getStringExtra("userId"); String userName = getIntent().getStringExtra("userName"); diff --git a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/adapter/ChatAdapter.java b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/adapter/ChatAdapter.java index 3dbe9fc..93b1c43 100644 --- a/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/adapter/ChatAdapter.java +++ b/app/src/main/java/cn/org/bjca/trust/android/imdemo/ui/adapter/ChatAdapter.java @@ -1,39 +1,76 @@ package cn.org.bjca.trust.android.imdemo.ui.adapter; +import android.content.Context; +import android.view.LayoutInflater; +import android.widget.LinearLayout; + +import androidx.databinding.DataBindingUtil; + import com.xuqm.base.adapter.BaseNormalAdapter; import com.xuqm.base.adapter.ItemViewDelegate; import com.xuqm.base.adapter.ViewHolder; -import com.xuqm.base.common.LogHelper; +import com.xuqm.base.common.TimeHelper; import cn.org.bjca.trust.android.imdemo.R; -import cn.org.bjca.trust.android.lib.im.enums.MsgType; +import cn.org.bjca.trust.android.imdemo.databinding.ChatViewTextBinding; +import cn.org.bjca.trust.android.lib.im.SZYXImSdk; import cn.org.bjca.trust.android.lib.im.im.msg.message.SZYXMessage; public class ChatAdapter extends BaseNormalAdapter { - public ChatAdapter() { + private Context mContext; + + public ChatAdapter(Context context) { + this.mContext = context; + addItemViewDelegate(new ItemViewDelegate() { + @Override + public int getItemViewLayoutId() { + return R.layout.chat_view_root_l; + } + + @Override + public boolean isForViewType(SZYXMessage item, int position) { + return item.isArrive(); + } + + @Override + public void convert(ViewHolder holder, SZYXMessage item, int position) { + holder.setImage(R.id.avatar, item.getFromClient().getFaceUrl()); + holder.setText(R.id.name, item.getFromClient().getNickName()); + ChatAdapter.this.convert(holder, item, position); + } + }); addItemViewDelegate(new ItemViewDelegate() { @Override public int getItemViewLayoutId() { - return R.layout.chat_view_text; + return R.layout.chat_view_root_r; } @Override public boolean isForViewType(SZYXMessage item, int position) { - return item.getMsgType().equals(MsgType.Text); + return !item.isArrive(); } @Override public void convert(ViewHolder holder, SZYXMessage item, int position) { - if (item.isArrive()) { - holder.setText(R.id.left, item.getTextMessage().getText()); - holder.setVisibility(R.id.left, true); - holder.setVisibility(R.id.right, false); - } else { - holder.setText(R.id.right, item.getTextMessage().getText()); - holder.setVisibility(R.id.left, false); - holder.setVisibility(R.id.right, true); - } + holder.setImage(R.id.avatar, SZYXImSdk.getInstance().getUser().getFaceUrl()); + ChatAdapter.this.convert(holder, item, position); } }); } + + private void convert(ViewHolder holder, SZYXMessage item, int position) { + holder.setText(R.id.time, TimeHelper.getStringFormMillis(item.getTimestamp(), "yyyy-MM-dd HH:mm")); + LinearLayout root = holder.getView(R.id.content); + switch (item.getMsgType()) { + case Text: + ChatViewTextBinding text = DataBindingUtil.inflate(LayoutInflater.from(this.mContext), R.layout.chat_view_text, root, true); + text.text.setText(item.getTextMessage().getText()); + break; + case Image: + break; + default: + DataBindingUtil.inflate(LayoutInflater.from(this.mContext), R.layout.chat_view_unknown, root, true); + break; + } + } } diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index 034d542..58858a1 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -5,6 +5,7 @@ diff --git a/app/src/main/res/layout/chat_view_root_l.xml b/app/src/main/res/layout/chat_view_root_l.xml new file mode 100644 index 0000000..6972eab --- /dev/null +++ b/app/src/main/res/layout/chat_view_root_l.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/chat_view_root_r.xml b/app/src/main/res/layout/chat_view_root_r.xml new file mode 100644 index 0000000..a2eb48c --- /dev/null +++ b/app/src/main/res/layout/chat_view_root_r.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/chat_view_text.xml b/app/src/main/res/layout/chat_view_text.xml index c9fd943..58c13c9 100644 --- a/app/src/main/res/layout/chat_view_text.xml +++ b/app/src/main/res/layout/chat_view_text.xml @@ -1,23 +1,10 @@ - - + + - - - \ No newline at end of file + android:textColor="#12111E" + android:textSize="14sp" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/chat_view_unknown.xml b/app/src/main/res/layout/chat_view_unknown.xml new file mode 100644 index 0000000..1b4e843 --- /dev/null +++ b/app/src/main/res/layout/chat_view_unknown.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/szyxpushsdk/src/main/java/cn/org/bjca/trust/android/lib/push/push/SZYXPushManager.java b/szyxpushsdk/src/main/java/cn/org/bjca/trust/android/lib/push/push/SZYXPushManager.java index eb7ae5b..335794e 100644 --- a/szyxpushsdk/src/main/java/cn/org/bjca/trust/android/lib/push/push/SZYXPushManager.java +++ b/szyxpushsdk/src/main/java/cn/org/bjca/trust/android/lib/push/push/SZYXPushManager.java @@ -12,16 +12,16 @@ public class SZYXPushManager implements PushInterface { @Override public void init(Context mContext) { //初始化push - try { - PushClient.getInstance(mContext).initialize(); - } catch (VivoPushException e) { - Log.e("=====>0", e.getMessage()); - } - - // 打开push开关, 关闭为turnOffPush,详见api接入文档 - PushClient.getInstance(mContext).turnOnPush(state -> { - Log.e("=====>1", state + ""); - Log.e("=====>2", PushClient.getInstance(mContext).getRegId()); - }); +// try { +// PushClient.getInstance(mContext).initialize(); +// } catch (VivoPushException e) { +// Log.e("=====>0", e.getMessage()); +// } +// +// // 打开push开关, 关闭为turnOffPush,详见api接入文档 +// PushClient.getInstance(mContext).turnOnPush(state -> { +// Log.e("=====>1", state + ""); +// Log.e("=====>2", PushClient.getInstance(mContext).getRegId()); +// }); } }