diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java index 57b9201ff..2ebeaca08 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/message/ChatMessageFragment.java @@ -12,6 +12,7 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; @@ -44,6 +45,7 @@ import com.yunbao.common.glide.ImgLoader; import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.interfaces.ImageResultCallback; import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.utils.DpUtil; import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.StringUtil; @@ -54,15 +56,20 @@ import java.io.File; import java.lang.reflect.Field; import java.util.Arrays; import java.util.Date; +import java.util.Iterator; import java.util.List; import io.rong.imkit.IMCenter; +import io.rong.imkit.config.RongConfigCenter; import io.rong.imkit.conversation.MessageListAdapter; import io.rong.imkit.conversation.extension.component.plugin.IPluginModule; import io.rong.imkit.conversation.extension.component.plugin.ImagePlugin; +import io.rong.imkit.manager.SendImageManager; import io.rong.imkit.model.UiMessage; +import io.rong.imkit.picture.PictureSelectionModel; import io.rong.imkit.picture.PictureSelector; import io.rong.imkit.picture.config.PictureMimeType; +import io.rong.imkit.picture.entity.LocalMedia; import io.rong.imlib.IRongCallback; import io.rong.imlib.RongIMClient; import io.rong.imlib.model.Conversation; @@ -246,22 +253,22 @@ public class ChatMessageFragment extends AbsConversationFragment { boolean isCamera = position == 1; SendMessageManager.sendMessageForText(targetId, "图片信息", new OnSendMessageListener() { - // PictureSelector.create(currentFragment) - // .openGallery(RongConfigCenter.conversationConfig().rc_media_selector_contain_video ? PictureMimeType.ofAll() : PictureMimeType.ofImage()) - // .loadImageEngine(RongConfigCenter.featureConfig().getKitImageEngine()) - // .setRequestedOrientation(1) - // .videoDurationLimit(RongIMClient.getInstance().getVideoLimitTime()) - // .maxSelectNum(9) - // .imageSpanCount(3) - // .isGif(true) - // .forResult(this.mRequestCode); @Override public void onSuccess(String token) { super.onSuccess(token); + ChatMessageFragment.this.token = token; if (isCamera) { - PictureSelector.create(ChatMessageFragment.this).openCamera(PictureMimeType.ofImage()); + cameraUtil.getImageByCamera(false); } else { - PictureSelector.create(ChatMessageFragment.this).openGallery(PictureMimeType.ofImage()); + PictureSelector.create(ChatMessageFragment.this) + .openGallery(PictureMimeType.ofImage()) + .loadImageEngine(RongConfigCenter.featureConfig().getKitImageEngine()) + .setRequestedOrientation(1) + .videoDurationLimit(RongIMClient.getInstance().getVideoLimitTime()) + .maxSelectNum(9) + .imageSpanCount(3) + .isGif(true) + .forResult(110); } } @@ -400,6 +407,7 @@ public class ChatMessageFragment extends AbsConversationFragment { @Override public void onSuccess(Message message) { + SendMessageManager.onCallSuccess(token, null); } @Override @@ -560,6 +568,51 @@ public class ChatMessageFragment extends AbsConversationFragment { @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); - ToastUtil.show("收到回调"); + if (requestCode == 110) { + List selectList = PictureSelector.obtainMultipleResult(data); + if (selectList != null && selectList.size() > 0) { + boolean sendOrigin = ((LocalMedia) selectList.get(0)).isOriginal(); + for (LocalMedia item : selectList) { + String mimeType = item.getMimeType(); + if (mimeType.startsWith("image")) { + ImageMessage imageMessage=ImageMessage.obtain(Uri.parse(item.getPath()),sendOrigin); + Message message = Message.obtain(targetId, conversationType, imageMessage); + message.setSenderUserId(CommonAppConfig.getInstance().getUid()); + message.setObjectName("RC:ImgMsg"); + message.setExtra(""); + message.setSentTime(new Date().getTime()); + message.setTargetId(targetId); + IMCenter.getInstance().sendMediaMessage(message, null, null, new IRongCallback.ISendMediaMessageCallback() { + + @Override + public void onProgress(Message message, int progress) { + + } + + @Override + public void onCanceled(Message message) { + + } + + @Override + public void onAttached(Message message) { + + } + + @Override + public void onSuccess(Message message) { + SendMessageManager.onCallSuccess(token, null); + } + + @Override + public void onError(Message message, RongIMClient.ErrorCode errorCode) { + ToastUtil.show(R.string.system_tip_failure); + System.out.println("发送失败:" + errorCode.getMessage()); + } + }); + } + } + } + } } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/dialog/TipsDialog.java b/OneToOne/src/main/java/com/shayu/onetoone/dialog/TipsDialog.java index 6e9fda8c9..da301d725 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/dialog/TipsDialog.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/dialog/TipsDialog.java @@ -1,6 +1,8 @@ package com.shayu.onetoone.dialog; import android.content.Context; +import android.view.View; +import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; @@ -15,8 +17,11 @@ import com.yunbao.common.utils.StringUtil; public class TipsDialog extends AbsDialogCenterPopupWindow { private String title, content; private OnDialogClickListener onDialogClickListener; - TextView mTitle,mContent; - Button mCancel,mApply; + TextView mTitle, mContent; + Button mCancel, mApply; + ViewGroup viewGroup; + View contentView; + String cancelText, applyText; public TipsDialog(@NonNull Context context) { super(context); @@ -32,6 +37,21 @@ public class TipsDialog extends AbsDialogCenterPopupWindow { return this; } + public TipsDialog setContentView(View contentView) { + this.contentView = contentView; + return this; + } + + public TipsDialog setCancelText(String cancelText) { + this.cancelText = cancelText; + return this; + } + + public TipsDialog setApplyText(String applyText) { + this.applyText = applyText; + return this; + } + public TipsDialog setOnDialogClickListener(OnDialogClickListener onDialogClickListener) { this.onDialogClickListener = onDialogClickListener; return this; @@ -50,29 +70,38 @@ public class TipsDialog extends AbsDialogCenterPopupWindow { @Override protected void onCreate() { super.onCreate(); - mTitle=findViewById(R.id.title); - mContent=findViewById(R.id.content); - mCancel=findViewById(R.id.cancel); - mApply=findViewById(R.id.apply); + mTitle = findViewById(R.id.title); + mContent = findViewById(R.id.content); + mCancel = findViewById(R.id.cancel); + mApply = findViewById(R.id.apply); + viewGroup = findViewById(R.id.content_layout); - if(StringUtil.isEmpty(title)){ + if (StringUtil.isEmpty(title)) { mTitle.setVisibility(GONE); - }else{ + } else { mTitle.setText(title); } - if(StringUtil.isEmpty(content)){ + if (StringUtil.isEmpty(content)) { mContent.setVisibility(GONE); - }else{ + } else { mContent.setText(content); } + if (contentView != null) { + viewGroup.addView(contentView); + if (onDialogClickListener != null) { + onDialogClickListener.onCreateView(contentView); + } + } + mCancel.setText(cancelText); + mApply.setText(applyText); mCancel.setOnClickListener(v -> { - if(onDialogClickListener!=null){ + if (onDialogClickListener != null) { onDialogClickListener.onCancel(dialog); } dismiss(); }); - mApply.setOnClickListener(v ->{ - if(onDialogClickListener!=null){ + mApply.setOnClickListener(v -> { + if (onDialogClickListener != null) { onDialogClickListener.onApply(dialog); } dismiss(); diff --git a/OneToOne/src/main/java/com/shayu/onetoone/listener/OnDialogClickListener.java b/OneToOne/src/main/java/com/shayu/onetoone/listener/OnDialogClickListener.java index 759de8941..e0318f43e 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/listener/OnDialogClickListener.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/listener/OnDialogClickListener.java @@ -1,6 +1,7 @@ package com.shayu.onetoone.listener; import android.app.Dialog; +import android.view.View; public abstract class OnDialogClickListener { public void onCancel(Dialog dialog){ @@ -8,5 +9,8 @@ public abstract class OnDialogClickListener { } public void onApply(Dialog dialog){ + } + public void onCreateView(View itemView){ + } } diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/SendMessageManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/SendMessageManager.java index 522680946..64d78b162 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/SendMessageManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/SendMessageManager.java @@ -4,6 +4,7 @@ import com.shayu.onetoone.bean.MessageConsumeConfigBean; import com.shayu.onetoone.listener.OnSendMessageListener; import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.utils.ToastUtil; import java.util.HashMap; import java.util.Map; @@ -105,17 +106,25 @@ public class SendMessageManager { @Override public void onSuccess(HttpCallbackModel sd) { if (sd.getCode() != 0) { - listener.onSuccess(sd.getMsg()); + if(listener!=null) { + listener.onSuccess(sd.getMsg()); + } } else { cache.remove(token); - listener.onSuccess(null); + if(listener!=null) { + listener.onSuccess(null); + } } } @Override public void onError(String error) { - listener.onError(OnSendMessageListener.STATUS_ERROR, error); + ToastUtil.show(error); + System.err.println(error); + if(listener!=null) { + listener.onError(OnSendMessageListener.STATUS_ERROR, error); + } } } ); diff --git a/OneToOne/src/main/res/layout/dialog_tips1.xml b/OneToOne/src/main/res/layout/dialog_tips1.xml index fcd2980ed..3203eeae6 100644 --- a/OneToOne/src/main/res/layout/dialog_tips1.xml +++ b/OneToOne/src/main/res/layout/dialog_tips1.xml @@ -17,6 +17,12 @@ android:textColor="#333333" android:textSize="18sp" android:textStyle="bold" /> + + + +