update 对话框,相册相机

This commit is contained in:
zlzw 2023-10-14 10:55:14 +08:00
parent 427d10158b
commit 0c5533ffb3
5 changed files with 130 additions and 28 deletions

View File

@ -12,6 +12,7 @@ import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageView; 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.http.base.HttpCallback;
import com.yunbao.common.interfaces.ImageResultCallback; import com.yunbao.common.interfaces.ImageResultCallback;
import com.yunbao.common.interfaces.OnItemClickListener; import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ProcessImageUtil; import com.yunbao.common.utils.ProcessImageUtil;
import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.StringUtil; import com.yunbao.common.utils.StringUtil;
@ -54,15 +56,20 @@ import java.io.File;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.Iterator;
import java.util.List; import java.util.List;
import io.rong.imkit.IMCenter; import io.rong.imkit.IMCenter;
import io.rong.imkit.config.RongConfigCenter;
import io.rong.imkit.conversation.MessageListAdapter; import io.rong.imkit.conversation.MessageListAdapter;
import io.rong.imkit.conversation.extension.component.plugin.IPluginModule; import io.rong.imkit.conversation.extension.component.plugin.IPluginModule;
import io.rong.imkit.conversation.extension.component.plugin.ImagePlugin; 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.model.UiMessage;
import io.rong.imkit.picture.PictureSelectionModel;
import io.rong.imkit.picture.PictureSelector; import io.rong.imkit.picture.PictureSelector;
import io.rong.imkit.picture.config.PictureMimeType; import io.rong.imkit.picture.config.PictureMimeType;
import io.rong.imkit.picture.entity.LocalMedia;
import io.rong.imlib.IRongCallback; import io.rong.imlib.IRongCallback;
import io.rong.imlib.RongIMClient; import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation; import io.rong.imlib.model.Conversation;
@ -246,22 +253,22 @@ public class ChatMessageFragment extends AbsConversationFragment {
boolean isCamera = position == 1; boolean isCamera = position == 1;
SendMessageManager.sendMessageForText(targetId, "图片信息", new OnSendMessageListener() { 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 @Override
public void onSuccess(String token) { public void onSuccess(String token) {
super.onSuccess(token); super.onSuccess(token);
ChatMessageFragment.this.token = token;
if (isCamera) { if (isCamera) {
PictureSelector.create(ChatMessageFragment.this).openCamera(PictureMimeType.ofImage()); cameraUtil.getImageByCamera(false);
} else { } 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 @Override
public void onSuccess(Message message) { public void onSuccess(Message message) {
SendMessageManager.onCallSuccess(token, null);
} }
@Override @Override
@ -560,6 +568,51 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override @Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);
ToastUtil.show("收到回调"); if (requestCode == 110) {
List<LocalMedia> 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());
}
});
}
}
}
}
} }
} }

View File

@ -1,6 +1,8 @@
package com.shayu.onetoone.dialog; package com.shayu.onetoone.dialog;
import android.content.Context; import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
@ -15,8 +17,11 @@ import com.yunbao.common.utils.StringUtil;
public class TipsDialog extends AbsDialogCenterPopupWindow { public class TipsDialog extends AbsDialogCenterPopupWindow {
private String title, content; private String title, content;
private OnDialogClickListener onDialogClickListener; private OnDialogClickListener onDialogClickListener;
TextView mTitle,mContent; TextView mTitle, mContent;
Button mCancel,mApply; Button mCancel, mApply;
ViewGroup viewGroup;
View contentView;
String cancelText, applyText;
public TipsDialog(@NonNull Context context) { public TipsDialog(@NonNull Context context) {
super(context); super(context);
@ -32,6 +37,21 @@ public class TipsDialog extends AbsDialogCenterPopupWindow {
return this; 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) { public TipsDialog setOnDialogClickListener(OnDialogClickListener onDialogClickListener) {
this.onDialogClickListener = onDialogClickListener; this.onDialogClickListener = onDialogClickListener;
return this; return this;
@ -50,29 +70,38 @@ public class TipsDialog extends AbsDialogCenterPopupWindow {
@Override @Override
protected void onCreate() { protected void onCreate() {
super.onCreate(); super.onCreate();
mTitle=findViewById(R.id.title); mTitle = findViewById(R.id.title);
mContent=findViewById(R.id.content); mContent = findViewById(R.id.content);
mCancel=findViewById(R.id.cancel); mCancel = findViewById(R.id.cancel);
mApply=findViewById(R.id.apply); mApply = findViewById(R.id.apply);
viewGroup = findViewById(R.id.content_layout);
if(StringUtil.isEmpty(title)){ if (StringUtil.isEmpty(title)) {
mTitle.setVisibility(GONE); mTitle.setVisibility(GONE);
}else{ } else {
mTitle.setText(title); mTitle.setText(title);
} }
if(StringUtil.isEmpty(content)){ if (StringUtil.isEmpty(content)) {
mContent.setVisibility(GONE); mContent.setVisibility(GONE);
}else{ } else {
mContent.setText(content); mContent.setText(content);
} }
if (contentView != null) {
viewGroup.addView(contentView);
if (onDialogClickListener != null) {
onDialogClickListener.onCreateView(contentView);
}
}
mCancel.setText(cancelText);
mApply.setText(applyText);
mCancel.setOnClickListener(v -> { mCancel.setOnClickListener(v -> {
if(onDialogClickListener!=null){ if (onDialogClickListener != null) {
onDialogClickListener.onCancel(dialog); onDialogClickListener.onCancel(dialog);
} }
dismiss(); dismiss();
}); });
mApply.setOnClickListener(v ->{ mApply.setOnClickListener(v -> {
if(onDialogClickListener!=null){ if (onDialogClickListener != null) {
onDialogClickListener.onApply(dialog); onDialogClickListener.onApply(dialog);
} }
dismiss(); dismiss();

View File

@ -1,6 +1,7 @@
package com.shayu.onetoone.listener; package com.shayu.onetoone.listener;
import android.app.Dialog; import android.app.Dialog;
import android.view.View;
public abstract class OnDialogClickListener { public abstract class OnDialogClickListener {
public void onCancel(Dialog dialog){ public void onCancel(Dialog dialog){
@ -8,5 +9,8 @@ public abstract class OnDialogClickListener {
} }
public void onApply(Dialog dialog){ public void onApply(Dialog dialog){
}
public void onCreateView(View itemView){
} }
} }

View File

@ -4,6 +4,7 @@ import com.shayu.onetoone.bean.MessageConsumeConfigBean;
import com.shayu.onetoone.listener.OnSendMessageListener; import com.shayu.onetoone.listener.OnSendMessageListener;
import com.yunbao.common.bean.HttpCallbackModel; import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.http.base.HttpCallback; import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.ToastUtil;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -105,17 +106,25 @@ public class SendMessageManager {
@Override @Override
public void onSuccess(HttpCallbackModel sd) { public void onSuccess(HttpCallbackModel sd) {
if (sd.getCode() != 0) { if (sd.getCode() != 0) {
listener.onSuccess(sd.getMsg()); if(listener!=null) {
listener.onSuccess(sd.getMsg());
}
} else { } else {
cache.remove(token); cache.remove(token);
listener.onSuccess(null); if(listener!=null) {
listener.onSuccess(null);
}
} }
} }
@Override @Override
public void onError(String error) { 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);
}
} }
} }
); );

View File

@ -17,6 +17,12 @@
android:textColor="#333333" android:textColor="#333333"
android:textSize="18sp" android:textSize="18sp"
android:textStyle="bold" /> android:textStyle="bold" />
<FrameLayout
android:id="@+id/content_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
<TextView <TextView
android:id="@+id/content" android:id="@+id/content"
@ -28,6 +34,7 @@
android:gravity="center" android:gravity="center"
tools:text="與TA視頻聊天每分鐘續消耗299鑽石您可通過充值獲取更多鑽石以便繼續聊天" /> tools:text="與TA視頻聊天每分鐘續消耗299鑽石您可通過充值獲取更多鑽石以便繼續聊天" />
<LinearLayout <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"